首页 > 解决方案 > 如何:具有大型数据库和快速访问一小部分数据的 Spring Boot 应用程序

问题描述

在我的案例中,这是关于如何组织数据存储的一般建议的请求。

我正在用 Java 开发一个 Spring Boot 应用程序来收集和保存测量值,并通过 REST API 提供对保存数据的访问。我希望每小时进行大约 1000 万次测量,并且我需要存储最近 2-3 个月的历史记录。存储的测量数据总量可达数百亿。数据模型并不复杂,大约有十张表。没有编辑计划,只清理过时的数据和清理。我打算将 Postgres 用作 DBMS。

存储后,数据可以按原样检索(使用时间或空间过滤器)或用于创建聚合数据产品。尽管进行了性能调整、使用索引和优化查询,但数据检索可能需要大量时间,但这是出于研究目的,我理解拥有这么多记录的代价。到此为止,事情已经很清楚了。

另一方面,最近的测量值(例如在最后十分钟内收集的)必须可以立即访问。嗯,尽可能快。此数据必须由 REST API 提供,并在前端应用程序中显示为实时更新的图形。显然,从包含数十亿条记录的表中检索最后一分钟的数据将花费大量时间,这是表示无法接受的。

这种情况的典型解决方案是什么?

到目前为止,我想出了一个使用两个数据源的想法:Postgres 用于历史记录和内存中 H2 用于保持最近的数据准备好提供服务。因此,我将有一个小型数据库在内存中复制最近的数据。通过这种方法,我希望重用我的查询和实体类。这看起来好吗?

标签: databasepostgresqlperformancespring-booth2

解决方案


我找到了一个完全符合我的情况的多数据源解决方案。本文的作者正在处理一个“需要内存数据库来实现高性能和持久数据库来存储”的项目。


推荐阅读