Cassandra 中列族的实际限制是什么?

And*_*wan 10 scalability cassandra

在 Cassandra 中,不建议拥有超过几千个列族,为了争论起见,我们说 2,000 个。在需要持久化 2,000 多种类型的数据的情况下,一种方法是将多种不相关类型的数据分片到每个列族中。

例如,单个CF 可以包含Orders、Invoices 和Customers,前提是它们的行键是不同的(例如,以对象类型为前缀,即单个CF 的键可以同时包含Order|1234Customer|1234)。第二个 CF 可以包含说 Addresses、LineItems 和 OrderTypes。鉴于这种方法的基本可行性,它的实际限制是什么?例如,将所有 10,000 种类型的对象放入单个 CF 会有什么问题?据我从Cassandra wiki得知,CF 的大小没有硬性限制。

小智 6

我不是粉丝。这与创建一个名为 OrdersOrCustomers 的关系表一样好,该表为两者都定义了列。由于引擎盖下的稀疏单元存储,Cassandra 中的存储引擎损失略低,但这仍然是不好的做法。

当你想映射/减少你的数据时,这会咬你;每个任务都必须扫描您的所有数据,并过滤掉与您真正感兴趣的内容(例如,客户)不匹配的行。祝你好运理解 Cassandra 跟踪每个 CF 的统计数据。(“这个 CF 是我应用程序 80% 的读取源是因为订单数据吗?还是因为它结合的客户会话?还是我投入的其他五种数据类型?”)

如果您绝对需要数万或数十万个 CF?即便如此,我也宁愿在没有 arena 分配的情况下运行 Cassandra,也不愿像这样破坏我的数据模型。