Cassandra 教程

Cassandra键空间操作

Cassandra表操作

Cassandra数据CRUD操作

Cassandra CQL数据类型

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/cassandra-data-model.html

Cassandra数据模型


Cassandra 中的数据模型与 RDBMS 中正常情况完全不同。我们来看看 Cassandra 如何存储数据。

群集

Cassandra 数据库分布在运行的几(多)台机器上。最外层的容器被称为包含不同节点的群集。每个节点都包含一个副本,如果发生故障,副本将负责顶上。Cassandra 将节点以环形格式排列在群集中,并为其分配数据。

键空间

键空间(Keyspace)是 Cassandra 中数据的最外层容器。以下是 Cassandra 中 Keyspace 的基本属性:

  • 复制因子:它指定集群中的机器数量,将接收相同数据的副本。
  • 复制放置策略:这是一个策略,如何数据将复制品放在环中。有三种类型的策略,如:

      1. 简单策略(机架感知策略)
      1. 旧网络拓扑策略(机架感知策略)
      1. 网络拓扑策略(数据中心共享策略)
  • 列家族:列家族置于键空间之下。键空间是一个或多个列族的列表的容器,而列族是一组行的容器。每行包含已排序的列。列家族表示数据的结构。每个键空间至少有一个并且经常有很多列家族。

在 Cassandra 中,良好的数据模型非常重要,因为不良数据模型可能会降低性能,特别是当您尝试在 Cassandra 上实现 RDBMS 概念时。

Cassandra 数据模型规则

  • Cassandra 不支持 JOINS,GROUP BY,OR 子句,聚合等等。因此必须按照需要存储数据的方式存储数据。
  • 最大化数据重复,因为 Cassandra 是分布式数据库,数据重复提供即时可用性而无单点故障。

数据建模目标

在 Cassandra 中建模数据时,您应该有以下目标:

  • 在群集周围均匀传播数据:要在 Cassandra 群集的每个节点上传播相等数量的数据,您必须选择整数作为主键。数据根据作为主键的第一部分的分区键传播到不同的节点。
  • 查询数据时读取的分区数最小化:分区用于将一组记录与相同的分区键绑定。当读取查询发出时,它从不同的分区收集不同节点的数据。

在许多分区的情况下,需要访问所有这些分区来收集查询数据。这并不意味着不应该创建分区。如果您的数据非常大,则无法在单个分区上保留大量数据。单个分区将会减慢。所以必须有一个平衡数量的分区。