【问题标题】:Cassandra - What is the reasonable maximum number of tables?Cassandra - 合理的最大表数是多少?
【发布时间】:2015-10-19 10:45:12
【问题描述】:

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

【问题讨论】:

    标签: database cassandra key-value-store


    【解决方案1】:

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

    例如,如果您有 1000 个表并同时向所有表写入,则会出现 RAM 争用,因为每个表都会有 memtable,并且每个 memtable 都有一定的开销(多少取决于 Cassandra 的版本、您的设置等)。

    但是,如果您有 1000 个表但没有同时写入所有表,那么争用就会减少。仍然存在每个表的开销,但会有更多的 RAM 来保持活动表的内存表。

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

    拥有很多表并不是什么大问题,尽管您可以拥有的数量是有限的——只要您有足够的 RAM 来保持跟踪它们的结构,您就可以拥有任意数量的表.但是,拥有大量表格并同时读取和写入它们将是一个问题。与对更少的表执行相同数量的读取和写入操作相比,它需要更多的资源。

    【讨论】:

      【解决方案2】:

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

      优点:

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

      缺点:

      1. 拥有多个表将导致拥有多个内存表。我认为这对 RAM 增加的差异是微不足道的。

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

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

      【讨论】:

        猜你喜欢
        • 2015-07-30
        • 2018-05-28
        • 2011-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多