我最近潜入卡桑德拉。但是,没有关于预定义列和数据类型的明确文档或想法。在列族中,cassandra支持动态列类型,如面向文档的数据库(MongoDb)。但是,cql允许使用CREATE TABLE
预先定义这些列类型。
因此,显而易见的是,强制列类型会降低无效的可能性。插入错误。
执行预定义的列类型还有其他优点吗?例如,如果我们有一个预定义数量的列及其类型,是否会增加读取性能?
答案 0 :(得分:3)
由于架构是预定义的,因此您必须先更改它,然后才能插入新行。使用ALTER
允许在之前无法实现的许多性能增强,例如减少存储在堆内存中的列所占用的内存。
这种开销通过压缩在磁盘上减少,但不能在内存中完成(这很重要......因为读取内存缓存比从磁盘读取速度快)。处理这个将:
如果您需要完整的技术细节(包括开发人员如何提出实施解决方案),请查看Apache Cassandra的jira上的issue。
只需备注 Cassandra支持的集合应该涵盖需要添加列的用例(为了清楚起见,我的意思是CQL列),因此使用静态模式也会迫使开发人员考虑他们的数据模型,并正确构建它。 / p>
我建议您通过jbellis 阅读this article以及后面的所有注释,它将澄清有关实施静态架构的原因的大部分要点。