Cassandra 数据模型
Cassandra 的数据模型与我们通常在关系型数据库中看到的有很大不同。本文概述了 Cassandra 如何存储其数据。
Cluster
Cassandra 数据库分布在多台一起运行的机器上。最外面的容器称为集群。对于故障处理,每个节点都包含一个副本,如果发生故障,副本将负责。 Cassandra 将节点以环形形式排列在集群中,并为它们分配数据。
Keyspace
Keyspace 是 Cassandra 中最外层的数据容器,类似于关系数据库中的数据库。Keyspace 的基本属性如下:
- Replication factor:集群中将接收相同数据副本的机器数量。
- Replica placement strategy:在环中放置副本的策略。
- Column families:Keyspace 是包含一个或多个 column family 的容器。column family 是包含行(row)集合的容器。Column families 代表数据的结构。每个 Keyspace 至少有一个(通常有很多)column family。
Column Family
column family 类似于关系数据库的表,在关系数据库中,每一行包含的字段个数是相同的。但是在 Cassandra 中,虽然 column family 可以定义 column 的元数据(metadata), 但是每一行的实际的字段数是由客户端程序决定的,所以行与行之间的字段数目可以不一样。
静态 Column Family
对于静态的 column family,字段名是固定的,比较适合对于这些 column 都有预定义的元数据,如下图所示:
动态 Column Family
对于动态的 column family,字段名是应用程序计算出来并且提供的,所以 column family 只能定义这些字段的类型,但是不可以指定这些字段的名字和值,这些名字和值是由应用程序插入某字段才得出的,如下图所示:
行(row)
每一行由一个 row key 标识,相当于关系数据库表中的主键,并且总是被索引的。每一行包含一个或多个 Column。
Column
column 是 Cassandra 的基本数据结构,具有三个值,列名称、值和时间戳。下面是列的结构。
标签:family,Keyspace,column,Column,数据模型,Cassandra From: https://www.cnblogs.com/214txdy/p/17284237.html