2013-12-08 1 views
0

Я хочу обновить несколько строк в 2 CF. Меня не волнует порядок их обновления? Но гарантировано ли, что если кто-то преуспеет, тогда, в конце концов, другие получат слишком много, если какой-то узел C * не пройдет между ними?Пакетная мутация в Кассандре?

Класс Hector BatchMutation использует пакетное обновление или обновление с использованием атомной партии, поскольку это две отдельные вещи.

ответ

1

Вы должны использовать атомную партию на CQL3. Это гарантирует, что либо весь пакет будет успешным, либо вся партия завершится неудачно. Пример из CQL3 docs:

BEGIN BATCH 
    INSERT INTO users (userid, password, name) VALUES ('user2', '[email protected]', 'second user'); 
    UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3'; 
    INSERT INTO users (userid, password) VALUES ('user4', '[email protected]'); 
    DELETE name FROM users WHERE userid = 'user1'; 
APPLY BATCH; 

Класс Гектор BatchMutation использует операцию batch_mutate БЕРЕЖЛИВОСТЬ. Это слабее, чем atomic_batch_mutate, что эквивалентно Thrift. batch_mutate является только атомарным для обновлений на одном и том же ключе (может быть разными CF), тогда как atomic_batch_mutate является атомарным для всех обновлений. Я не думаю, что Hector реализовал atomic_batch_mutate, поэтому вам нужно будет перейти на CQL3 и драйвер, поддерживающий CQL3, например. Драйвер java для DataStax.

 Смежные вопросы

  • Нет связанных вопросов^_^