BT

PouchDB – a CouchDB-inspired Offline Web Database

by Abel Avram on Jun 07, 2012 |

Inspired by Apache CouchDB, PouchDB (Portable CouchDB) is a small footprint database for web and especially mobile applications that need a browser-based storage solution that can be used offline. The database can be synchronized with CouchDB databases or other PouchDBs when the device comes back online.

PouchDB is actually a JavaScript library, 131KB in size in compressed form, that currently can perform the following set of basic tasks: create/query/replicate/delete a database, create/fetch/update/delete document(s), retrieving database information and listening to database changes.

The database also comes with an HTTP RESTful adapter that can be used to synchronize its content with other CouchDB/PouchDB databases.

PouchDB uses the HTML5 IndexedDB API to access the underlying storage engine used by the browser, SQLite in Firefox and LevelDB in Chrome. Work is in progress to support Web SQL, Local Storage and node.js. Unfortunately, Web SQL has been deprecated by W3C, but PouchDB will still support it because “mobile browsers support for IndexedDB is lagging far behind Web SQL”, according to Dale Harvey, the creator of PouchDB.

When we asked what are possible scenarios where PouchDB becomes useful, Harvey said:

Any web application (mobile of otherwise) that is required to work offline (which I believe most of them should). Any application that works offline as well as 'in the cloud' is going to have to deal with the issues of syncing data reliably, and so I think could potentially use PouchDB. The obvious examples are things like To-do lists / data management type apps.

Comparing PouchDB with a CouchDB offline installation, Harvey added:

CouchDB works great on the server, however it is obviously impossible to work with in an offline web application. PouchDB is a tiny embeddable CouchDB that can work in the browser and talk to your much more fully featured CouchDB when it is online.

PouchDB is currently in alpha and has been tested with Firefox +12 and Google 19+. It is likely work with all the browsers that implement the IndexedDB API. The code is available on GitHub under an Apache 2.0 license.

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2014 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT