Cassandra - разрешение конфликтов для смешанных обновлений столбцов с одинаковой отметкой времени - PullRequest
3 голосов
/ 07 марта 2012

Я хотел бы знать, какая запись выигрывает в случае двух обновлений с одинаковой временной меткой клиента.

Исходные данные: KeyA: { col1:"val AA", col2:"val BB", col3:"val CC"}

Клиент 1 отправляет обновление: KeyA: { col1:"val C1", col2:"val B1"}

Клиент 2 отправляет обновление: KeyA: { col1:"val C2", col2:"val B2"}

Оба обновления имеют одинаковую метку времени .

Какой результат будет возвращен запросом строки в KeyA?

  1. { col1:"val C1", col2:"val B1", col3:"val CC"} - Клинт 1 выигрывает
  2. { col1:"val C2", col2:"val B2", col3:"val CC"} - Клиент 2 выигрывает
  3. { col1:"val C2", col2:"val B1", col3:"val CC"} - смешанное обновление

Я ожидаю, что результат непредсказуем - поскольку оба обновления имеют одинаковую метку времени.

Возможен ли смешанный сценарий?

Ответы [ 2 ]

4 голосов
/ 07 марта 2012

Метки времени являются свойством каждого столбца, а не всей вставки.Несколько столбцов с одинаковой точной временной меткой разрешаются путем сравнения самого фактического значения столбца.Это делается путем сравнения значений лексически по байтам, чтобы возвращаемое значение было детерминированным.

Итак, в вашем примере, если каждый столбец, вставленный обоими клиентами, имел одинаковую точную метку времени, вы можете увидеть смешанное обновление в зависимости ото том, как сравниваются фактические значения столбца.

1 голос
/ 13 мая 2012

Вот ссылка на пост, который я недавно написал о Cassandra Timestamps и конфликтах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...