gpt4 book ai didi

postgresql - 如何在带有 PostgreSQL 数据库的 Web 应用程序中拥有完整的离线功能?

转载 作者:行者123 更新时间:2023-11-29 11:09:41 25 4
gpt4 key购买 nike

我想为带有 PostgreSQL 数据库的网络应用程序提供 100% 的离线功能。在理想情况下,数据库应该在每个用户的浏览器中完全复制,并在在线时同步。这样就可以使用相同的代码与离线和在线数据库进行对话。我知道这对于 PouchDB 和 CouchDB 是可行的,但还没有找到适用于 PostgreSQL 的解决方案。这有可能吗?

最佳答案

简短回答:我不知道目前存在这样的事情。

但是,理论上,这可以工作...(长答案:)

  1. levelup 编写一个 PostgreSQL 后端(一个存在于 MySQL:https://github.com/kesla/mysqldown)
  2. 连接 pouch-server 以使用 pouchdb 现有的 leveldb 适配器从你的 PostgreSQL 数据库读取/写入(反过来必须配置为使用你的 postgres 后端)。恭喜,您现在可以使用 PouchDB 同步数据了!

这样的方法在现实中是否适用于您的应用程序是您必须回答的另一个问题。

例如,您可能想知道“我是否能够使用这种方法将具有多个表的现有复杂模式同步到客户端?”答案可能不是——leveldown 的 mysqldown 实现使用一个包含三个字段的 MySQL 表:idkeyvalue (source) ,而且我想任何通用的 PostgreSQL 适配器都是类似的(但没有人说你不能只为你的应用程序做一个特殊用途的适配器!)。

另一方面,如果您要在现有数据库架构上实现一个与 couchdb 兼容的 API(或一个子集 - 例如,您可能不需要附件),没有什么能阻止您在客户端上使用 PouchDB 进行对话直接访问它,就好像它是一个实际的 CouchDB - 只需弹出 URL 并调用 replicate()!实现复制协议(protocol)可能是一项相当大的工作,因为您需要在某处跟踪修订等 - 但同样,技术上并非不可能!

还有专为浏览器设计的 levelup 后端存储的实现。请参阅 level.js ,这可能是在服务器端 Postgres 升级后端和浏览器之间同步的另一种方式。


TL;DR:目前围绕 Javascript 数据库开展了大量工作。与 Postgres 同步是不可能的吗?可能不会。工作量会很大吗?确实。值得?谁知道呢,但这会很酷。

关于postgresql - 如何在带有 PostgreSQL 数据库的 Web 应用程序中拥有完整的离线功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19953256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com