Database 如何:使用大型数据库和快速访问小型数据子集的Spring引导应用程序
在我的案例中,这是一个关于如何组织数据存储的一般性建议的请求 我正在用Java开发一个SpringBoot应用程序来收集和保存测量数据,并通过RESTAPI提供对保存数据的访问。我预计每小时大约有1000万次测量,我需要存储最近2-3个月的历史记录。存储的测量数据总量可以达到数百亿。数据模型并不复杂,大约有十个表。不计划编辑,只清理过时数据和清空。我计划使用Postgres作为数据库管理系统 在存储数据时,可以检索数据(使用时间或空间过滤器)或用于创建聚合数据产品。尽管性能调整、使用索引和优化查询,数据检索可能需要花费大量时间,但这是出于研究目的,我理解拥有这么多记录的代价。到目前为止,一切都很清楚 另一方面,必须立即获取最新的测量结果(例如,在过去十分钟内收集的数据)。嗯,尽可能快。这些数据必须由RESTAPI提供,并在前端应用程序中显示为实时更新的图形。显然,从一个包含数十亿条记录的表中检索最后几分钟的数据将花费时间,这对于表示来说是不可接受的 对于这种情况,典型的解决方案是什么Database 如何:使用大型数据库和快速访问小型数据子集的Spring引导应用程序,database,postgresql,performance,spring-boot,h2,Database,Postgresql,Performance,Spring Boot,H2,在我的案例中,这是一个关于如何组织数据存储的一般性建议的请求 我正在用Java开发一个SpringBoot应用程序来收集和保存测量数据,并通过RESTAPI提供对保存数据的访问。我预计每小时大约有1000万次测量,我需要存储最近2-3个月的历史记录。存储的测量数据总量可以达到数百亿。数据模型并不复杂,大约有十个表。不计划编辑,只清理过时数据和清空。我计划使用Postgres作为数据库管理系统 在存储数据时,可以检索数据(使用时间或空间过滤器)或用于创建聚合数据产品。尽管性能调整、使用索引和优化查
到目前为止,我想出了一个使用两个数据源的想法:Postgres用于历史,in-memory H2用于保存最近的数据以备使用。因此,我将有一个小数据库在内存中复制最近的数据。通过这种方法,我希望重用查询和实体类。这看起来可以吗?我找到了一个与我的案例完全匹配的多数据源解决方案。本书的作者正在处理一个项目“其中高性能需要内存中的数据库,存储需要持久数据库”