如何从云缓存数据库
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/等),您可以在服务器启动时将其拉入订阅数据库。您可以通过决定导出内容的频率来决定可接受的陈旧程度。
或者,如果您需要更实时的服务器启动转储,我会使用相同的方法,但不是推送,而是拉取。请求数据库转储,阻塞直到完成,然后让主服务器响应转储位置而不是数据本身。
无论解决方案如何,当客户端服务器启动时,您都将处于一致状态。
【讨论】:
以上是关于如何从云缓存数据库的主要内容,如果未能解决你的问题,请参考以下文章