CQL批处理语句的用例是什么?

时间:2014-07-02 22:00:54

标签: cassandra cql

假设我想创建一个允许可互换和可选地使用查询的表。让我们使用youtube上的Cassandra Community Webinar | Become a Super Modeler Video中的示例。

这是我的桌子在插入一辆车后的样子:

 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)

现在,我可以按makemake AND model以及makemodelcolor的所有其他组合进行选择,因为这些组成了我的主键。

插入那辆汽车所需的插件:

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;

如果不是,为什么以及批处理语句的正确用例是什么?

奖金将是关于如何实施批处理语句的详细说明。

感谢您提供任何指导,

斯科特

1 个答案:

答案 0 :(得分:2)

情况就是这样。 默认情况下,行写入是原子的,但除非您不使用已记录的批处理,否则多行写入不是原子行。使用记录批次时要小心:考虑到原子性保证,请考虑写入时间内性能损失30%。

可在此处找到更多信息:http://www.datastax.com/dev/blog/atomic-batches-in-cassandra-1-2

干杯, 卡罗