【问题标题】:Is cassandra a row column database?cassandra 是行列数据库吗?
【发布时间】:2016-06-07 14:48:34
【问题描述】:

我正在尝试学习 cassandra,但我对术语感到困惑。

它说该行存储键/值对的许多实例。

但是,当我定义一个表时,它更像是声明一个 SQL 表,即;您创建一个表并指定列名和数据类型。

有人可以澄清一下吗?

【问题讨论】:

标签: cassandra


【解决方案1】:

Cassandra 是一个基于列的 NoSQL 数据库。虽然是在最低级别,但它确实存储了简单的键值对,它将这些键值对存储在集合中。这种键和集合的分组类似于传统关系模型中的行和列。 Cassandra 表包含一个模式,并且可以使用称为 CQL 的类似 SQL 的语言来引用(有限制)。

在您的评论中,您询问苹果与橙子存放在不同的桌子上。该特定问题的答案是否定的,它将在同一张表中。然而,Cassandra 表有一个额外的概念,称为分区键,它在关系世界中并没有真正的类似概念。以如下表定义为例

CREATE TABLE fruit_types { fruit text, location text, cost float, PRIMARY KEY ((fruit), location) }

在这个表定义中,您会注意到我们正在为表定义架构。您还会注意到我们定义了一个PRIMARY KEY。这个主键是相似的,但不完全像一个关系概念。在 Cassandra 中,PRIMAY KEYPARTITION KEYCLUSTERING COLUMNS 两部分组成。 PARTITION KEYPRIMARY KEY 中指定的第一个字段,可以包含一个或多个由括号分隔的字段。 PARTITION KEY 的目的是进行散列处理,用于定义拥有数据的节点,也用于将磁盘上的信息物理划分为文件。 CLUSTERING COLUMNS 构成PRIMARY KEY 中列出的其他列,除其他外,用于定义数据如何物理存储在磁盘上由PARTITION KEY 指定的不同文件中。如果您对更多细节感兴趣,我建议您在此处对PRIMARY KEY 做一些额外的阅读:

https://docs.datastax.com/en/cql/3.0/cql/ddl/ddl_compound_keys_c.html

【讨论】:

    【解决方案2】:

    基本上 cassandra 存储就像稀疏矩阵,早期版本有一个名为 cqlsh 的命令行工具,它可以显示列族的确切存储足迹(最新版本中的表格)。后来社区决定保留 RDBMS 类型的语法,以便更好地理解,因为查询语言(CQL)的语法类似于 sql。

    主存储是 key(partition)(这是您表中所选分区列的哈希函数结果,其余列将像稀疏矩阵一样被标记。

    【讨论】:

      猜你喜欢
      • 2013-04-01
      • 1970-01-01
      • 2022-09-19
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多