Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何:使用大型数据库和快速访问小型数据子集的Spring引导应用程序_Database_Postgresql_Performance_Spring Boot_H2 - Fatal编程技术网

Database 如何:使用大型数据库和快速访问小型数据子集的Spring引导应用程序

Database 如何:使用大型数据库和快速访问小型数据子集的Spring引导应用程序,database,postgresql,performance,spring-boot,h2,Database,Postgresql,Performance,Spring Boot,H2,在我的案例中,这是一个关于如何组织数据存储的一般性建议的请求 我正在用Java开发一个SpringBoot应用程序来收集和保存测量数据,并通过RESTAPI提供对保存数据的访问。我预计每小时大约有1000万次测量,我需要存储最近2-3个月的历史记录。存储的测量数据总量可以达到数百亿。数据模型并不复杂,大约有十个表。不计划编辑,只清理过时数据和清空。我计划使用Postgres作为数据库管理系统 在存储数据时,可以检索数据(使用时间或空间过滤器)或用于创建聚合数据产品。尽管性能调整、使用索引和优化查

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

我正在用Java开发一个SpringBoot应用程序来收集和保存测量数据,并通过RESTAPI提供对保存数据的访问。我预计每小时大约有1000万次测量,我需要存储最近2-3个月的历史记录。存储的测量数据总量可以达到数百亿。数据模型并不复杂,大约有十个表。不计划编辑,只清理过时数据和清空。我计划使用Postgres作为数据库管理系统

在存储数据时,可以检索数据(使用时间或空间过滤器)或用于创建聚合数据产品。尽管性能调整、使用索引和优化查询,数据检索可能需要花费大量时间,但这是出于研究目的,我理解拥有这么多记录的代价。到目前为止,一切都很清楚

另一方面,必须立即获取最新的测量结果(例如,在过去十分钟内收集的数据)。嗯,尽可能快。这些数据必须由RESTAPI提供,并在前端应用程序中显示为实时更新的图形。显然,从一个包含数十亿条记录的表中检索最后几分钟的数据将花费时间,这对于表示来说是不可接受的

对于这种情况,典型的解决方案是什么


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

我找到了一个与我的案例完全匹配的多数据源解决方案。本书的作者正在处理一个项目“其中高性能需要内存中的数据库,存储需要持久数据库”