阅读更多

1顶
0踩

开源软件

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

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

原文: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

  • 【java毕业设计】新冠疫情下的校园出入系统源码(ssm+mysql+说明文档+LW).zip

    功能说明: 本系统主要包括以下功能模块:个人中心,通知公告管理,用户管理,工作人员管理,进门登记管理,出门登记管理,出入统计管理,外来登记管理等模块。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上

  • param-1.5.1-cp34-cp34m-win_amd64.whl.rar

    PartSegCore_compiled_backend-0.12.0a0-cp36-cp36m-win_amd64.whl.rar

  • yolo算法-分神驾驶数据集-8674张图像带标签-没有安全带-唤醒-昏昏欲睡-安全带-电话-打哈欠.zip

    yolo算法-分神驾驶数据集-8674张图像带标签-没有安全带-唤醒-昏昏欲睡-安全带-电话-打哈欠.zip;yolo算法-分神驾驶数据集-8674张图像带标签-没有安全带-唤醒-昏昏欲睡-安全带-电话-打哈欠.zip;yolo算法-分神驾驶数据集-8674张图像带标签-没有安全带-唤醒-昏昏欲睡-安全带-电话-打哈欠.zip;yolo算法-分神驾驶数据集-8674张图像带标签-没有安全带-唤醒-昏昏欲睡-安全带-电话-打哈欠.zip

  • pgmagick-0.7.5-cp37-cp37m-win_amd64.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

Global site tag (gtag.js) - Google Analytics