Пакетна мутация в Касандра?

Искам да актуализирам няколко реда в 2 CF. Не ме интересува редът, в който се актуализират? Но гарантирано ли е, че ако един бъде успешен, в крайна сметка и други ще получат, ако някой C* възел се провали между тях?

Класът Hector BatchMutation използва пакетна актуализация или атомна пакетна актуализация, тъй като това са две отделни неща.


person Peter    schedule 08.12.2013    source източник


Отговори (1)


Трябва да използвате атомна партида в CQL3. Това гарантира, че или цялата партида е успешна, или цялата партида е неуспешна. Пример от CQL3 документите:

BEGIN BATCH
  INSERT INTO users (userid, password, name) VALUES ('user2', 'ch@ngem3b', 'second user');
  UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3';
  INSERT INTO users (userid, password) VALUES ('user4', 'ch@ngem3c');
  DELETE name FROM users WHERE userid = 'user1';
APPLY BATCH;

Класът Hector BatchMutation използва операцията Thrift batch_mutate. Това е по-слабо от atomic_batch_mutate, което е Thrift еквивалент на горното. batch_mutate е атомен само за актуализации на един и същ ключ (все пак могат да бъдат различни CF), докато atomic_batch_mutate е атомен за всички актуализации. Не мисля, че Hector е внедрил atomic_batch_mutate, така че ще трябва да преминете към CQL3 и поддържащ CQL3 драйвер, напр. Java драйвер на DataStax.

person Richard    schedule 10.12.2013