【问题标题】:pre defined column types and its advantages in cassandracassandra中预定义的列类型及其优势
【发布时间】:2013-06-18 16:58:34
【问题描述】:

我最近正在研究 Cassandra。但是,没有关于预定义列和数据类型的明确文档或想法。在列族中,cassandra 支持动态列类型,例如面向文档的数据库 (MongoDb)。但是,cql 可以使用CREATE TABLE 预先定义这些列类型。

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

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

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    因为架构是预定义的,所以您必须先更改它,然后才能插入新行。使用ALTER 可以实现许多以前无法实现的性能增强,例如减少存储在堆内存中的列占用的内存。

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

    • 降低 CPU 使用率
    • 减少内存使用
    • 减少使用的磁盘空间

    如果您想了解完整的技术细节(包括开发人员建议如何实施解决方案),请查看 Apache Cassandra 的 jira 上的 issue

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

    我建议您阅读 jbellis 的 this article所有后续的 cmets,它将阐明为什么强制执行静态架构的大部分要点。

    【讨论】:

      猜你喜欢
      • 2015-06-21
      • 2015-06-22
      • 2013-02-26
      • 2018-12-19
      • 2014-03-06
      • 2017-02-19
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多