为复制策略设置密钥空间



我对Cassandra还很陌生,所以当我对密钥空间的概念有一些根本性的误解时,请原谅我。我想做的是在不同的地区建立一个多数据中心环,将数据复制NetworkTopologyStrategy endpoint_snitch设置为GossingPropertyFileSnitch因此,正如文档中所解释的,我需要为密钥空间设置复制策略

 CREATE KEYSPACE "mykey"
    WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'dc1' : 2, 'dc2' : 2};

我还读到,在cql中,我可以"使用mykey"来设置密钥空间

那么在卡桑德拉的配置中,这种情况会一直持续下去吗?据我所知,集群中的每个应用程序客户端都使用自己的密钥空间权限。因此,我需要在应用程序中设置这个??

示例仅显示如何创建用于配置复制策略选项的密钥空间。我想我已经理解了它背后的基本原理。我要找的是如何告诉cassandra使用某个密钥空间策略(一致和/或取决于应用程序)的例子。

我在cassandra文档中挖掘了更多内容,认为我对密钥空间的使用有了更好的了解。我告诉卡桑德拉使用某个密钥空间,我可以创建这样的密钥空间,这是对的吗

CREATE KEYSPACE "MyKey" WITH replication = {'class':  
'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;

然后像一样在这个密钥空间中创建表

 CREATE TABLE "MyKey"."TableName" (
 ...

这会使cassandra始终使用该表的"MyKey"密钥空间中配置的复制策略吗?

"据我所知,集群中的每个应用程序客户端都使用自己的密钥空间权限。因此,我需要在应用程序中设置此权限?"

没有。您可以将键空间视为表的集合,所有用户都可以访问这些表。如果出于某种原因,您有显著不同的复制需求,或者您有一个多租户应用程序出于安全目的需要它,那么您实际上只会创建多个密钥空间。

"这会使cassandra始终使用该表的"MyKey"密钥空间中配置的复制策略吗?"

是的。TableName表永久存在于MyKey键空间中,并将继承该键空间的属性。

一旦设置了复制因子,通常不会更改它。可以,但这需要在后台进行相当密集的IO处理。复制因子用于确定特定数据中心中单个数据的副本数量,因此它将告诉您在发生故障之前有多少节点会发生故障。3是迄今为止最常见的设置,但如果您的数据中心中没有3个节点,那么较小的数量也可以。

最新更新