我正在设置Apache Cassandra集群,我想将某些数据仅隔离到某些数据中心 . 我知道我可以通过复制因子来限制数据的存储位置,但这还不够 . 我有键空间DC1DATA,DC2DATA,ALL,我想要我的DC1数据
-
A)存储在DC1中 - 通过复制因子解决
-
B)DC2无法访问(就像管理员用户一样无法运行select语句)
我希望两个数据中心都可以访问“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键空间 . 那可能吗?甚至管理员用户?