序列化 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 的问题在于它们不是类型化的,您需要在应用程序上添加额外的逻辑来处理数据的序列化和更改。这也意味着您可以拥有可变结构并仅插入您需要的字段。
最后是关于您的偏好,只要您了解这两种方法的优缺点即可。
针对存储类型的序列化 json 与在 Cassandra 中使用 UDT 的不同含义给出一个真正的答案。我现在伸出手希望有经验的人详细说明。
就性能、数据和架构更改(添加、更改、删除列)而言,它们有何不同?
每种方法的优点和缺点是什么?
它们还有哪些其他值得注意的不同之处?
有很大的不同,我会尽力解释。
如果您不想 "strongly typed" CQL 模式中的字段,UDT 非常有用。您可以将 UDT 用作主键(聚类列)的一部分,以及添加和重命名字段。缺点是在进行选择时,您总是选择整个 UDT,并且您不能删除字段。不要对使用过于疯狂,因为它们很难维护,特别是如果在多个表中使用相同的。
使用序列化的 JSON 字符串在某些情况下是好的。我什至听说有人将压缩数据保存到字段(protobuff)中以解决他们的问题(我认为来自 Soundcloud 的人正在谈论这个)。 JSON 的问题在于它们不是类型化的,您需要在应用程序上添加额外的逻辑来处理数据的序列化和更改。这也意味着您可以拥有可变结构并仅插入您需要的字段。
最后是关于您的偏好,只要您了解这两种方法的优缺点即可。