【问题标题】:Convert single UDT object to list of UDT in Cassandra table将单个 UDT 对象转换为 Cassandra 表中的 UDT 列表
【发布时间】:2020-07-16 17:24:44
【问题描述】:

我在 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 中的对象列表。有哪些可用于更新架构的选项。

【问题讨论】:

    标签: cassandra user-defined-types


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 2018-08-23
      • 1970-01-01
      • 2020-07-17
      相关资源
      最近更新 更多