By: Nolan Lawson
Published: 05 January 2015
A humble release to ring in the new year, PouchDB 3.2.1 is focused on bugfixes and performance improvements. In particular, 3.2.1 boasts some critical fixes for IE11 and node-webkit, as well as a fix for replication of conflicted documents.
Gotta go fast
For performance, the biggest gains will be seen in secondary indexes and auto-compaction. Auto-compaction now occurs in the same transaction as bulkDocs
, which speeds up the build time for secondary indexes (since they use auto-compaction under the hood). This also means that pouchdb-quick-search will be faster.
In addition, the LevelDB adapter now makes all its bulkDocs
writes inside a single batch
operation. This means that PouchDB can now provide the same consistency guarantees in both Node.js and the browser, since the LevelDB adapter is using the same transactional model as IndexedDB and WebSQL. Also, using a single batch
boosts the write performance of LevelDB.
A performance comparison between 3.2.0 and 3.2.1 can be found in this report. The build times for secondary indexes have been reduced by 37%-57%, depending on the browser and environment.
CouchDB 2.0 is coming
A big shout-out this release goes to Will Holley, who has been tirelessly fixing bugs in the PouchDB test suite so that it can pass against CouchDB master. Not only does this improve PouchDB's test coverage against Cloudant, but it also better prepares us for the (soonish!) release of CouchDB 2.0. Thanks, Will!
PouchDB Server is getting awesome
And if you haven't checked out PouchDB Server or express-pouchdb recently, you'll be pleased to see that Marten de Vries has made a ton of improvements over there, including cleaner configuration via config.json
, authentication support, a --proxy
option, CouchDB-style logging, "modes" to choose different CouchDB server features, and more. Just $ npm install -g pouchdb-server && pouchdb-server
to try it out!
Full changelog:
Bugfixes
leveldown
is now an optional dependency in Node.js due to build issues with Windows (#3113)- Avoid call stack exceeded errors in the merge algorithm (#2543)
- Properly destroy MemDOWN-based databases (#3144)
- Avoid "too many listeners" errors in
changes()
(#2867) - Non-winning conflicts properly replicated (#3136)
- Fixes for node-webkit (#3229)
- LevelDB uses a read queue to prevent database corruption (#3251)
- Can build and test on Windows (#2143)
- Avoid http header error in IE11 (#3278)
- Blobs are stored more efficiently in Chrome 38+ (#3326 #3325)
- Many fixes to the test suite to better support CouchDB master (#136)
- Fix replication when
skipSetup
is true (#2915) - Fixes for webpack (#3287)
auto_compaction
is correctly reported ininfo()
(#3345)
Performance improvements
- Replication doesn't make unnecessary
allDocs()
calls (#3153) - Replication GET requests issued in parallel (#3015)
- Auto-compaction occurs in same transaction as writes (#3089)
- Formal one-time IndexedDB migration, cleaner schema (#3211, #3182)
- IndexedDB doesn't store duplicated id/rev (#3213)
- Fall back from JSON to vuvuzela to improve parse/stringify (#3188)
- LevelDB makes changes in a single batch (#1738)
Get in touch
Please file issues or tell us what you think. And as always, a big thanks to all of our new and existing contributors!