Cassandra - 将用户定义类型中的特定字段声明为主键

Cassandra - Declare specific field from user-defined type as primary key

我想将用户定义类型中的特定字段声明为主键。 假设我有这个:

CREATE TYPE entity (
  entity_id TEXT,
  entity_type TEXT
);

CREATE TABLE some_object_by_entity_id (
  someId TEXT,
  mytext TEXT,
  entity FROZEN<entity>,
  PRIMARY KEY ((entity.entity_id), transaction_id)
) WITH CLUSTERING ORDER BY (transaction_id ASC);

...

现在我想以某种方式使来自实体(这是一个用户定义的类型)的 entity_id 成为我的主键,但是 Cassandra 给我语法错误。 我可以使用任何其他语法来做到这一点吗?

你不能这样做,尝试将 entity_id 复制为 table 的简单列:

CREATE TABLE some_object_by_entity_id (
  entity_id TEXT,
  someId TEXT,
  mytext TEXT,
  entity FROZEN<entity>,
  PRIMARY KEY ((entity_id), transaction_id)
) WITH CLUSTERING ORDER BY (transaction_id ASC);

此解决方案的缺点是您需要通过应用程序代码手动使 table entity_id 和冻结实体内的 entity_id 值保持同步。