在 Cassandra CQL 中表示超级列

Representing a super column in Cassandra CQL

目前,我的一张表具有以下架构:

id
name
...
country
  - id
  - name
  - city
    - id
    - name

我查看了 Cassandra 文档,但找不到任何关于如何在列族中表示我的超级列的明确示例或演示。我的代码如下:

CREATE COLUMNFAMILY table (
    id varint,
    name varchar,
    <<regular columns omitted>>
    country ..?,
    PRIMARY KEY = (id)
);

您可以创建用户定义的类型以将多个数据字段附加到列。

例如,你的情况

country
  - id
  - name
  - city
    - id
    - name

可以在 UDT 中表示为

CREATE TYPE mykeyspace.countryudt (
  id uuid,
  name text,
  city map<uuid, text>
);

现在 table 定义看起来像,

CREATE COLUMNFAMILY table (
    id varint,
    name varchar,
    <<regular columns omitted>>
    country frozen <countryudt>,
    PRIMARY KEY = (id)
);

UDT 的额外参考 here