【问题标题】:Cassandra performance: split CF or not?Cassandra 性能:拆分 CF 与否?
【发布时间】:2013-02-01 16:38:30
【问题描述】:

我正在设计一个 Cassandra 数据库以了解它。但我有一个问题想请专家帮我澄清一下:

我读过每个列族的行都通过节点分布,因此每个节点都有给定列族的行的一部分。这是否意味着即使列族有数百万行,将列族划分为多个列族也不是一个好主意?

我使用 RDBMS 的经验表明,最好将非常大的表拆分为较小的表以获得更好的性能,但在 Cassandra 中似乎不需要这样做,而且,如果我有很多列族,我会这样做需要更多内存。我对吗?在一个列族中保留许多行以获得更好的性能是否比将列族拆分为多个行更好?

谢谢!

【问题讨论】:

    标签: performance cassandra


    【解决方案1】:

    在 Cassandra 中无需对列族进行分片。您可以在一个 CF 中放入尽可能多的数据,只要您有存储空间和机器来存储它。但是,要考虑的一件事是,与使用一些具有真正大驱动器的机器相比,使用许多较小的机器可以获得更好的性能。而且您不想将所有这些数据放在共享存储上。 Cassandra 通过并行顺序读取和写入来提高速度。

    您确实需要注意的一件事是无限制的行增长 - 即以无限制的方式将列添加到行中。这是一个非常容易解决的问题,如果需要,可以通过分片密钥来解决。但即便如此,您也可以连续写入数百万列。

    【讨论】:

    • 非常感谢 rs_atl。我不知道拥有许多小型机器比拥有几台大型机器更好,并且具有并行顺序访问更好。我知道分片键,但很高兴看到你也推荐它;)也谢谢你。为了避免热点,几乎我的所有行都被拆分为数千且小于 1MB。我希望这个架构在生产中能正常工作......
    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 2016-05-12
    • 2023-04-01
    • 2014-10-14
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2011-10-22
    相关资源
    最近更新 更多