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

时间:2015-10-19 10:45:12

标签: database cassandra key-value-store

我是Cassandra的新手。据我所知,每个键空间可以存储的最大表数是Integer.Max_Value。但是,如此大量的表格的性能视角(速度,存储等)会产生什么影响?对此有什么建议吗?

2 个答案:

答案 0 :(得分:9)

虽然在Cassandra中有大量表格的合法用例,但它们很少见。您的用例可能是其中之一,但请确保它是。如果不了解您正试图解决的问题,显然很难给出指导。显然,许多表将需要更多资源。多少?这取决于设置和使用情况。

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

但是,如果你有一千个表,但不能同时写入所有表,那么争用就会减少。仍然存在每个表的开销,但是将有更多的RAM来保存活动表的memtables。

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

只是拥有大量的表并不是一个大问题,即使你可以拥有多少个限制 - 如果你有足够的RAM来保持跟踪它们的结构,你可以拥有任意数量的表。但是,拥有大量表格并同时读取和写入这些表格将是一个问题。与对较少的表执行相同数量的读写操作相比,它将需要更多资源。

答案 1 :(得分:1)

在我看来,如果你可以将数据分成多个表,甚至数千个,这是有益的。

优点:

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

    1. 拥有多个表将导致有多个memtables。我认为这对RAM增加的差异是微不足道的。
    2. 另外,查看链接,他们帮了我很多http://manuel.kiessling.net/2016/07/11/how-cassandras-inner-workings-relate-to-performance/
      https://www.infoq.com/presentations/Apache-Cassandra-Anti-Patterns

      请随意编辑我的帖子,我是Big Data的新手