DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

PouchDB: Version Comparison


Logo v1 logo v2 logo
Description
PouchDB is a free and open-source JavaScript DBMS inspired by Apache CouchDB (document-oriented NoSQL DBMS) that is designed to run inside a web browser. It was designed with the intention of serving web developers and to run smoothly within a browser. Applications utilize a system where, while offline, data is stored locally, then, when back online, the data is synchronized with Apache CouchDB and between clients. Thus, data is synchronized regardless of login context.
  1. https://pouchdb.com
PouchDB is a free and open-source JavaScript DBMS inspired by Apache CouchDB (document-oriented NoSQL DBMS) that is designed to run inside a web browser. It was designed with the intention of serving web developers and to run smoothly within a browser. Applications utilize a system where, while offline, data is stored locally, then, when back online, the data is synchronized with Apache CouchDB and between clients. Thus, data is synchronized regardless of login context.
  1. https://pouchdb.com
History
Start Year 2010
  1. https://github.com/pouchdb/pouchdb/commit/d600081962d3f54b410e5cfcf78cd413ad94abb9
2010
  1. https://github.com/pouchdb/pouchdb/commit/d600081962d3f54b410e5cfcf78cd413ad94abb9
End Year
Twitter URL
Countries United States of America United States of America
Former Names
Website URL https://pouchdb.com https://pouchdb.com
Docs URL https://pouchdb.com/guides https://pouchdb.com/guides
Source Repo URL https://github.com/apache/pouchdb https://github.com/apache/pouchdb
Blog URL
Wikipedia URL https://en.wikipedia.org/wiki/Apache_CouchDB#PouchDB https://en.wikipedia.org/wiki/Apache_CouchDB#PouchDB
Tags
Licenses
Apache v2
Apache v2
Operating Systems
Governance
Project Types
Open Source
Open Source
Supported Languages
Written In
JavaScript
JavaScript
Coding Agents
Developer Orgs
Derived From
CouchDB
CouchDB
Embedded Systems
Inspired By
CouchDB
CouchDB
Compatible With
Hosted Services
Acquisitions
Checkpoints
PouchDB allows users to enable or disable replication checkpoints (which would be modified based on system performance goals and/or usage), which are used for synchronization across the local and remote servers.
  1. https://pouchdb.com/2017/07/13/pouchdb-6.3.0.html
PouchDB allows users to enable or disable replication checkpoints (which would be modified based on system performance goals and/or usage), which are used for synchronization across the local and remote servers.
  1. https://pouchdb.com/2017/07/13/pouchdb-6.3.0.html
Compression
PouchDB doesn't currently support compression by default, however there is a plugin (Transform Pouch) that allows for compression of data.
  1. https://github.com/pouchdb-community/transform-pouch
PouchDB doesn't currently support compression by default, however there is a plugin (Transform Pouch) that allows for compression of data.
  1. https://github.com/pouchdb-community/transform-pouch
Concurrency Control
Multi-version Concurrency Control (MVCC)
PouchDB's concurrency control policy is multi-version concurrency control, allowing consistency of reads.
Multi-version Concurrency Control (MVCC)
PouchDB's concurrency control policy is multi-version concurrency control, allowing consistency of reads.
Data Model
Document / XML
PouchDB uses an unstructured document data model, where documents are JSON serializable. It also supports attachments, which store binary data.
  1. https://pouchdb.com/faq.html#data_limits
  2. https://pouchdb.com/guides/documents.html
Document / XML
PouchDB uses an unstructured document data model, where documents are JSON serializable. It also supports attachments, which store binary data.
  1. https://pouchdb.com/faq.html#data_limits
  2. https://pouchdb.com/guides/documents.html
Foreign Keys
Not Supported
  1. https://db-engines.com/en/system/PouchDB;Tibero
Not Supported
  1. https://db-engines.com/en/system/PouchDB;Tibero
Hardware Acceleration
Indexes
B+Tree
Starting with version 2.2.0, PouchDB supports secondary indexes using B-trees. It supports an ID-based index by default.
  1. https://github.com/apache/pouchdb/tree/master/packages/node_modules/pouchdb-find
B+Tree
Starting with version 2.2.0, PouchDB supports secondary indexes using B-trees. It supports an ID-based index by default.
  1. https://github.com/apache/pouchdb/tree/master/packages/node_modules/pouchdb-find
Isolation Levels
Not Supported
Not Supported
Joins
Not Supported
PouchDB does not support joins since it uses a document-based data model. To mimic the existence of joins, the Relational Pouch plugin can be used. It enables PouchDB interaction as if it were a relational database. Regardless, the joins used here are actually created by additional requests (instead of classic join algorithms).
  1. https://github.com/pouchdb-community/relational-pouch
Not Supported
PouchDB does not support joins since it uses a document-based data model. To mimic the existence of joins, the Relational Pouch plugin can be used. It enables PouchDB interaction as if it were a relational database. Regardless, the joins used here are actually created by additional requests (instead of classic join algorithms).
  1. https://github.com/pouchdb-community/relational-pouch
Logging
Not Supported
PouchDB doesn't support logging itself, however different types of logging are used by its various backends. For LevelDB-backed PouchDB (for Node.js adaption), LevelDB which uses logical logging.
  1. https://dbdb.io/db/leveldb
  2. https://pouchdb.com/adapters.html
Parallel Execution
Query Compilation
Query Execution
PouchDB can use map/reduce or create MangoQueries (used to build secondary indexes). Users can create an empty query to speed up the query. By dividing into map and reduce, parallelism can speed up the process.
PouchDB can use map/reduce or create MangoQueries (used to build secondary indexes). Users can create an empty query to speed up the query. By dividing into map and reduce, parallelism can speed up the process.
Query Interface
Custom API
PouchDB utilizes a custom API for its query interface. As it is designed for web browsers, this API supports callbacks, promises, and async functions.
  1. https://pouchdb.com/api.html
Custom API
PouchDB utilizes a custom API for its query interface. As it is designed for web browsers, this API supports callbacks, promises, and async functions.
  1. https://pouchdb.com/api.html
Storage Architecture
Storage Model
Storage Organization
Copy-on-Write / Shadow Paging Indexed Sequential Access Method (ISAM)
When offline, data is stored locally using WebSQL (deprecated) or IndexedDB, depending on the browser. For IndexedDB usage, the method of storage organization is ISAM. When online, data synchs with CouchDB (and other servers). CouchDB storage uses copy-on-write to update database files.
  1. http://blog.nparashuram.com/2011/03/indexeddb-store-in-your-browser.html
  2. https://dbdb.io/db/couchdb
Copy-on-Write / Shadow PagingIndexed Sequential Access Method (ISAM)
When offline, data is stored locally using WebSQL (deprecated) or IndexedDB, depending on the browser. For IndexedDB usage, the method of storage organization is ISAM. When online, data synchs with CouchDB (and other servers). CouchDB storage uses copy-on-write to update database files.
  1. http://blog.nparashuram.com/2011/03/indexeddb-store-in-your-browser.html
  2. https://dbdb.io/db/couchdb
Stored Procedures
Supported
PouchDB allows for stored procedures by using view functions in JavaScript.
  1. https://db-engines.com/en/system/PouchDB;Tibero
Supported
PouchDB allows for stored procedures by using view functions in JavaScript.
  1. https://db-engines.com/en/system/PouchDB;Tibero
System Architecture
Views
Materialized Views Virtual Views
PouchDB supports both materialized (persistent) views as well as virtual (temporary) views. In PouchDB, views are synonymous with indexes (i.e. the same as CREATE INDEX in SQL-based databases). Views store information about a specified (map/reduce) query. In turn, views are stored in design documents. These views are very similar to CouchDB however PouchDB uses ASCII ordering to order view query keys. It also does not support the offset property that CouchDB does. Instead, a skip parameter is used instead of an actual offset.
  1. https://pouchdb.com/2014/05/01/secondary-indexes-have-landed-in-pouchdb.html
  2. https://pouchdb.com/faq.html#couchdb_differences
Materialized ViewsVirtual Views
PouchDB supports both materialized (persistent) views as well as virtual (temporary) views. In PouchDB, views are synonymous with indexes (i.e. the same as CREATE INDEX in SQL-based databases). Views store information about a specified (map/reduce) query. In turn, views are stored in design documents. These views are very similar to CouchDB however PouchDB uses ASCII ordering to order view query keys. It also does not support the offset property that CouchDB does. Instead, a skip parameter is used instead of an actual offset.
  1. https://pouchdb.com/2014/05/01/secondary-indexes-have-landed-in-pouchdb.html
  2. https://pouchdb.com/faq.html#couchdb_differences