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

时间:2013-11-13 12:00:42

标签: postgresql offline pouchdb

我想给一个带有PostgreSQL数据库100%离线功能的Web应用程序。在理想情况下,数据库应该在每个用户的浏览器中完全复制,并在联机时进行同步。这样可以使用相同的代码与脱机和在线数据库进行通信。我知道PouchDB和CouchDB可以实现这一点,但是还没有找到适用于PostgreSQL的解决方案。这有可能吗?

2 个答案:

答案 0 :(得分:12)

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

然而,从理论上讲,这可以起作用......(长答案:)

  1. levelup编写PostgreSQL后端(MySQL存在一个https://github.com/kesla/mysqldown
  2. 使用pouchdb现有的leveldb适配器(后者必须配置为使用postgres后端)连接pouch-server以从PostgreSQL数据库读取/写入。恭喜,您现在可以使用PouchDB同步数据了!
  3. 对于您的应用来说,这样的方法是否切实可行是一个不同的问题,您必须回答。

    您可能想知道,例如,“我能用这种方法将现有的复杂模式与多个表同步到客户端吗?”答案可能不是 - leveldown的mysqldown实现使用一个包含三个字段的MySQL表:idkeyvaluesource),我想任何通用PostgreSQL适配器是类似的(没有什么说你不能只为您的应用程序做一个专用适配器!)。

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

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


    TL; DR :目前正在围绕Javascript数据库进行大量工作。与Postgres同步是不可能的?可能不是。这会是很多工作吗?当然。值得?谁知道,但它会很酷。

答案 1 :(得分:-1)

没有在客户端上安装PostgreSQL?没有。显然你可以缓存数据供离线使用,但是Javscript中的整个RDBMS +过程语言,没有。