将单个UDT对象转换为Cassandra表中的UDT列表

时间:2020-07-16 08:39:53

标签: cassandra user-defined-types

我在Cassandra中有两种用户定义的类型。第一个是将第二个对象用作其中的冻结对象。

CREATE TYPE my_keyspace.test (
    testid text,
    testdate text,
    testdata frozen<testdata>
);



CREATE TYPE my_keyspace.testdata (
    subject text,
    metadata text

);

现在我的要求是将单个对象转换为UDT列表。像这样

CREATE TYPE my_keyspace.test (
    testid text,
    testdate text,
    testdata list<frozen<testdata>>
);

是否可以将单个对象更新为Cassandra中的对象列表。什么是可用于更新架构的选项。

1 个答案:

答案 0 :(得分:0)

唯一的方法是使用ALTER TYPE添加具有所需类型的另一个字段,然后开始使用此新字段,并使用一些代码迁移现有数据。 Cassandra不允许更改现有字段的类型,您也不能从UDT中删除字段。所以你的类型应该是这样的:

CREATE TYPE my_keyspace.test (
    testid text,
    testdate text,
    testdata frozen<testdata>
    testdata_lst list<frozen<testdata>>
);

可以将现有数据迁移到列表中,然后将其设置为null以释放空间。

相关问题