cassandra - cassandra 是行列数据库吗?

标签 cassandra

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

很多情况下它表示该行存储键/值对。

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

谁能澄清一下?

最佳答案

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

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

创建表 fruit_types { 水果文字, 位置文本, 成本 float , 主键((水果),位置) }

在此表定义中,您会注意到我们正在定义表的架构。您还会注意到我们正在定义一个 PRIMARY KEY。此主键与关系概念类似但不完全相同。在 Cassandra 中,PRIMAY KEY 由两部分组成:PARTITION KEYCLUSTERING COLUMNSPARTITION 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

关于cassandra - cassandra 是行列数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35616962/

相关文章:

java - 使用 Spring Data Cassandra 动态创建键空间、表和生成表

cassandra - 确定 Cassandra 集群有多满

python - 如何使用 cassandra-driver for python 将 map 类型插入 cassandra

cassandra - Scylla 登录 CentOS 和 RedHat

database-design - Cassandra 中的用户信息存储

json - Cassandra vs MongoDB - 使用以前未知的键存储 JSON 数据?

database - Cassandra 中的删除读取和删除突变

java - 根据日期比较两条记录并返回cassandra中最新的记录

java - 有限制的 Cassandra BoundStatement

Cassandra:-新添加的节点在nodetool状态中不可见