阅读更多

1顶
0踩

开源软件

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

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

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

  • 级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均

    级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,不平衡电网下的svg无功补偿,级联H桥svg无功补偿statcom,采用三层控制策略。 (1)第一层采用电压电流双闭环pi控制,电压电流正负序分离,电压外环通过产生基波正序有功电流三相所有H桥模块直流侧平均电压恒定,电流内环采用前馈解耦控制; (2)第二层相间电压均衡控制,注入零序电压,控制通过注入零序电压维持相间电压平衡; (3)第三层相内电压均衡控制,使其所有子模块吸收的有功功率与其损耗补,从而保证所有H桥子模块直流侧电压值等于给定值。 有参考资料。 639,核心关键词: 1. 不平衡电网下的SVG无功补偿 2. 级联H桥SVG无功补偿STATCOM 3. 三层控制策略 4. 电压电流双闭环PI控制 5. 电压电流正负序分离 6. 直流侧平均电压恒定 7. 前馈解耦控制 8. 相间电压均衡控制 9. 零序电压注入 10. 相内电压均衡控制 以上十个关键词用分号分隔的格式为:不

  • GTX 1080 PCB图纸

    GTX 1080 PCB图纸,内含图纸查看软件

  • 深度优化与应用:提升DeepSeek润色指令的有效性和灵活性指南

    内容概要:本文档详细介绍了利用 DeepSeek 进行文本润色和问答交互时提高效果的方法和技巧,涵盖了从明确需求、提供适当上下文到尝试开放式问题以及多轮对话的十个要点。每一部分内容都提供了具体的示范案例,如指定回答格式、分步骤提问等具体实例,旨在指导用户更好地理解和运用 DeepSeek 提升工作效率和交流质量。同时文中还强调了根据不同应用场景调整提示词语气和风格的重要性和方法。 适用人群:适用于希望通过优化提问技巧以获得高质量反馈的企业员工、科研人员以及一般公众。 使用场景及目标:本文针对所有期望提高 DeepSeek 使用效率的人群,帮助他们在日常工作中快速获取精准的答案或信息,特别是在撰写报告、研究材料准备和技术咨询等方面。此外还鼓励用户通过不断尝试不同形式的问题表述来进行有效沟通。 其他说明:该文档不仅关注实际操作指引,同样重视用户思维模式转变——由简单索取答案向引导 AI 辅助创造性解决问题的方向发展。

  • 基于FPGA与W5500实现的TCP网络通信测试平台开发-Zynq扩展口Verilog编程实践,基于FPGA与W5500芯片的TCP网络通信测试及多路Socket实现基于zynq开发平台和Vivad

    基于FPGA与W5500实现的TCP网络通信测试平台开发——Zynq扩展口Verilog编程实践,基于FPGA与W5500芯片的TCP网络通信测试及多路Socket实现基于zynq开发平台和Vivado 2019软件的扩展开发,基于FPGA和W5500的TCP网络通信 测试平台 zynq扩展口开发 软件平台 vivado2019.2,纯Verilog可移植 测试环境 压力测试 cmd命令下ping电脑ip,同时采用上位机进行10ms发包回环测试,不丢包(内部数据回环,需要时间处理) 目前实现单socket功能,多路可支持 ,基于FPGA; W5500; TCP网络通信; Zynq扩展口开发; 纯Verilog可移植; 测试平台; 压力测试; 10ms发包回环测试; 单socket功能; 多路支持。,基于FPGA与W5500的Zynq扩展口TCP通信测试:可移植Verilog实现的高效网络通信

Global site tag (gtag.js) - Google Analytics