Cassandra中色谱柱系列的实际限制是什么?


10

在卡桑德拉(Cassandra)中,建议不要有数千个以上的列族,为便于讨论,假设有2,000个。在需要保留2,000种以上数据类型的情况下,一种方法是将多个不相关类型的数据分片到每个列族中。

例如,单个CF可以包含订单,发票和客户,条件是它们的行键是不同的(例如,以对象类型为前缀,即单个CF的键可以同时包含Order|1234Customer|1234)。第二个CF可以包含说地址,LineItems和OrderTypes。考虑到这种方法的基本可行性,实际的限制是什么?例如,将所有10,000种类型的对象放入一个CF中会出现什么问题?据我从Cassandra Wiki所知道的,CF的大小没有严格限制。

Answers:


6

我不是粉丝。与创建一个名为OrdersOrCustomers的关系表以及为两者定义的列一样,这是一个好主意。由于引擎盖下的稀疏单元存储,在Cassandra中,存储引擎的损失要稍低一些,但这仍然是不明智的做法。

以后要映射/减少数据时,这会给您带来麻烦。每个任务都必须扫描所有数据,并过滤出与您实际不感兴趣的行(例如客户)不匹配的行。并祝您好运,Cassandra跟踪每CF的统计数据有意义。(“由于订单数据,此CF是我应用程序80%的源读取吗?还是由于与客户会话相结合?还是我输入的其他五种数据类型?”)

如果您绝对肯定需要成千上万个CF?即使那样,我宁愿在没有竞技场分配的情况下运行Cassandra,也不愿像这样破坏我的数据模型。


谢谢你的回答,乔纳森。我需要阅读竞技场分配以了解最后一句话。使用舞台分配是配置选项吗?
安德鲁·斯旺

还是如果现在将竞技场分配放到Cassandra中,那么在某个可配置的时间段内取消分配尚未访问的任何列族的竞技场将有多困难?我值得为此记录一张JIRA票吗?
Andrew Swan

1
Cassandra在清除内存压力方面已经很精明。问题在于所有情况都处于活动状态的最坏情况。
jbellis 2013年

在哪种情况下,只有第二个环是唯一的解决方案?
Andrew Swan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.