Cassandra 中创建 Keyspace:创建、修改和删除示例
Cassandra 中的 Keyspace 是什么?
Cassandra 中的 Keyspace 是一个数据容器,类似于 RDMBS(关系数据库管理系统)中的数据库。Cassandra Keyspace 决定了数据如何在节点上复制。
如何在 Cassandra 中创建 Keyspace
Keyspace 是一个包含列族、用户定义类型的对象。在 Cassandra 中,Keyspace 类似于 RDBMS 数据库。Keyspace 包含列族、索引、用户定义类型、数据中心感知、Keyspace 中使用的策略、复制因子等。
命令“Create Keyspace”用于在 Cassandra 中创建 keyspace。
语法
Create keyspace KeyspaceName with replication={'class':strategy name, 'replication_factor': No of replications on different nodes};
Cassandra Keyspace 的各个组成部分
- 策略:在 Cassandra 中声明策略名称时。Cassandra 语法中声明了两种策略。
- Simple Strategy:Simple Strategy 用于只有单个数据中心的情况。在此策略中,第一个副本放置在由分区器选择的节点上。其余节点按照顺时针方向放置在环中,而不考虑机架或节点位置。
- Network Topology Strategy:Network Topology Strategy 用于拥有多个数据中心的情况。在此策略中,您必须为每个数据中心单独提供复制因子。Network Topology Strategy 将副本放置在同一数据中心中的节点上,按照顺时针方向。此策略尝试将副本放置在不同的机架中。
- 复制因子:复制因子是将数据副本放置在不同节点上的数量。对于无故障,3 是一个不错的复制因子。超过两个的复制因子可确保没有单点故障。有时,服务器可能会宕机,或者可能发生网络问题,此时其他副本将提供服务而不会出现故障。
- 示例:这是已执行的“Create Keyspace”命令的快照,该命令将在 Cassandra 中创建 keyspace。
Create keyspace University with replication={'class':SimpleStrategy,'replication_factor': 3};
成功执行“Create Keyspace”命令后,Cassandra 中将创建名为 University 的 Keyspace,策略为“SimpleStrategy”,复制因子为 3。
修改 Cassandra Keyspace
命令“Alter Keyspace”用于修改 Cassandra 中已创建 keyspace 的复制因子、策略名称和 durable writes 属性。
语法
Alter Keyspace KeyspaceName with replication={'class':'StrategyName', 'replication_factor': no of replications on different nodes} with DURABLE_WRITES=true/false
修改 Cassandra Keyspace 时的关键注意事项
- Keyspace 名称:Keyspace 名称在 Cassandra 中无法修改。
- 策略名称:可以通过指定新的策略名称来修改策略名称。
- 复制因子:可以通过指定新的复制因子来修改复制因子。
- DURABLE_WRITES:可以通过指定 true/false 来修改 DURABLE_WRITES 的值。默认值为 true。如果设置为 false,则不会将更新写入提交日志,反之亦然。
- 执行:这是已执行的“Alter Keyspace”命令的快照,该命令将 DataCenter1 的 Keyspace 策略从“SimpleStrategy”修改为“NetworkTopologyStrategy”,并将复制因子从 3 修改为 1。
Alter Keyspace University with replication={'class':'NetworktopologyStrategy', 'DataCenter1':1};
成功执行“Alter Keyspace”命令后,Strategyname 将从“SimpleStrategy”更改为“NetworkTopologyStrategy”,并且 DataCenter1 的复制因子将从 3 更改为 1。
删除 Cassandra Keyspace
命令‘Drop Keyspace‘ 将从 Cassandra 中删除 keyspace,包括所有数据、列族、用户定义类型和索引。在删除 keyspace 之前,Cassandra 会为 keyspace 创建一个快照。如果 Cassandra 中不存在该 keyspace,除非使用 IF EXISTS,否则 Cassandra 将返回错误。
语法
Drop keyspace KeyspaceName
示例
这是已执行的“Drop Keyspace”命令的快照,该命令将删除 keyspace University。
Drop keyspace University;
成功执行“Drop keyspace University”命令后,Keyspace University 将从 Cassandra 中删除,包括所有数据和架构。
这是尝试访问不存在的 keyspace 时返回错误的快照。
注意:Drop Keyspace 和 Delete Keyspace 没有区别。Drop Keyspace 等同于 Delete Keyspace。