【问题标题】:Cassandra version differencesCassandra 版本差异
【发布时间】:2015-08-16 11:15:24
【问题描述】:

我开始阅读基于 Cassandra 0.7 的权威指南 Cassandra。现在,我正在尝试用 Cassandra 2.1.5 进行试验,似乎有很多差异,这真的很令人困惑。

例如,我看到在 0.7 版本中不存在 CQL。另一方面,数据模型似乎完全不同。您现在可以使用 CQL 定义架构,而在 0.7 版中没有架构。

谁能简要解释一下这些差异,尤其是关于数据模型的差异?

我知道在 0.7 版本中,这个想法是关于不同长度的行,即具有不同列数的行。但现在我明白了,每一列实际上是一个包含多个参数的字段,因此您可以在同一行(相同的键)中拥有尽可能多的字段。

有人可以总结一下不同之处吗?可能我没有理解正确。

【问题讨论】:

标签: cassandra cql


【解决方案1】:

需要考虑的重要一点是,底层存储模型保持不变。 CQL 只是该模型之上的一个抽象层,可以更轻松地处理和建模您的数据。 DataStax MVP John Berryman 对此有一篇很棒的文章:Understanding How CQL3 Maps to Cassandra’s Internal Data Structure

在这篇文章中,Berryman 指出:

  • CQL 主键的值在内部用作行键(在新的 CQL 范例中称为“分区键”)。
  • 非主键 CQL 字段的名称在内部用作列名称。然后,非主键 CQL 字段的值在内部存储为相应的列值。

此外,他还概述了使用基于 CQL 的方法的好处:

  • 它提供按分区键的快速查找和按集群键的高效扫描和切片。
  • 它将相关数据分组为 CQL 行。这意味着您可以在一个查询中完成原本需要将多个查询放入不同列族的操作。
  • 它允许独立添加、修改和删除各个字段。
  • 它绝对优于旧的 Cassandra 范例。证明:您可以强制 CQL 表的行为与旧式 Cassandra ColumnFamilies 完全相同。 (请参阅此处的示例。)
  • 它很容易扩展到集合列表和地图的实现(如果您直接在旧的 cassandra 中工作,它们会非常难看) - 但这是另一篇博文的内容。
  • 与 Thrift 所需的同步调用响应通信相比,CQL 协议允许异步通信。因此,与 Thrift 相比,CQL 速度更快且资源消耗更少,尤其是在使用单线程客户端时。

在同一行(相同的键)中可以有任意多的字段。

实际上,每个分区(行键)有大约 20 亿列的硬性限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2015-12-13
    相关资源
    最近更新 更多