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