所以我有一张表,我想创建一个复合主键:一个分区键和几个集群列。然而,严格来说这些列并不总是填充的,因此某些行可能具有空值。Cassandra 允许这样做吗?具有空值的聚类列?
Cassandra 不允许空聚类键值。
如果您出于某种原因确实需要“无值”,则使用空字符串或其他一些特殊文字值(如“未定义”)将它们聚集在一起。
这里有一个类似的问题: 如何在 CQL3 中为复合键列设置空列值
小智 7
可以null在聚簇键中包含值,但仅限于创建的表中WITH COMPACT STORAGE且仅限于尾随列。例如:
cqlsh:test> CREATE TABLE cf (p int, c1 int, c2 int, v int, primary key (p, c1, c2)) WITH COMPRESSION = {'sstable_compression': ''} AND COMPACT STORAGE;
cqlsh:test> INSERT INTO cf (p, c1, v) VALUES (1, 1, 1);
cqlsh:test> SELECT * FROM cf;
p | c1 | c2 | v
---+----+------+---
1 | 1 | null | 1
(1 rows)
Run Code Online (Sandbox Code Playgroud)
在常规(非紧凑)表中,聚簇键不能缺少列。