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 将所有查询打包到一个操作中(也称为“突变”)。
第二个示例的描述不正确 - 它仍然是单分区批处理。
我红了关于良好使用 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 将所有查询打包到一个操作中(也称为“突变”)。
第二个示例的描述不正确 - 它仍然是单分区批处理。