我可以在主键的聚类列中有空值吗?

Mne*_*yne 6 cassandra

所以我有一张表,我想创建一个复合主键:一个分区键和几个集群列。然而,严格来说这些列并不总是填充的,因此某些行可能具有空值。Cassandra 允许这样做吗?具有空值的聚类列?

icc*_*bot 7

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)

在常规(非紧凑)表中,聚簇键不能缺少列。