用于 Web 应用程序的大型数据集 - 为每个查询使用 API 或本地存储在数据库中?

Posted

技术标签:

【中文标题】用于 Web 应用程序的大型数据集 - 为每个查询使用 API 或本地存储在数据库中?【英文标题】:Large data set for web application - use an API for each query or store locally on database? 【发布时间】:2021-09-01 00:58:56 【问题描述】:

我正在构建一个应用程序,它使用一组相当大的公开可用数据。我有两种查询方式:

    通过 API。对于每个查询,我的应用程序将使用此数据集的 API 发送一个请求。

    或者,我可以下载(下载 CSV 文件占用超过 4.0GB)并将整个数据集存储在本地。

我想对我的 Web 应用程序的数据执行的操作和分析类型可以使用任何一种方法轻松完成。但是我想知道哪种方式最好,为什么?

我唯一能想到的是查询本地数据库会更快,但是使用 API 可以确保数据是最新的(据说这个数据集中的“有效”数据会在 10 年后过期到该组织的网站)。

【问题讨论】:

【参考方案1】:

正如您所说,这两个选项都有效,这取决于您的用例,哪个选项更好。

考虑以下问题:

数据多久更新一次?它可能完全是历史数据并且永远不会更新,还是只会添加新值但现有的永远不会改变?自动更新本地存储的数据需要付出多少努力。

响应时间和可用性有多重要?本地存储的数据使您独立于 API 的网络延迟、API 的中断、服务提供商可以实施以限制请求速率的速率限制或使数据脱机。平均请求多少数据,API 的响应时间是多少?

【讨论】:

非常感谢您的回复 - 您给了我更多的考虑,这很好,尤其是在与外部 API 的附加耦合方面。从这个意义上说,本地存储可能更可靠。只是另一个问题 - 现在我的所有数据都采用原始 CSV 格式,这使得在 Python 中使用 pandas 进行分析非常简单。但是您认为我应该将这些数据存储在 mysql 数据库中吗?这是否又是个人选择,例如,速度和响应时间对我来说有多重要? 我应该补充一点,对于这些数据,写入操作非常少见,它几乎总是只是通过 Python 代码完成的任何聚合、分析等进行读取。 再次,数据的存储取决于您的用例要求。一个简单的 CSV 文件开始使用起来非常方便,非常适合业余项目。但是当您不需要总是处理整个文件但知道要选择哪些行时可能会更慢。从数据库中读取选定的行比从文件中读取更简单。像 MySQL 这样的结构化数据库也更易于维护(更新单行)管理多个连接、标准备份过程。使用索引等优化读取。并且可以强制执行架构并更容易理解数据。

以上是关于用于 Web 应用程序的大型数据集 - 为每个查询使用 API 或本地存储在数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

Report Builder 3.0 - 如何使用大型数据集运行此报告?

公开大型 Web 服务数据集以供 Access 或 Excel 使用

在 Python 中为大型数据集创建邻接矩阵

SQL Server 中对大型数据集的慢速不同查询

使用大型列表优化 Django 查询集调用?

大型数据集上的 MongoDB 子文档查询性能