2014-07-02 6 views
1

Допустим, я хочу создать таблицу, которая позволяет взаимозаменяемое и необязательное использование запросов. Давайте используем пример из Cassandra Community Webinar | Become a Super Modeler Video на youtube.Что такое прецедент для операторов CQL?

Вот что моя таблица выглядит после вставки только один автомобиля:

make | model | color | vehical_id | lot_id 
------+---------+-------+------------+-------- 
FORD |   |  |  1234 | 654321 
FORD |   | BLUE |  1234 | 654321 
     | MUSTANG | BLUE |  1234 | 654321 
     |   | BLUE |  1234 | 654321 
FORD | MUSTANG | BLUE |  1234 | 654321 
FORD | MUSTANG |  |  1234 | 654321 
     | MUSTANG |  |  1234 | 654321 

с первичным ключом бытия: PRIMARY KEY ((make, model, color),vehical_id)

Теперь я могу выбрать по make, make AND model и все другим комбинациям make, model и color, поскольку они составляют мой первичный ключ.

И вставка потребовалась вставить, что один автомобиль:

INSERT INTO car_location_index (make, model, color, vehical_id, lot_id) VALUES ('FORD', MUSTANG', 'BLUE', 1234, 654321); 
INSERT INTO car_location_index (make, model, color, vehical_id, lot_id) VALUES ('FORD','MUSTANG', '', 1234, 654321); 
INSERT INTO car_location_index (make, model, color, vehical_id, lot_id) VALUES ('FORD', '', 'BLUE', 1234, 654321);  
INSERT INTO car_location_index (make, model, color, vehical_id, lot_id) VALUES ('', 'MUSTANG', 'BLUE', 1234, 654321); 
INSERT INTO car_location_index (make, model, color, vehical_id, lot_id) VALUES ('FORD', '', '', 1234, 654321); 
INSERT INTO car_location_index (make, model, color, vehical_id, lot_id) VALUES ('', 'MUSTANG', '', 1234, 654321); 
INSERT INTO car_location_index (make, model, color, vehical_id, lot_id) VALUES ('', '', 'BLUE', 1234, 654321); 

Если что-то пошло не так, вставляя здесь, я смог бы найти этот автомобиль с некоторыми комбинациями поиска, но не другие. Поэтому в этом случае данные будут повреждены, если некоторые из вставок не удались. Для этого обоснованно использовать оператор партии, чтобы окружать все мои вставки? (BEGIN BATCH ... APPLY BATCH;)

Если это не так, то почему и что является правильным вариантом использования партийного заявления?

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

Спасибо за какие-либо указания,

Скотт

ответ

2

Это тот случай. Строка записи атомарна по умолчанию, но запись нескольких строк не является атомной, если вы не используете зарегистрированную партию. Соблюдайте осторожность при использовании Записанных партий: обратите внимание на 30% -ную потерю производительности во время записи из-за гарантии атомарности.

Дальнейшую информацию можно найти здесь: http://www.datastax.com/dev/blog/atomic-batches-in-cassandra-1-2

Приветствия, Карло

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