1

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

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

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

4

1 回答 1

3

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

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

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

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

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

我建议您阅读jbellis的这篇文章以及随后的所有评论,它将阐明为什么要强制执行静态模式的大部分要点。

于 2013-06-18T08:58:34.173 回答