阅读更多

1顶
0踩

开源软件

原创新闻 PouchDB:浏览器端数据库

2016-12-07 10:06 by 副主编 mengyidan1988 评论(1) 有8519人浏览
引用

原文:PouchDB:The JavaScript Database that Syncs!
作者:ouchdb.com 翻译:赖信涛 责编:仲培艺

PouchDB是一个受Apache CouchDB启发的开源JavaScript数据库。可以完美运行在浏览器中。

PouchDB设计的初衷是,帮助Web开发者构建能在本地离线运行的App,一如在线时运行的一样。

它能让应用程序离线时存储数据,并在回到线上时与服务器兼容,同步数据,保持用户数据的同步。

什么是PouchDB?
PouchDB是CouchDB的JavaScript实现,目标是实现可以和CouchDB相媲美的API,可以在浏览器和Node.js运行。

什么是CouchDB?
CouchDB是由Damien Katz于2015年写的NoSQL数据库,现在由Apache软件基金会负责维护。如果你是一个JavaScript开发者,你可能每天都在用CouchDB,因为它的核心技术驱动着npm

Couchbase、CouchDB等都是什么?
现在,有两个数据库的血缘可以追溯到CouchDB:Couchbase,和Cloudant。他们都是从CouchDB分离出来的产品。

然而,这三种数据库都是使用了相同的CouchDBsync协议。这意味着PouchDB可与这三个数据库配合使用。

换句话说,这些数据库像是电话运营商,而CouchDB同步协议是底层的基础技术。

CouchDB的优势:HTTP和sync
现在已经有这么多SQL、NoSQL数据库了:MongoDB、PostgreSQL、MySQL等。那么为什么我们选择实现CouchDB,而不是别的呢?

CouchDB的优势有两点:HTTP和sync。

HTTP:小而简单的协议

当我们使用数据库时,经常需要在数据库和客户端的应用之间写类似转换层的东西,将数据库的查询语句转化成RESTful的HTTP调用。这些工作在编写的每一个App中被一次次开发重复着。

CouchDB将我们拯救了出来!通过我们的客户端App,可以直接和数据库通讯。它使用HTTP作为主要的通讯方式,没有特殊的协议,没有特殊的驱动:只有REST和HTTP。你可以通过你的浏览器,curl或像Postman这样的REST客户端直接和CouchDB连接。

换句话说,CouchDB是真正“为Web而生的数据库”。

Sync:CouchDB的杀手级特性

CouchDB另一个特性是,它从底向上都被设计成完全同步友好的数据库。

举个例子,如果你担心客户端应用的潜在危险,你可以直接在欧洲设一个CouchDB,再在北美搞一个,亚洲搞一个。在这些数据库之间开启双向复制之后,客户端就可以使用其中任何一个。

PouchDb使这一切都可以运行在你的浏览器里。

讨论
PaulMest:我已经使用PouchDB作为React Native应用的数据库6个月了,用SQLite数据库作为后端的存储,这样我们就可以使用设备更多的存储空间,而不只是50M。它工作得非常好,在一个离线缓存中维护数据,然后再同步到Digtal Ocean上的CouchDB 2.0。 让它在React native里工作非常有挑战性。让我们的系统跟上PouchDB的更新也非常有挑战性。实际上我们使用PouchDB 5.4.5,因为6.x版本中有breaking change,我还没有时间去搞明白哪里不兼容。PouchDB社区(尤其是Nolan lawson)非常活跃,给出示例、听取反馈回答问题等都非常积极。

ojanik:我们已经在产品环境中使用PouchDB大约15个月了。当初选择它是因为这是一个绿色软件,它给了我们两个优势:简单的离线支持、实时同步功能,配合后端的程序很方便。因为这个东西实际上就是一个带有本地缓存的Web App,部署新版本非常简单。

在架构方面,我们有大约有250个用户,每个都有独立的Couch数据库。我们还没有评估Couch 2.0,使用的还是Couch 1.6.

然而,我们在使用的过程中,还是遇到了一些问题:
  • 载入时间问题。当你从0开始载入一个数据库时,非常耗时。初始化一个20-30M的数据库大约会花15-30分钟的时间,我们必须周期性地存储dump的文件,这样节省了一些时间。不过我觉得Couch2.0的同步协议已经解决了这个问题;
  • 浏览器限制。当我们超过了浏览器的容量显示(通常是iOS的Safari,50M),我们就不得不采取一些具有创造性的做法。现在我们的方案是,为每一个客户运行两个数据库,一个是完整版本的数据库,另一个只存在7-8天。Pouch向后者同步数据。我们在完整数据库和临时数据库之间周期性地进行过滤复制。在客户端,如果一个客户需要7天之前的数据,就将Pouch切换到在线模式,作为一个库从在线数据库中取得数据;
  • 处理冲突。因为CouchDB/PouchDB是分布式的,所以当用户基于相同的数据版本做了更新时,得当心冲突;
  • 自定义后端逻辑。因为Pouch直接与Couch连接,所以不能在需要时完自定义后端逻辑。我们必须引入一个REST后台通道,以确保我们的后端在需要时运行额外的逻辑。

1
0
评论 共 1 条 请登录后发表评论
1 楼 变脸小伙 2016-12-29 11:02
不会忘记iteye   这篇文章不错 
number  one简单的离线支持、实时同步功能,配合后端的程序很方便。因为这个东西实际上就是一个带有本地缓存的Web App,部署新版本非常简单。
number two开源JavaScript数据库。可以完美运行在浏览器中。
number  three在架构方面,我们有大约有250个用户,每个都有独立的Couch数据库。我们还没有评估Couch 2.0,使用的还是Couch 1.6.




www.baidu.com 贴吧转载   www.topka.cn   南过人  

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • PouchDB:同步的数据库!-开源

    PouchDB 是一个开源的袖珍型 JavaScript 数据库,当它重新上线时可以方便地与服务器同步。 它的灵感来自 Apache CouchDB,所以它被设计为在浏览器中运行良好。 创建PouchDB的目的是使Web开发人员能够构建脱机和联机...

  • pouchdb:-PouchDB是一个袖珍数据库

    PouchDB是一个受启发的开源JavaScript数据库,旨在在浏览器中良好运行。 PouchDB的创建是为了帮助Web开发人员构建脱机工作以及联机工作的应用程序。 使用PouchDB 要开始使用PouchDB,请查看和。 获得帮助 PouchDB...

  • PouchDB:JavaScript同步数据库

    PouchDB是受Apache CouchDB启发为Web设计的一款占用空间少的数据库。PouchDB项目的目标是帮助开发者构建线上和线下都能很好地使用的Web应用程序,在应用程序离线的时候,可以将用户数据保存在本地,当恢复在线状态时...

  • sporran:Dart中类似PouchDB的浏览器应用程序

    Sporran-Dart的类似于PouchDB的数据库客户端 介绍 Sporran是Dart的与相似的实现。 它使用Lawndart(浏览器本地存储客户端)和Wilt(浏览器CouchDB客户端)来允许基于浏览器的CouchDB用户在联机和脱机模式之间转换并...

  • PouchDB:一个开源的 JS 数据库

    PouchDB 是一个受Apache CouchDB启发的开源JavaScript数据库,可以完美运行在浏览器中。设计初衷是,帮助Web开发者构建能在本地离线运行的App,一如在线时运行的一样。 它能让应用程序离线时存储数据,并在回到...

  • 浏览器本地mysql_IndexedDB:浏览器里的本地数据库

    IndexedDB 是什么在现代浏览器的本地存储方案中,indexedDB 是一项重要的能力组成, 它是可以在浏览器端使用的本地数据库,可以存储大量数据,提供接口来查询,还可以建立索引,这些都是其他存储方案 Cookie 或者 ...

  • PouchDB:可随时同步的开源JavaScript数据库

    PouchDB是一个开源的JavaScript数据库,可以运行在浏览器中。PouchDB的数据存储、处理方式受到了Apache CouchDB的启发(CouchDB是一个面向文档的数据库,可通过JavaScript以MapReduce的方式对数据进行查询和索引,...

  • pouchdb-geospatial:PouchDB 地理空间查询插件

    用法 在浏览器中要使用此插件,请将其pouchdb.js在 HTML 页面中的pouchdb.js之后。 该插件有两个未捆绑的依赖项,必须包含Turf和de9im 。 < script src =" https://unpkg.com/pouchdb/dist/pouchdb.min.js " >...

  • PouchDB是一个运行在浏览器中的JavaScript数据库

    PouchDB是一个运行在浏览器中的开源JavaScript数据库灵感来自Apache CouchDB数据库

  • php indexdb,浏览器端数据库存储方案的整理 -- indexDB 和 localStorage

    这也太麻烦了,浏览器里本来就有很好用的数据库。你为什么不尝试一下呢?1. 客户端存储目前有两个方案比较方案优点缺点localStorage简单易用,同步操作存储容量小,一般不超过10MBindexDB接口都是异步的,操作不便...

  • PouchDB:一款受CouchDB启发的离线Web数据库

    PouchDB是受 Apache CouchDB启发为Web设计的一款占用空间少的数据库。它尤其适合于需要基于浏览器的可离线使用的存储方案的移动应用。该数据库可与CouchDB同步,也可与在线设备上的其他PouchDB同步。 PouchDB实际是...

  • 浏览器本地mysql_浏览器里的本地数据库:IndexedDB

    IndexedDB 是什么在现代浏览器的本地存储方案中,indexedDB 是一项重要的能力组成, 它是可以在浏览器端使用的本地数据库,可以存储大量数据,提供接口来查询,还可以建立索引,这些都是其他存储方案 Cookie 或者 ...

  • pouchdb-all-dbs:PouchDB的allDbs()插件

    它通过侦听PouchDB.on('created')和PouchDB.on('destroyed')事件,并维护一个单独的数据库来存储这些数据库的名称来工作。 注意: allDbs()曾经是PouchDB核心的一部分(使用PouchDB.enableAllDbs = true启用)。 ...

  • vouchdb:在 nodejs 和浏览器中为 CouchDB 和 PouchDB 使用相同的基于 promise 的 api

    使用誓言的 couchdb 和 pouchdb api,可在节点和浏览器上部署。 在浏览器中安装 将以下文件的脚本标签添加到您的 html 文件中: jquery.js 任何版本都可以。 src/vow.js 承诺执行。 你将拥有一个新的全球VOW 。 ...

  • pouchdb-authentication:用于PouchDB和CouchDB的用户身份验证插件

    PouchDB身份验证 ... 没错,CouchDB不仅仅是数据库:它还是具有内置身份验证框架的RESTful Web服务器。 它拥有一些一流的安全功能: 自动添加盐和哈希密码 在浏览器中存储cookie 每10分钟刷新一次C

  • Python项目-自动办公-56 Word_docx_格式套用.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

  • 《松鼠》生态性课堂体验教案.docx

    《松鼠》生态性课堂体验教案

  • Java系统源码+智慧图书管理系统

    Java系统源码+智慧图书管理系统 内容概要: 本资源包含了完整的Java前后端源码及说明文档,适用于想要快速搭建并部署Java Web应用程序的开发者、学习者。 技术栈: 后端:Java生态系统,包含Spring Boot、Shiro、MyBatis等,数据库使用Mysql 前端:Vue、Bootstrap、Jquery等 适用场景示例: 1、毕业生希望快速启动一个新的Java Web应用程序。 2、团队寻找一个稳定的模板来加速产品开发周期。 3、教育机构或个人学习者用于教学目的或自学练习。 4、创业公司需要一个可以立即投入使用的MVP(最小可行产品)。

  • 基于ssm+jsp实现的超市管理系统高级版v2-lw.zip

    项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧!

Global site tag (gtag.js) - Google Analytics