我对Cassandra很陌生,所以当我对键空间的概念有一些基本的误解时,请原谅我。我想要做的是在不同区域设置一个多数据中心环,数据复制NetworkTopologyStrategy endpoint_snitch设置为GossipingPropertyFileSnitch 因此,正如文档中所解释的,我需要为键空间设置复制策略
CREATE KEYSPACE "mykey"
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'dc1' : 2, 'dc2' : 2};
我还读到在cql中我可以做到"使用mykey"设置键空间
那会在cassandra配置中持续设置吗?据我所知,群集中的每个应用程序客户端都使用自己的密钥空间。因此我需要在应用程序中设置它?
这些示例仅说明如何创建用于配置复制策略选项的键空间。我想我已经设法理解它背后的基础知识。我正在寻找的是如何告诉cassandra使用某种键空间策略(一致和/或依赖于应用程序)的示例。
我在cassandra文档中挖掘了更多内容,并认为我对键空间的使用有了更好的理解。我是正确的,因为告诉cassandra使用某个键空间我可以像这样创建键空间
CREATE KEYSPACE "MyKey" WITH replication = {'class':
'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
然后在这个键空间中创建表,如此
CREATE TABLE "MyKey"."TableName" (
...
这会让cassandra始终在" MyKey"中使用配置的复制策略。该表的键空间?
答案 0 :(得分:0)
“据我所知,群集中的每个应用程序客户端都使用自己的密钥空间。因此我需要在应用程序中设置它?”
没有。您可以将密钥空间视为一组表,您的所有用户都可以访问这些表。如果由于某种原因您有不同的复制需求,或者如果您有一个多租户应用程序出于安全目的而需要它,那么您实际上只会创建多个键空间。
“这会使cassandra始终在该表的”MyKey“键空间中使用已配置的复制策略吗?”
是。 TableName表永久存在于MyKey键空间中,并将继承该键空间的属性。
设置复制因子后,通常不会更改它。你可以,但它需要在后台进行相当IO密集的过程。复制因子用于确定特定数据中心中单个数据的副本数量,因此可以告诉您在中断之前有多少节点可能出现故障。 3是目前最常见的设置,但如果您的数据中心没有3个节点,那么较小的数字就可以了。