在Cassandra中存储完整的序列化对象与在对象中仅存储更原始的类型作为列有什么优点和缺点?
在我看来,如果您将整个对象存储在一列中,则会失去灵活性,但会变得简单。如果存储了一个完整的对象并且你想在其中一个成员上编入索引,那么就不可能在列上使用本地Cassandra二级索引吗? (虽然我在这里假设您将使用该成员值作为行键创建自己的索引,并使用其他列族)
感谢您提供的任何信息。我仍然以这种格式围绕架构设置包围我的大脑。
答案 0 :(得分:2)
完整对象序列化的优点和缺点似乎都非常明显:
缺点:
因此,例如,在存储页面视图事件时使用完整对象序列化是个好主意 - 紧凑性可以节省大量磁盘空间,并且这些事件在写入后永远不会被修改。即使模式发生了变化(即添加了新字段),也无需触摸旧数据,只需以新格式编写新事件,并使用ProtoBuf正确读取旧记录和新记录。
另一方面,在存储诸如“带标题和标签的图片”之类的对象时使用它是一个坏主意 - 具有大量二进制数据和小的可变字段的东西。