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

时间:2016-02-04 11:45:46

标签: cassandra cassandra-2.0

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

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给了我语法错误。 我可以使用任何其他语法吗?

1 个答案:

答案 0 :(得分:3)

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

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);

此解决方案的缺点是您需要从应用程序代码中手动保持表entity_id和冻结实体内的entity_id值。