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

⚡ 智能摘要

键空间 Cassandra 它是最外层的数据容器,相当于关系系统中的数据库,它决定了其中每个表的复制方式。本页内容涵盖创建、修改和删除操作。ping 键空间及其属性和系统键空间。

  • 🗄️ 核心定义: 键空间包含表、索引和用户定义的类型,并存储它们都继承的复制设置。
  • 🧭 策略选择: SimpleStrategy 适用于单个数据中心;NetworkTopologyStrategy 为每个数据中心设置复制因子。
  • 🔢 复制因子: 三个副本是标准的生产设置,因为它可以承受仲裁中一个节点的故障。
  • ✏️ 修改限制: 策略、复制因子和持久写入可以更改;键空间名称不能更改。
  • 💾 持久耐用的书写工具: 将此值设置为 false 将跳过提交日志,以崩溃安全性换取写入速度。
  • 🗑️ 丢弃行为: Dropping 删除所有表和索引,之后 Cassandra 自动拍摄快照。

Cassandra 键空间创建 修改 删除

什么是 Keyspace Cassandra?

中的键空间 Cassandra 是一个数据容器,类似于关系数据库管理系统 (RDBMS) 中的数据库。 Cassandra 键空间决定数据在节点上的复制方式。

由于复制策略是设置在键空间而非单个表上,因此在其中创建的每个表都会继承相同的复制策略和复制因子。这使得键空间成为任何模式中首要的决策。

如何在 Cassandra

键空间是保存列族、用户定义类型的对象。 Cassandra,键空间类似于 RDBMS 数据库。键空间包含列族、索引、用户定义类型、数据中心感知、键空间中使用的策略、复制因子等。

命令 ”创建键空间” 用于在 Cassandra.

句法

CREATE KEYSPACE KeyspaceName WITH replication = {
    'class': 'StrategyName',
    'replication_factor': 3
};

各种组件 Cassandra 键空间

  • 策略:在声明策略名称时 Cassandra. 有两种策略在 Cassandra 句法。
  1. 简单的策略:当您只有一个数据中心时,使用简单策略。在此策略中,第一个副本放置在分区器选择的节点上。其余节点按环中的顺时针方向放置,而不考虑机架或节点位置。
  2. 网络拓扑策略:当您拥有多个数据中心时,使用网络拓扑策略。在此策略中,您必须为每个数据中心分别提供复制因子。网络拓扑策略将副本按顺时针方向放置在同一数据中心的节点中。此策略尝试将副本放置在不同的机架中。
  • 复制因子:复制因子是放置在不同节点上的数据副本数。为了避免故障,3 是良好的复制因子。超过 XNUMX 个复制因子可确保没有单点故障。有时,服务器可能会停机,或者可能会发生网络问题,然后其他副本可以无故障地提供服务。
  • 计费示例: 以下是执行命令“Create Keyspace”的快照,该命令将在以下位置创建键空间: Cassandra.

在中创建键空间 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。

修改键空间 Cassandra

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。

Cassandra 删除键空间

DROP KEYSPACE University;

成功执行“Drop keyspace University”命令后,keyspace University 将从 Cassandra 包含所有数据和模式。

这是尝试访问不存在的键空间时返回错误的快照。

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 表 教程。

常见问题

尽量减少键空间和表的数量,通常每个应用程序一个即可。每个键空间和表都会增加每个节点的模式元数据和内存开销,因此数百个键空间会降低集群性能。

是的,如果启用了自动快照功能。 Cassandra 在删除之前写入快照ping因此,在重新创建模式后,可以使用 sstableloader 恢复 SSTable。

仅适用于可重新生成的数据,例如缓存或衍生分析数据。跳过ping 提交日志意味着,如果节点意外停止,则内存表中仍然存在的写入操作将会丢失。

根据数据中心布局和可用性目标,AI 可以提出相应的策略和各数据中心的具体参数。请务必核对数据中心名称与 nodetool 状态是否一致,因为拼写错误会导致副本数量不足。

它能很好地处理常规语法,但经常会沿用关系型语法,例如未加引号的策略名称或外键。请先针对测试键空间运行所有生成的脚本。

总结一下这篇文章: