序列化 Json 与 UDT 对 cassandra 中数据和模式迁移的影响

Serialized Json vs UDT implications in data and schema migrations in cassandra

针对存储类型的序列化 json 与在 Cassandra 中使用 UDT 的不同含义给出一个真正的答案。我现在伸出手希望有经验的人详细说明。

就性能、数据和架构更改(添加、更改、删​​除列)而言,它们有何不同?
每种方法的优点和缺点是什么?
它们还有哪些其他值得注意的不同之处?

有很大的不同,我会尽力解释。

如果您不想 "strongly typed" CQL 模式中的字段,UDT 非常有用。您可以将 UDT 用作主键(聚类列)的一部分,以及添加和重命名字段。缺点是在进行选择时,您总是选择整个 UDT,并且您不能删除字段。不要对使用过于疯狂,因为它们很难维护,特别是如果在多个表中使用相同的。

使用序列化的 JSON 字符串在某些情况下是好的。我什至听说有人将压缩数据保存到字段(protobuff)中以解决他们的问题(我认为来自 Soundcloud 的人正在谈论这个)。 JSON 的问题在于它们不是类型化的,您需要在应用程序上添加额外的逻辑来处理数据的序列化和更改。这也意味着您可以拥有可变结构并仅插入您需要的字段。

最后是关于您的偏好,只要您了解这两种方法的优缺点即可。