cassandra multi/single分区批处理解释

cassnadra multi/single partition batch explanation

我红了关于良好使用 BATCH 语句的 cassandra 文档 - single partition batch example 我想了解 multi/single 分区批处理。

根据文档,这是单个分区批处理。

CREATE TABLE cycling.cyclist_expenses ( 
  cyclist_name text, 
  balance float STATIC, 
  expense_id int, 
  amount float, 
  description text, 
  paid boolean, 
  PRIMARY KEY (cyclist_name, expense_id) 
);

BEGIN BATCH

  INSERT INTO cycling.cyclist_expenses (cyclist_name, expense_id, amount, description, paid) VALUES ('Vera ADRIAN', 2, 13.44, 'Lunch', true);

  INSERT INTO cycling.cyclist_expenses (cyclist_name, expense_id, amount, description, paid) VALUES ('Vera ADRIAN', 3, 25.00, 'Dinner', false);

...
APPLY BATCH;

第一个分区是 - 'Vera ADRIAN', 2 第二个分区 - 'Vera ADRIAN', 3

你能解释一下为什么是单分区批处理吗?

在另一个文档中我找到了多分区批处理的例子:

Create table shopping_chart 
(cart_id UUID,item_id UUID,price Decimal, total Decimal static,
primary key ((cart_id),item_id));

insert into shopping_chart(cart_id,item_id,price,total) 
values (ABC12345,ABCITEM12345,0.01,0.01);

Begin Batch
insert into shopping_chart(cart_id,item_id,price) values ( ABC12345,ABCITEM123451,1.00);

insert into shopping_chart(cart_id,item_id,price) values ( ABC12345,ABCITEM1234512,2.00);

Update …. cart_id=ABC12345 IF total =0.01;
Apply Batch;

我不明白为什么是多分区批处理?你能解释一下吗?只能使用一个分区 = ABC12345

First partition is - 'Vera ADRIAN', 2 Second partition - 'Vera ADRIAN', 3

Could u explain pls why is it single partition batch?

当然可以。因为 expense_id 不是分区键的一部分。因此,Vera ADRIAN 是在两个 INSERT 中使用的相同分区键值。

对于问题的第二部分,您是对的,因为 cart_id 是相同的,第二个示例似乎不是多分区查询。按照你上面的link,我很快发现BATCH(多分区)的错误用法:https://docs.datastax.com/en/dse/6.8/cql/cql/cql_using/useBatchBadExample.html

单分区批处理是指您的查询针对相同的分区 - 在这种情况下,Cassandra 将所有查询打包到一个操作中(也称为“突变”)。

第二个示例的描述不正确 - 它仍然是单分区批处理。