存储大量数据

时间:2019-07-31 23:02:38

标签: mysql database mongodb performance

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

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

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

所以我的问题确实是关于我还有其他选择。除了将响应保存为JSON文件外,还可以将这300k +行保存到mySQL数据库中吗?我应该改用MongoDB之类的东西吗?

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

我担心的是,如果只有3个人上传文件,那么我的数据库可能会超过100万行。然后,我该如何扩展呢?如何确保使用该系统的用户越多,我就不会遇到问题?

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

谢谢

1 个答案:

答案 0 :(得分:1)

30万行不是问题。我支持在单个表中具有几个 billion 行的MySQL数据库。您可能需要升级到更大,功能更强大的服务器,但是MySQL可以存储它。

也就是说,您在考虑要保留的数据量和修剪的数据量方面处于正确的轨道。

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

因此,您应该测试应用程序运行的查询,并查看它需要多少行,然后才能看到性能下降。尝试通过添加索引,重写SQL逻辑或对数据进行分区等常用技术来优化查询(很多技术太多,以至于无法在Stack Overflow答案中找到答案)。

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

相关问题