我正在设置Apache Cassandra集群,我想将某些数据仅隔离到某些数据中心。我知道我可以通过复制因子来限制数据的存储位置,但这还不够。 我有键空间DC1DATA,DC2DATA,ALL,我希望我的DC1数据
我希望两个数据中心都可以访问" ALL"密钥空间。 我能以某种方式这样做吗?
这就是我在设置密钥空间时所做的事情(例如,有1个节点x数据中心,总共2个节点):
CREATE KEYSPACE dc1data
WITH REPLICATION = {
'class' : 'NetworkTopologyStrategy',
'dc1' : 1
} ;
CREATE KEYSPACE dc2data
WITH REPLICATION = {
'class' : 'NetworkTopologyStrategy',
'dc2' : 1
} ;
CREATE KEYSPACE all
WITH REPLICATION = {
'class' : 'NetworkTopologyStrategy',
'dc1' : 1,
'dc2' : 1
} ;
但我仍然可以连接到DC1中的任何节点并执行
cqlsh> use dc2data;
cqlsh:dc2data> create table if not exists test (
name text,
lastname text,
primary key ((lastname),name)
);
cqlsh:dc2data> insert into test (name, lastname) values ('Homer','Simpson');
cqlsh:dc2data> select * from test;
lastname | name
----------+----------
Simpson | Homer
这就是我想要避免的:从dc1看到dc2data键空间。那可能吗?甚至管理员用户?