【问题标题】:setting keyspace for replication strategy为复制策略设置键空间
【发布时间】:2018-08-05 19:44:42
【问题描述】:

我对 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”键空间中配置的复制策略吗?

【问题讨论】:

    标签: cassandra-2.0


    【解决方案1】:

    “据我了解,集群中的每个应用程序客户端都使用自己的密钥空间。因此我需要在应用程序中设置它??”

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

    “这会让 cassandra 始终使用该表的“MyKey”键空间中配置的复制策略吗?”

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

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

    【讨论】:

    • 好的,我明白了,但是我有以下问题。我正在尝试部署 apache usergrid。此应用程序默认使用 SimpleStrategy 创建一个键空间。现在,在为应用程序设置数据库之后,我尝试通过执行 'ALTER KEYSPACE "Usergrid" WITH REPLICATION = {class' : 'NetworkTopologyStrategy', 'DC1' : 1} AND DURABLE_WRITES = true;' 来更改键空间但是 cqlsh 在该查询保留在 ... 之后挂起有什么想法吗?
    • 我搞定了。由于我的语法中缺少 ',cqlsh 崩溃了。不幸的是,cqlsh 在没有通知任何错误的情况下完全死掉了。我读到这将在 2.1 中改变。这将非常有用,可以节省我一些时间
    猜你喜欢
    • 2020-06-06
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2010-09-30
    相关资源
    最近更新 更多