我有一张 Cassandra 桌子:
CREATE TABLE test (
c1 text primary key,
c2 text
);
c2 列的值类似于“a”、“b”、“c”……现在我想将所有行的 c2 值更改为“a”。(假设我有一万行)在 Cassandra 中执行此操作的最佳方法是什么?
在 SQL 中,我可以简单地做
UPDATE test SET c2 = 'b';
但卡桑德拉不允许。
在 Cassandra 中没有 CQL 可以做到这一点。您可以通过检索所有 c1 密钥来做到这一点:
SELECT c1 from test;
然后编写一个循环并执行的脚本
UPDATE test SET c2 = 'b' WHERE c1 = <c1>;
对于每个返回的 c1。
Cassandra 不是 SQL 数据库。我建议阅读底层 Cassandra API 和架构的概述。它将给出关于 Cassandra 可以做什么、不能做什么、擅长什么以及不擅长什么的好主意。此批量更新示例需要在表(列族)的每一行中独立更新此特定列,并且这些更新中的每一个都是单独的写入操作。