Кассандра - Восстановление удаленного столбца
Я просто запускал несколько простых тестов (вставки и удаления) для семейства столбцов, которое я создал. Я заметил, что в то время как новые столбцы вставляются против ключа строки, но столбец, который был недавно удален, не вставляется.
Например:
rowkey1:: name1-val1
name2-val2
После удаления name1, если я пытаюсь вставить его снова, я все равно получаю
rowkey1:: name2-val2 и не возвращается обратно к name1-val1, name2-val2.
Проблема возникает, когда я пытаюсь вставить ее через мой код (используя клиент Pelops Java). Ниже приведен фрагмент кода, который я использую для вставки:
Mutator mutator = Pelops.createMutator("poolname");
Column column = new Column(bufcolname);
column.setValue(bufcolval);
column.setTimestamp(new Date().getTime());
mutator.writeColumn("MyColumnFamily",userId, column);
mutator.execute(ConsistencyLevel.ONE);
Спасибо
1 ответ
Скорее всего, это проблема с отметкой времени.
Если пишет конфликт, Кассандра использует временные метки, чтобы определить победителя. В приведенном выше коде вы устанавливаете временную метку в миллисекундах, но по соглашению cassandra использует временные метки в микросекундах.
Временные метки могут быть любыми, но микросекунды с 1970 года - это соглашение.
Таким образом, при удалении, вероятно, используется отметка времени в микросекундах, которая> отметки времени мс для вашего добавления, следовательно, добавление всегда будет затенено удалением.