Cassandra 中的用户定义类型 (UDT) 行为

Posted

技术标签:

【中文标题】Cassandra 中的用户定义类型 (UDT) 行为【英文标题】:User Defined Type (UDT) behavior in Cassandra 【发布时间】:2016-03-21 21:18:47 【问题描述】:

如果有人在使用 UDT(用户定义类型)方面有一些经验,我想了解向后兼容性如何工作。

假设我有以下 UDT

CREATE TYPE addr (
  street1 text,
  zip text,
  state text
);

如果我将“addr”UDT 修改为具有更多属性(例如 zip_code2 int 和名称文本):

CREATE TYPE addr (
  street1 text,
  zip text,
  state text,
  zip_code2 int,
  name text
);

具有这些属性的旧行如何工作?它甚至兼容吗?

谢谢

【问题讨论】:

【参考方案1】:

新的 UDT 定义将与旧定义兼容。用户定义类型的字段可以具有空值,因此如果您更改类型定义,该类型的所有现有值将仅具有添加的字段的空值。

【讨论】:

这就是我的假设。 int 和 boolean 类型呢? int 默认为 0 还是别的什么? 您是指 UDT 中的整数和布尔值吗?那些也是空的。 Cassandra 不会将任何类型默认为非空值(任何地方)。

以上是关于Cassandra 中的用户定义类型 (UDT) 行为的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra List<UDT> 未使用 datastax java driver 4.0.0 反序列化

TypeError:使用一组 UDT 创建 Cassandra Python 驱动程序模型时不可散列的类型 UserType

Spark Cassandra 使用区分大小写的名称写入 UDT 失败

sql 更新UDT MSSQL用户定义的类型

通过 Spark SQL 查询 Cassandra UDT

如何在 Cassandra 中存储自定义对象?