Cassandra中的数据复制
我试图理解Cassandra中的数据复制。在我的例子中,我必须基于yymmddhh主键分区将大量记录存储到单个表中 我有两个数据中心(DC1和DC2),我使用下面的CQL创建了一个键空间Cassandra中的数据复制,cassandra,Cassandra,我试图理解Cassandra中的数据复制。在我的例子中,我必须基于yymmddhh主键分区将大量记录存储到单个表中 我有两个数据中心(DC1和DC2),我使用下面的CQL创建了一个键空间 CREATE KEYSPACE db1 WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 1 }; 然后使用下面的CQL创建一个新表tbl_数据 CREATE TABLE db1.tbl_data (
CREATE KEYSPACE db1 WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 1 };
然后使用下面的CQL创建一个新表tbl_数据
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' });
从以上所有示例可以看出,我的基本要求是将大量记录存储到一个表中,将数据分散到不同的服务器上,如果数据量增加,我应该能够在这些服务器上添加新的服务器。a)如果向数据中心添加新节点,数据将在节点之间自动共享。使用复制系数1和默认设置,每个节点上的复制系数应为~50%,但在添加新节点后,在节点之间重新分发数据可能需要一些时间。”nodetool status'可以显示哪个节点拥有多少键空间
b) 是的,我相信你必须这样做(尽管不是100%的)
c) 通过将数据按1除以节点数(1个节点=100%,2个节点=50%,3个节点=33%等)进行分布,在水平方向上,通过您的设置,它将线性扩展(假设机器相等且具有相同的num_令牌值),吞吐量和存储容量都将扩展
< Nojjs驱动程序工作时,卡桑德拉(Pythand)的C++和Python驱动程序(应该是!),连接到CasDANRA后,它会知道集群中的其他节点。 < P> A),如果向数据中心添加新节点,数据将自动在节点之间共享。使用复制系数1和默认设置,每个节点上的复制系数应为~50%,但在添加新节点后,在节点之间重新分发数据可能需要一些时间。”nodetool status'可以显示哪个节点拥有多少键空间
b) 是的,我相信你必须这样做(尽管不是100%的)
c) 通过将数据按1除以节点数(1个节点=100%,2个节点=50%,3个节点=33%等)进行分布,在水平方向上,通过您的设置,它将线性扩展(假设机器相等且具有相同的num_令牌值),吞吐量和存储容量都将扩展
< Nojjs驱动程序工作的C++(卡桑德拉)和Python驱动程序(应该是!),在连接到CasDANRA之后,它会知道集群中的其他节点。
我是否需要更改键空间“db1”以将新数据中心的名称放入列表中
不需要。只有在添加新数据中心或更改复制系数时,才需要更改
我需要在代码中输入所有节点的ip地址吗
不需要。但添加多个联系人可以确保更高的可用性。
如果您的触点断开,驾驶员可以连接到另一个触点。一旦连接,它就可以得到所有节点的列表。回答您的大部分问题
我是否需要更改键空间“db1”以将新数据中心的名称放入列表中
不需要。只有在添加新数据中心或更改复制系数时,才需要更改
我需要在代码中输入所有节点的ip地址吗
不需要。但添加多个联系人可以确保更高的可用性。
如果您的触点断开,驾驶员可以连接到另一个触点。一旦连接,它就可以获得所有节点列表