在本文中,我们将讨论 Cassandra 支持的不同策略类选项,例如 SimpleStrategy、LocalStrategy、NetworkTopologyStrategy 三种复制策略,其中我们通常使用 Simple 和 NetworkTopology Strategy,其中 LocalStrategy 仅用于系统。让我们一一讨论。
Cassandra 支持的不同类型的复制策略类选项如下:
1. SimpleStrategy
2. LocalStrategy
3. NetworkTopologyStrategy
这些解释如下。
1. 简单策略:
这是一个简单的策略,建议用于单个数据中心中多个机架上的多个节点。
让我们考虑举个例子,strategy_demo 是一个键空间名称,其中 class 是 SimpleStrategy,replication_factor 是 2,这只是意味着在单个数据中心中每行有两个冗余副本。我们来看一下。
创建密钥空间:
CREATE KEYSPACE cluster1 WITH
replication = {'class': 'SimpleStrategy',
'replication_factor' : 2};
让我们验证密钥空间 cluster1。
describe keyspace cluster1;
输出:
2.本地策略:
在这种策略中,我们将出于内部目的使用复制策略,例如用于 system 和 sys_auth 密钥空间是内部密钥空间。在 Cassandra 中,内部密钥空间由 Cassandra 的存储架构隐式处理,用于管理授权和身份验证。
如果我们尝试创建这样的键空间,则不允许使用 LocalStrategy 类创建键空间,那么它会给出类似“LocalStrategy is for Cassandra’s internal purpose only”之类的错误。
3.网络拓扑策略:
这是我们可以根据需要将多个数据副本存储在不同数据中心的策略。当多个副本节点需要放置在不同的数据中心时,这是使用 NetworkTopologyStrategy 的重要原因之一。
让我们考虑一个例子,cluster1 是一个键空间名称,其中 NetworkTopologyStrategy 是一个复制策略,并且有两个数据中心,一个在东边,RF(Replication Factor) = 2,第二个在西边,RF(Replication Factor) = 3。
我们来看一下。
CREATE KEYSPACE cluster1 WITH
replication = {'class': 'NetworkTopologyStrategy',
'east' : 2, 'west' : 3};
为了验证所有内部现有的键空间,使用下面给出的以下 CQL 查询。
select *
from system_schema.keyspaces;
输出:
select *
from system_schema.keyspaces
where keyspace_name = 'cluster1';
输出:
为了验证特定现有键空间的所有表,然后使用下面给出的以下 CQL 查询。
首先,我们将在 cluster1 键空间下创建一些表。我们来看一下。
create table tb1
(
Id int primary key,
name text,
city text
);
表 2:
create table tb2
(
Id int primary key,
event text,
team_name text
);
让我们使用以下 CQL 查询来验证 cluster1 的键空间架构。
SELECT *
FROM system_schema.tables
WHERE keyspace_name = 'cluster1';
输出:
要找出具有特定键空间的特定表的所有列,请使用下面给出的以下 CQL 查询。
SELECT *
FROM system_schema.columns
WHERE keyspace_name = 'cluster1'
AND table_name = 'tb2';
输出:
System 和 system_auth 密钥空间:
系统键空间包含有关可用列族、列和簇的信息。 system_auth 密钥空间主要包含认证信息、用户凭据和权限。