我想给一个具有PostgreSQL数据库100%离线功能的webapply.在理想情况下,每个用户都应该在浏览器中完全复制数据库,并在联机时进行同步.这样就可以使用相同的代码与离线和在线数据库进行通信.我知道这在PockDB和CouchDB中是可能的,但还没有找到一个可以与PostgreSQL一起使用的解决方案.这有可能吗?
我想给一个具有PostgreSQL数据库100%离线功能的webapply.在理想情况下,每个用户都应该在浏览器中完全复制数据库,并在联机时进行同步.这样就可以使用相同的代码与离线和在线数据库进行通信.我知道这在PockDB和CouchDB中是可能的,但还没有找到一个可以与PostgreSQL一起使用的解决方案.这有可能吗?
简短回答:我不知道现在有这样的事情存在.
然而,从理论上讲,这是可行的...(长长的回答:)
像这样的方法在实际应用中是否实用,这是另一个你必须回答的问题.
例如,您可能会想,"我能用这种方法将一个现有的复杂模式和多个表同步到客户端吗?"答案可能不是这样的——leveldown的mysqldown实现使用一个带有三个字段的MySQL表:id
、key
和value
(source),我想任何通用的PostgreSQL适配器都会是类似的(不过没有任何东西说你不能只为你的应用做一个专用适配器!).
另一方面,如果要在现有数据库模式上实现与couchdb兼容的API(或子集,例如,您可能不需要附件),那么没有什么可以阻止您在客户端上使用PockDB直接与之对话,就像它是一个实际的couchdb一样——只需打开URL并调用replicate()
!实现复制协议可能是一项相当大的工作,因为您需要在某个地方跟踪修订等内容——但从技术上讲,这并非不可能!
还有一些levelup后端存储的实现是为浏览器设计的.参见level.js,这可能是服务器端Postgres levelup后端和浏览器之间同步的另一种方式.
TL;DR:目前围绕Javascript数据库正在做大量工作.与博士后同步是不可能的吗?可能不会.会有很多工作吗?肯定值得的?谁知道呢,但那会很酷.