如何从其他(Postgres)数据库加载内存数据库中的数据?
Posted
技术标签:
【中文标题】如何从其他(Postgres)数据库加载内存数据库中的数据?【英文标题】:How to load data in in-memory database from other (Postgres) database? 【发布时间】:2021-07-21 19:43:31 【问题描述】:我想将 Postgres 数据库中的表中的数据加载到内存 H2 数据库中。我们在 H2(或任何其他)内存数据库中有这样的功能吗?我正在使用spring boot和hibernate。
我为什么要这样做
对于我们的应用程序,我们需要快速的检索时间,因此我们将使用内存中的数据库作为缓存,并避免每次 API 调用的数据库之旅。我们将在应用程序启动时从实际的 postgres 数据库加载缓存,然后每个 API 调用都会从缓存中读取数据。我们会定期从 postgres 数据库中刷新缓存。
【问题讨论】:
可以使用多个数据源,但您为什么要这样做?我建议将您的开发数据与测试/产品数据分开。不要混合它们..拜托。如果你不混合它们,你也可以避免复杂性。 @AjayKumar 更新了问题(与开发/生产环境无关)。 【参考方案1】:您可以在H2数据库中创建linked table
CREATE LINKED TABLE EXTERNAL_TABLE_NAME('',
'jdbc:postgressql:…', 'user', 'password', 'tableNameInPostgreSQL');
您可以直接使用此链接表,但所有操作都将重定向到 PostgreSQL,并且可能相对较慢。
如果您希望可以在 H2 中使用链接表中的数据副本创建一个普通表:
CREATE TABLE OWN_TABLE_NAME AS TABLE EXTERNAL_TABLE_NAME;
之后不再需要链接表,可以删除:
DROP TABLE EXTERNAL_TABLE_NAME;
此命令只会删除链接,不会删除PostgreSQL数据库中的真实表。
【讨论】:
以上是关于如何从其他(Postgres)数据库加载内存数据库中的数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何从公共服务器 postgres 数据库将数据源加载到网关?
无法使用 JDBCSinkConnector 将数据从 Kafka 主题加载到 Postgres