📜  Cassandra 中的复制策略

📅  最后修改于: 2021-09-10 01:48:32             🧑  作者: Mango

在本文中,我们将讨论 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 密钥空间主要包含认证信息、用户凭据和权限。