如何从云缓存数据库

Posted

技术标签:

【中文标题】如何从云缓存数据库【英文标题】:How to cache a database from cloud 【发布时间】:2018-12-28 08:32:17 【问题描述】:

我正在寻找一种将大型数据库从云缓存到本地网络上的主机(比如 X)的方法。云数据库在 Postgresql 中,主机 X 有一个 H2 内存数据库,用于快速访问。

出于我的需要,我需要在主机 X 初始化时从云中下载一个数据库子集。子集数据库取决于主机X发送的规范。例如,如果主机X在network1中,我希望它缓存特定的记录,如果它在network2中,我希望它缓存一些来自云端的其他记录。

主机 X 不可靠,可以随时重启,因此每当主机 X 启动时,都必须构建数据库缓存。我该如何解决这个问题?

我想过在云中构建一个 API 来获取数据库。但是由于必须发送的子集数据库可能很大,我不确定如何实现它。我应该发送一个包含整个子集数据库的大文件还是逐条发送。如果我逐条发送子集数据库记录,我将如何跟踪已发送的记录和未发送的记录。有什么聪明的方法可以做到这一点吗?

【问题讨论】:

【参考方案1】:

一些可能的解决方案,具体取决于您的问题空间。我假设您正在处理缓存这一事实,您可能拥有过时的数据。我建议您定期创建各种子集的导出,并将它们放在一个文件位置(S3/Block Blob/等),您可以在服务器启动时将其拉入订阅数据库。您可以通过决定导出内容的频率来决定可接受的陈旧程度。

或者,如果您需要更实时的服务器启动转储,我会使用相同的方法,但不是推送,而是拉取。请求数据库转储,阻塞直到完成,然后让主服务器响应转储位置而不是数据本身。

无论解决方案如何,当客户端服务器启动时,您都将处于一致状态。

【讨论】:

以上是关于如何从云缓存数据库的主要内容,如果未能解决你的问题,请参考以下文章

php 中如何使用缓存,使用哪种缓存机制最好;

如何清理缓存数据

Hibernate缓存如何实现

缓存同步如何保证缓存一致性缓存误用!

js如何获取缓存

更换缓存时如何输出缓存集中的数据?