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
cassandra中预定义的列类型及其优势_Cassandra - Fatal编程技术网

cassandra中预定义的列类型及其优势

cassandra中预定义的列类型及其优势,cassandra,Cassandra,我最近在研究卡桑德拉。但是,对于预先定义列和数据类型,并没有明确的文档或想法。在列族中,cassandra支持动态列类型,如面向文档的数据库(MongoDb)。但是,cql允许使用CREATE TABLE预定义这些列类型 因此,很明显,强制列类型将减少无效和错误插入的机会 使用预定义的列类型还有其他优势吗?例如,如果我们有预定义的列数及其类型,是否会提高读取性能?因为模式是预定义的,所以在插入新行之前必须对其进行更改。使用ALTER可以实现许多以前无法实现的性能增强,例如减少存储在堆内存上的列占

我最近在研究卡桑德拉。但是,对于预先定义列和数据类型,并没有明确的文档或想法。在列族中,cassandra支持动态列类型,如面向文档的数据库(MongoDb)。但是,cql允许使用
CREATE TABLE
预定义这些列类型

因此,很明显,强制列类型将减少无效和错误插入的机会


使用预定义的列类型还有其他优势吗?例如,如果我们有预定义的列数及其类型,是否会提高读取性能?

因为模式是预定义的,所以在插入新行之前必须对其进行更改。使用
ALTER
可以实现许多以前无法实现的性能增强,例如减少存储在堆内存上的列占用的内存

压缩可以减少磁盘上的开销,但不能在内存中完成(这很重要,因为读取内存缓存比从磁盘读取快)。处理这一问题将:

  • 减少CPU使用
  • 减少内存使用
  • 减少使用的磁盘空间
如果您想了解完整的技术细节(包括开发人员建议如何实现该解决方案),请查看ApacheCassandra的jira

只是一个音符 Cassandra支持的集合应该涵盖需要添加列的用例(为了清晰起见,我指的是CQL列),因此拥有静态模式也会迫使开发人员考虑他们的数据模型,并正确地构建它

我建议您阅读jbellis的所有评论,它将澄清为什么强制使用静态模式的大部分要点