gpt4 book ai didi

mysql - 数据聚合 mongodb vs mysql

转载 作者:IT王子 更新时间:2023-10-29 00:35:01 26 4
gpt4 key购买 nike

我目前正在研究后端以用于具有苛刻数据聚合要求的项目。主要项目要求如下。

  1. 为每个用户存储数百万条记录。用户每年可能有超过 100 万个条目,因此即使有 100 个用户,我们也谈论每年 1 亿个条目。

  2. 这些条目的数据聚合必须即时执行。用户需要能够通过大量可用过滤器过滤条目,然后呈现摘要(总计、平均值等)和结果图表。显然,我无法预先计算任何聚合结果,因为过滤器组合(以及结果集)非常庞大。

  3. 用户将只能访问他们自己的数据,但如果可以为所有数据计算匿名统计数据就好了。

  4. 大部分时间数据都是批量的。比如用户每天都会上传数据,可能需要3000条记录。在某些更高版本中,可能会有自动程序每隔几分钟以 100 件的小批量上传。

我做了一个简单的测试,创建一个有 100 万行的表,并在 mongodb 和 mysql 中对 1 列进行简单求和,性能差异很大。我不记得确切的数字,但它类似于 mysql = 200ms , mongodb = 20 sec。

我也用 couchdb 进行了测试,但结果更糟。

cassandra 似乎在速度方面很有前途,当我第一次发现它时,我非常热衷于它。然而,文档很少,我还没有找到任何关于如何对数据执行求和和其他聚合函数的可靠示例。这可能吗?

从我的测试(也许我做错了什么)来看,以当前的性能来看,不可能将 mongodb 用于这样的项目,尽管自动分片功能似乎非常适合它。

有没有人有在 mongodb 中进行数据聚合的经验,或者有任何可能有助于项目实现的见解?

谢谢,季米特里斯

最佳答案

如果您正在寻找一个非常高性能的 DBMS 并且不需要它是关系型的,那么您可能会考虑 Cassandra - 尽管它的优势只有在您拥有数据库集群而不是单个节点时才会发挥作用。

你没有说物理架构有什么限制。您确实提到了分片,这意味着集群。 IIRC MySQL 集群也支持分片。

了解系统打算支持的并发级别以及如何添加数据(滴灌或批处理)也非常有用。

您说“显然我无法预先计算任何聚合结果,因为过滤器组合(以及结果集)非常庞大。”

这是您最大的问题,也是决定系统性能的最重要因素。当然,您无法维护每个可能组合的具体化 View ,但您最大的性能优势将是维护有限的预聚合 View 并构建可以找到最接近匹配的优化器。这并不难。

C.

关于mysql - 数据聚合 mongodb vs mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2818493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com