键空间 Cassandra创建、修改和删除示例

什么是 Keyspace Cassandra?
中的键空间 Cassandra 是一个数据容器,类似于关系数据库管理系统 (RDBMS) 中的数据库。 Cassandra 键空间决定数据在节点上的复制方式。
由于复制策略是设置在键空间而非单个表上,因此在其中创建的每个表都会继承相同的复制策略和复制因子。这使得键空间成为任何模式中首要的决策。
如何在 Cassandra
键空间是保存列族、用户定义类型的对象。 Cassandra,键空间类似于 RDBMS 数据库。键空间包含列族、索引、用户定义类型、数据中心感知、键空间中使用的策略、复制因子等。
命令 ”创建键空间” 用于在 Cassandra.
句法
CREATE KEYSPACE KeyspaceName WITH replication = { 'class': 'StrategyName', 'replication_factor': 3 };
各种组件 Cassandra 键空间
- 策略:在声明策略名称时 Cassandra. 有两种策略在 Cassandra 句法。
- 简单的策略:当您只有一个数据中心时,使用简单策略。在此策略中,第一个副本放置在分区器选择的节点上。其余节点按环中的顺时针方向放置,而不考虑机架或节点位置。
- 网络拓扑策略:当您拥有多个数据中心时,使用网络拓扑策略。在此策略中,您必须为每个数据中心分别提供复制因子。网络拓扑策略将副本按顺时针方向放置在同一数据中心的节点中。此策略尝试将副本放置在不同的机架中。
- 复制因子:复制因子是放置在不同节点上的数据副本数。为了避免故障,3 是良好的复制因子。超过 XNUMX 个复制因子可确保没有单点故障。有时,服务器可能会停机,或者可能会发生网络问题,然后其他副本可以无故障地提供服务。
- 计费示例: 以下是执行命令“Create Keyspace”的快照,该命令将在以下位置创建键空间: Cassandra.
CREATE KEYSPACE University WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 3 };
成功执行“创建密钥空间”命令后,密钥空间大学将在 Cassandra 使用策略“SimpleStrategy”和复制因子 3。请注意,策略名称必须用引号括起来;未加引号的值将被视为语法错误而被拒绝。
修改键空间 Cassandra
命令“Alter Keyspace”会更改已创建的键空间中的复制因子、策略名称和持久写入属性 Cassandra.
句法
ALTER KEYSPACE KeyspaceName WITH replication = { 'class': 'StrategyName', 'replication_factor': 3 } AND DURABLE_WRITES = true;
修改 Keyspace 时的关键方面 Cassandra
- 键空间名称:键空间名称不能更改 Cassandra.
- 策略名称:可以通过指定新的策略名称来改变策略名称。
- 复制因子:可以通过指定新的复制因子来改变复制因子。
- DURABLE_WRITES:可以通过指定其值为 true 或 false 来更改 DURABLE_WRITES 的值。默认值为 true。如果设置为 false,则不会将任何更新写入提交日志,反之亦然。
- 执行:这是执行命令“Alter Keyspace”的快照,该命令将 DataCenter3 的键空间策略从“SimpleStrategy”更改为“NetworkTopologyStrategy”,并将复制因子从 1 更改为 1。
ALTER KEYSPACE University WITH replication = { 'class': 'NetworkTopologyStrategy', 'DataCenter1': 1 };
成功执行“Alter Keyspace”命令后,策略名称将从“SimpleStrategy”更改为“NetworkTopologyStrategy”,并且“DataCenter1”的复制因子将从 3 更改为 1。
重要提示: 提高复制因子本身并不会复制现有数据。运行 节点工具修复 之后在受影响的键空间上进行修复,否则新的副本将保持为空,直到发生读取修复以访问每一行。
Cassandra 删除键空间
命令 '删除键空间' 删除键空间,包括所有数据、列族、用户定义类型和索引 Cassandra下降之前ping 键空间, Cassandra 拍摄密钥空间的快照。如果密钥空间在 Cassandra, Cassandra 除非使用 IF EXISTS,否则将返回错误。
句法
DROP KEYSPACE IF EXISTS KeyspaceName;
例如:
这是执行的命令“Drop Keyspace”的快照,该命令将删除键空间 University。
DROP KEYSPACE University;
成功执行“Drop keyspace University”命令后,keyspace University 将从 Cassandra 包含所有数据和模式。
这是尝试访问不存在的键空间时返回错误的快照。
注意::drop keyspace 和 delete keyspace 没有区别。Drop keyspace 等于 delete keyspace。
键空间属性和系统键空间
超越创造和放弃ping这三个命令几乎涵盖了 cqlsh 中所有日常的 keyspace 工作。
DESCRIBE KEYSPACES; DESCRIBE KEYSPACE University; USE University;
第一条命令列出集群上的所有键空间,第二条命令打印一个键空间的完整模式,包括其表,第三条命令设置当前键空间,使表名不再需要前缀。
除了用户键空间之外, Cassandra 它自身也包含多个密钥空间。这些密钥空间会出现在 DESCRIBE KEYSPACES 的输出中,值得识别而不是删除。
- 系统: 本地节点状态,包括其令牌范围和它所知道的对等节点。
- 系统模式: 集群上每个键空间、表、列和索引的定义。
- 系统认证: 启用身份验证时的角色、权限和凭据。
- 系统分布式: 维修历史记录和其他集群范围内的账簿ping.
- 系统_trac是: 询问 trac被捕获时 trac已开启。
其中两项在生产中值得关注。 系统认证 默认情况下,密钥空间创建的复制因子为 1;如果该节点丢失,则任何人都无法登录,因此应将其提高以匹配集群。 系统模式 键空间解释了为什么模式更改必须一次应用一个,因为并发更改可能会导致跨节点的模式版本冲突。
常见键空间错误及修复方法
大多数键空间故障都会产生简短、易于识别的消息。
| 误差 | 原因及解决方法 |
|---|---|
| 未知键空间 | 未选择键空间。请运行 USE KeyspaceName,或将表名前缀设置为 Keyspace.Table。 |
| 'SimpleStrategy' 处存在语法错误 | 策略名称未加引号。请将 'class': 'SimpleStrategy' 加上引号。 |
| 未识别的策略选项 {复制因子} | replication_factor 与 NetworkTopologyStrategy 一起使用。该策略改为按数据中心名称设置一个因子。 |
| 无法添加现有键空间 | 键空间已存在。添加 IF NOT EXISTS 语句,或者先删除旧的键空间。 |
| 提高复制因子后数据缺失 | 符合预期。对键空间运行 nodetool repair 命令,以便填充新的副本。 |
一旦键空间存在,下一步就是定义其中的存储,这在下文中将详细介绍。 Cassandra 表 教程。




