CQL 中带有 UDT 字段的分区键

Partition key with UDT field in CQL

我有一个关于 Cassandra 分区键的小问题。 当我创建一个 table 时,它包含一个名为 flxB 的字段,其类型是这样的 UDT:

CREATE TYPE fluxes (
    flux float,
    flux_prec smallint,
    flux_error float,
    flux_error_prec smallint,
    flux_bibcode text,
    system text
);

我可以将字段 flxB.flux 放入我的分区键中吗?

不,你不能把flxB.flux放在主键的任何部分

即使是cassandra 3.0以下的版本,UDT类型字段也必须定义为frozen

When using the frozen keyword, you cannot update parts of a user-defined type value. The entire value must be overwritten. Cassandra treats the value of a frozen, user-defined type like a blob.

在 Cassandra 中,当 inserting/updating 时,主键的所有部分都必须存在,如果 cassandra 允许您将 flx.flux 放在分区键中,cassandra 将如何确保主键的所有部分都出现在 insert/update 查询中 ?