Обновление Cassandra $add для заказа
Я использую экспресс-кассандру с узлом и кафкой, чтобы использовать мои данные о событиях. После первой вставки в таблицу событий я использую директиву update with $add для обновления выбранных столбцов, которые имеют текстовый список по своей природе.
Проблема, с которой я сталкиваюсь, заключается в том, что для последующих обновлений после вставки в мою таблицу упорядочение по столбцам иногда не совпадает. То есть, скажем, мои два обновления, как показано ниже
Обновите 1 в t0 {столбец 1: $add {A}, столбец 2: $add {B}, столбец 3: $add {C}} обновите 2 в t1 {столбец 1: $add {D}, столбец 2: $add {E}, столбец 3: $add {F}}
В действительности ожидаемое поведение таково
столбец 1 н.э.
колонка 2 BE
колонка 3 CF
Это на самом деле происходит, если есть некоторая разница во времени между t1 и t0, но когда эта разница во времени очень мала, порядок сортировки не соответствует, как, например,
столбец 1 н.э.
колонка 2 ЭБ
колонка 3 CF
Я в порядке, когда ABC <-> обменивается с CDE, но я ожидаю атомарного обновления стилей для всех списков за один раз
Не уверен, почему происходит обмен внутри полезных нагрузок. Это означало бы, что если бы я читал данные с использованием индексов, я бы эффективно отобразил данные из полезной нагрузки 2 в полезную нагрузку 1.
Когда я продолжил диагностировать эту проблему внутри моего sstable промывки через промывку nodetool, я вижу, что временные метки данных в SStable на самом деле правильные и поддерживают намеченный порядок, просто то, что cqlsh сообщает о неупорядоченных данных, таким образом, поиск будет означать неупорядоченные данные.
Пожалуйста, помогите мне с любыми соображениями, комментариями. Я был бы чрезвычайно благодарен;