cassandra是一个行列数据库吗?

时间:2016-02-25 02:11:02

标签: cassandra

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

许多实例表示该行存储键/值对。

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

有人可以澄清一下吗?

2 个答案:

答案 0 :(得分:3)

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

在评论中,您会询问苹果是否存储在与橘子不同的表格中。这个具体问题的答案是否,它将在同一个表格中。然而,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

答案 1 :(得分:0)

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

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