【发布时间】:2016-08-14 08:23:57
【问题描述】:
我正在尝试了解 Cassandra 中的数据复制。就我而言,我必须根据 yymmddhh 主键分区将大量记录存储到单个表中。
我有两个数据中心(DC1 和 DC2),我使用以下 CQL 创建了一个键空间。
CREATE KEYSPACE db1 WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 1 };
然后使用下面的 CQL 创建了一个新表 tbl_data
CREATE TABLE db1.tbl_data (
yymmddhh varchar,
other_details text,
PRIMARY KEY (yymmddhh)
) WITH read_repair_chance = 0.0;
现在,我可以看到上面的键空间“db1”和表“tbl_data”创建成功。我有几百万行要插入,我假设所有行都将存储在两个服务器上,即 DC1 和 DC2,因为两个数据中心的复制因子都是 1。
假设,一段时间后我需要添加更多节点,因为记录数量可能会增加到数十亿,那么在这种情况下,由于磁盘空间限制,一个数据中心无法处理如此大量的记录。
a) 那么,如何将数据划分到不同的节点,并可以按需添加新的节点呢?
b)是否需要更改键空间“db1”才能将新数据中心的名称放入列表中?
c)当前系统将如何横向工作?
d) 我正在使用以下代码使用 nodejs 驱动程序连接 Cassandra。我是否需要将所有节点的 IP 地址放入代码中?如果我不断地按需增加节点数量,我是否需要每次都更改代码?
var client = new cassandra.Client({ contactPoints: ['ipaddress_of_node1'], keyspace: 'db1' });
从以上所有示例中,您可以看到我的基本要求是将大量记录存储到单个表中,将数据分散到不同的服务器,如果数据量增加,我应该能够添加新的服务器。
【问题讨论】:
标签: cassandra