Cassandra - 合理的最大表数是多少?

Cassandra - What is the reasonable maximum number of tables?

我是 Cassandra 的新手。据我了解,每个键空间可以存储的最大表数是 Integer.Max_Value。但是,从性能角度(速度、存储等)来看,如此大量的表意味着什么?对此有什么建议吗?

虽然在 Cassandra 中有大量 table 的合法用例,但它们很少见。您的用例可能是其中之一,但请确保它是。如果不了解您要解决的问题的更多信息,显然很难提供指导。显然,许多 table 将需要更多资源。多少?这取决于设置和用法。

例如,如果您有一千个 tables 并且同时写入所有这些,那么将会争用 RAM,因为它们中的每一个都会有 memtables ,并且每个memtable都有一定的开销(多少取决于Cassandra的版本,你的设置等)。

但是,如果您有上千个 table 但不同时写入所有这些,那么争用就会减少。仍然有每个 table 的开销,但是会有更多的 RAM 来保持活动 table 的内存 tables 左右。

磁盘IO也是如此。如果您同时读取和写入许多不同的 tables,磁盘将执行更多的随机 IO。

拥有很多 table 并不是什么大问题,即使您可以拥有的数量是有限制的 – 只要您有足够的 RAM 来保持,您可以拥有任意数量跟踪它们的结构。但是,拥有大量 table 并同时读取和写入它们将是一个问题。与对更少的 table 进行相同数量的读取和写入相比,它需要更多的资源。

在我看来,如果您可以将数据拆分成多个 table,甚至数千个,都是有益的。

优点:

  1. 假设您希望将来扩展到 10 个以上的节点,并且 RF 为 2 将导致数据在节点之间均匀分布,因此不可销售。
  2. 另一点是随机 IO,如果您同时从许多 table 中读取它会很大,但我不明白为什么只有一个 table 会有区别.您还将寻找另一个分区键,因此 IO 没有区别。
  3. 当压缩发生时,如果只有一个 table,它将不得不做更少的工作。来自 SSTables 的值必须加载到内存中,合并并保存回来。

缺点:

  1. 有多个 table 将导致有多个 memtable。我认为这对 RAM 的影响是微不足道的。

此外,查看链接,它们对我帮助很大
http://manuel.kiessling.net/2016/07/11/how-cassandras-inner-workings-relate-to-performance/
https://www.infoq.com/presentations/Apache-Cassandra-Anti-Patterns

请随意编辑我的post,我对大数据有点陌生