最近我在cassandra中用不同的设计进行了一些性能测试。 我目前使用cassandra作为写密集型项目。但是,我将添加读取密集型部分以使用select
语句导出数据。cassandra复合节点,多节点上的复合键
我正在用下表做时间系列;
CREATE TABLE events (
date text,
n int, // it could be 1,2,3
id timeuuid,
PRIMARY KEY ((date, n), id)
);
我date|n
为分区键。为了提高阅读性能,我试图从宽行的概念中获得杠杆作用。在文件中,据说:
如果分区键是相同的,则它们被插入到同一个物理节点并扩大分区键的行。
因此,我使用n
来平均分配行的情况下得到热点,这是here;
但是,在多节点集群中,当我插入以下内容时;
'2013-07-30'|1, some-timeuuid
'2013-07-30'|1, another-timeuuid
我看到它们不在同一个物理节点中。
我得到节点信息;
nodetool getendpoint keyspace columnfamily some-timeuuid
所以,不知何故,我想他们是在同一行,以提高读取性能,但不能太宽在找两个十亿列的情况。 (这是列的大小限制)
那么,有什么想法发生了什么?
的复合隔膜是(根据评论更新我的答案。),你不应该把引号轮字符串,因为他们将被列入关键。所以第一个例子应该是'nodetool getendpoints keyspace columnfamily 2013-07-30:1'。 – Richard
显然,'nodetool getendpoints'也为不存在的键提供输出。它在密钥上运行算法后输出物理节点ip。你对“getendpoints”的使用是正确的 – aacanakin