【问题标题】:how much data can be saved to wide column rows有多少数据可以保存到宽列行
【发布时间】:2021-05-13 10:58:19
【问题描述】:

我了解对于 NoSQL 宽列数据库(例如 Cassandra),您可以使用 UserID 作为一行的键,并将与该用户相关的所有信息保存在一行中。例如,您可以有一个名为“个人信息”的列族,并在那里保存地址/电话/姓名等。您可以有另一个名为“工作信息”的列族,并在那里保存他的职务、办公室、历史等。我想要另一个名为“项目”的列族,并将大量与项目相关的数据保存到该列族。我的问题是我可以保存多少项目数据。 2G可以吗? 200G可以吗?

【问题讨论】:

    标签: cassandra nosql


    【解决方案1】:

    长答案:在 Cassandra 中,表的大小没有真正的限制。大小仅受节点数量及其容量的限制。吞吐量要求可能决定了单个节点可以有效处理多少,但除此之外,您应该能够轻松地为每个节点存储数十 GB。我记得在 Datastax 课程中提到了 1-4TB 范围内的值作为每个节点通常的最大范围。然而,这可能只有在特定的使用模式下、经过深思熟虑的模式建模和能够微调所有内容的经验丰富的 DBA 下才有可能。

    简答:每个节点几十GB应该很容易实现,而在有利的情况下,每个节点可能希望达到几TB。只要你买得起节点,理论上大小应该无限

    侧面信息:

    • 在计算大小时需要考虑复制因子。使用推荐的 3 的 rf 意味着对于 1GB 的数据,集群将存储 3GB;
    • 虽然节点可以存储大量信息,但您的写入量,尤其是读取频率、预期延迟以及一致性级别将是每个节点大小的主要限制;拥有您很少阅读的数据将允许节点只保存它而不必担心太多。如果您阅读了很多内容,鉴于读取比写入更昂贵,您的节点将开始响应速度越来越慢,因此需要更多节点来处理相同的数据;
    • 您应该将分区限制为 10MB(大部分)和 100MB(全部);
    • 您应该将分区内的行数限制在 100k 以下;

    总体而言,尺寸可能是您遇到的最少问题。存储很便宜,让您望而却步的将是计算要求,这将取决于访问模式、吞吐量、数据模型和节点调整。

    希望这有帮助, 干杯!

    【讨论】:

    • 感谢您的回答。现在我明白桌子的大小没有限制。我想知道宽列数据库中一行的大小是否有任何限制。
    • 有一些硬上限,例如每个分区不超过 20 亿个单元,但实际上您应该从保持我在答案中提到的限制开始。您需要小心,虽然 Cassandra 可以存储大量数据,但每个分区的空间应保持在合理的水平(参见第 3 条)。如果您有一个单行分区,则应尝试将其限制为数十 MB,而如果您有一个多行分区,则需要将该值除以预期的行数。虽然很难为每个用例定义精确的值,但请尝试将分区的上限设为 10-20 MB,然后从那里查看。
    • 分区是指数据库着色吗? 10M似乎很小。你最终可能会得到很多桌子。这是人们在实际生产中所做的吗?
    • 是的,Cassandra 分区等同于分片的一般概念。但是,请不要将分区误认为是表。表由分区组成,您可以拥有无​​限数量的分区。虽然 10/100MB 是指导方针,但如果你不确定自己在做什么,我会尽量坚持这些。分区大小会影响性能,具体取决于微调集群的知识量和时间,以及您可以从那里上升或下降的性能和吞吐量。
    • 你说的“分区”是指db分区还是table分区?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2015-08-28
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多