我正在设置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键空间 . 那可能吗?甚至管理员用户?