Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nosql 在Cassandra中存储基元类型与对象类型_Nosql_Cassandra - Fatal编程技术网

Nosql 在Cassandra中存储基元类型与对象类型

Nosql 在Cassandra中存储基元类型与对象类型,nosql,cassandra,Nosql,Cassandra,在Cassandra中存储完全序列化的对象与只在对象中存储更原始的类型作为列相比,有哪些优点和缺点 在我看来,如果将整个对象存储在一个列中,则会失去灵活性,但会获得简单性。如果存储了一个完整的对象,并且您希望对它的一个成员进行索引,那么在列上使用本机Cassandra二级索引不是不可能的吗?(尽管我认为在这里,您可以使用该成员值作为行键,使用附加的列族创建自己的索引) 感谢您提供的任何信息。我仍在思考这种格式的模式设置。完全对象序列化的优点和缺点似乎都很明显: 在磁盘上和传输数据时更紧凑的表示

在Cassandra中存储完全序列化的对象与只在对象中存储更原始的类型作为列相比,有哪些优点和缺点

在我看来,如果将整个对象存储在一个列中,则会失去灵活性,但会获得简单性。如果存储了一个完整的对象,并且您希望对它的一个成员进行索引,那么在列上使用本机Cassandra二级索引不是不可能的吗?(尽管我认为在这里,您可以使用该成员值作为行键,使用附加的列族创建自己的索引)


感谢您提供的任何信息。我仍在思考这种格式的模式设置。

完全对象序列化的优点和缺点似乎都很明显:

  • 在磁盘上和传输数据时更紧凑的表示形式
  • 能够使用支持模式演变的工具,如Thrift或ProtoBuf
和缺点:

  • 这里不能使用Cassandra本机索引(Cassandra本机索引与数据一起分区,因此不能用其他列族模拟)
  • 无法使用CLI等常用工具查询对象的各个字段
  • 修改对象的单个字段需要加载和保存完整记录
  • 修改架构需要加载和处理完整的数据集(例如,不可能删除列)
因此,例如,在存储pageview事件时使用完全对象序列化是一个好主意-紧凑性节省了大量磁盘空间,并且这些事件在写入后永远不会被修改。即使模式发生变化(即添加了新字段),也不需要接触旧数据,只需以新格式写入新事件,并使用ProtoBuf正确读取新旧记录

另一方面,在存储诸如“带有标题和标签的图片”之类的对象时使用它是一个坏主意,这些对象具有大的二进制数据和小的可变字段