【问题标题】:Storing huge amount of data [closed]存储大量数据[关闭]
【发布时间】:2019-07-31 23:02:38
【问题描述】:

对这个问题的广泛性表示歉意,但寻求一些建议。

我在 Laravel 中构建了一个系统。用户可以上传文件。然后将该文件发送到对其进行一些数据科学处理的系统。它以 JSON 字符串的形式将响应发送回我的系统,然后我将其保存回 JSON 文件。然后将该文件加载到前端,以便显示一些图表。

在大多数情况下,这种方法都很好。但是,当我上传非常大的文件(这很好,因为我是块上传)时,保存的 JSON 文件会很大。这会成为一个问题,因为它对于前端加载来说太大了。一个文件可以包含数十万行数据。

所以我的问题实际上是关于我还有哪些其他选择。不是将响应保存为 JSON 文件,而是可以将这 300k+ 行保存到 mySQL 数据库中,还是它无法处理?我应该改用 MongoDB 之类的东西吗?

我认为数据库可能是最好的途径,因为我可以查询每个图表所需的特定数据,而无需加载一个巨大的文件来提取它。我确实使用了文件中的其他数据,但这可以在事件中查询,因此不必担心。

我担心的是,如果只有 3 个人上传一个文件,我就可以拥有一个包含超过一百万行的数据库。然后如何扩展它,如何确保使用系统的用户越多,我就不会遇到问题?

对此的任何建议将不胜感激。我开始认为我可能需要为每个用户部署一个数据库服务器并每 X 天自动修剪他们的数据。

谢谢

【问题讨论】:

  • MySQL 中的 JSON 列怎么样?您是否考虑过使用 Postgres 作为替代方案,因为它具有非常深入的 JSON 支持?与任何现代数据库一样,通常没有“MySQL 无法处理太多”这样的事情。有一种说法是“你的硬件配置和/或服务器调优太多了”。
  • 需要更多关于数据的细节。

标签: mysql database mongodb performance


【解决方案1】:

300k 行不是问题。我支持在一个表中包含几 十亿 行的 MySQL 数据库。您可能需要升级到更大、更强大的服务器,但 MySQL 可以存储它。

也就是说,考虑要保留多少数据以及需要修剪多少数据,您的思路是正确的。

可扩展性更多地取决于优化您需要运行的查询,而不仅仅是您存储的行数。

因此,您应该测试您的应用运行的查询,并查看在您看到性能下降之前需要多少行。尝试通过添加索引、重写 SQL 逻辑或对数据进行分区等常用技术来优化查询(技术很多,在 Stack Overflow 的答案中无法涉及)。

如果您已尽可能优化查询,则需要开始修剪数据,或将数据拆分到多个 MySQL 实例。

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 2011-02-13
    • 2012-06-12
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多