【发布时间】:2017-06-01 21:58:25
【问题描述】:
有一个小表,我想限制在 Cassandra 中的单个分区。我尝试了各种常量作为分区键,但 Cassandra 拒绝为无效。例如primary key(1, other_column)、primary key(true, other_column)、primary key('1', other_column)。是否有某种方法可以将表限制为单个分区而不向表中添加虚拟常量列?
【问题讨论】:
标签: cassandra
有一个小表,我想限制在 Cassandra 中的单个分区。我尝试了各种常量作为分区键,但 Cassandra 拒绝为无效。例如primary key(1, other_column)、primary key(true, other_column)、primary key('1', other_column)。是否有某种方法可以将表限制为单个分区而不向表中添加虚拟常量列?
【问题讨论】:
标签: cassandra
您不能将常量值定义为分区键或任何其他列
改为将普通列(即分区)定义为分区键,并且每次插入/更新或删除时都使用一个常量值。
例子:
让我们创建一个包含名为partition 的列的表,并将其作为分区键。
现在 CRUD 操作:
INSERT INTO small_table(partition, other_column) VALUES(1, ?);
SELECT * FROM small_table WHERE partition = 1;
UPDATE small_table SET other_column = ? WHERE partition = 1;
DELETE FROM small_table WHERE partition = 1;
注意:这是一个糟糕的设计,您的数据不会跨集群分布。您的所有选择、插入、更新、删除操作都将在包含此数据的主机和副本上执行
【讨论】: