我想给一个带有PostgreSQL数据库100%离线功能的Web应用程序。在理想情况下,数据库应该在每个用户的浏览器中完全复制,并在联机时进行同步。这样可以使用相同的代码与脱机和在线数据库进行通信。我知道PouchDB和CouchDB可以实现这一点,但是还没有找到适用于PostgreSQL的解决方案。这有可能吗?
答案 0 :(得分:12)
简短回答:我不知道目前存在的这类事情。
然而,从理论上讲,这可以起作用......(长答案:)
对于您的应用来说,这样的方法是否切实可行是一个不同的问题,您必须回答。
您可能想知道,例如,“我能用这种方法将现有的复杂模式与多个表同步到客户端吗?”答案可能不是 - leveldown的mysqldown实现使用一个包含三个字段的MySQL表:id
,key
和value
(source),我想任何通用PostgreSQL适配器是类似的(没有什么说你不能只为您的应用程序做一个专用适配器!)。
另一方面,如果要在现有数据库模式上实现与couchdb兼容的API(或子集 - 例如,您可能不需要附件),那么就没有什么能阻止您在客户端上使用PouchDB进行通信直接就好像它是一个真正的CouchDB - 只需弹出URL并调用replicate()
!实现复制协议可能是一项相当大的工作,因为您需要在某个地方跟踪修订等 - 但同样,技术上并非不可能!
还有针对浏览器设计的levelup后端存储的实现。请参阅level.js,这可能是服务器端Postgres levelup后端与浏览器之间同步的另一种方式。
TL; DR :目前正在围绕Javascript数据库进行大量工作。与Postgres同步是不可能的?可能不是。这会是很多工作吗?当然。值得?谁知道,但它会很酷。
答案 1 :(得分:-1)
没有在客户端上安装PostgreSQL?没有。显然你可以缓存数据供离线使用,但是Javscript中的整个RDBMS +过程语言,没有。