我在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中的对象列表。什么是可用于更新架构的选项。
答案 0 :(得分:0)
唯一的方法是使用ALTER TYPE
添加具有所需类型的另一个字段,然后开始使用此新字段,并使用一些代码迁移现有数据。 Cassandra不允许更改现有字段的类型,您也不能从UDT中删除字段。所以你的类型应该是这样的:
CREATE TYPE my_keyspace.test (
testid text,
testdate text,
testdata frozen<testdata>
testdata_lst list<frozen<testdata>>
);
可以将现有数据迁移到列表中,然后将其设置为null
以释放空间。