Weekly CouchDB meeting – (summary)
- BigCouch Merge: windsor-merge is essentially complete [update Aug 28: by the time this post was published, it has just been completed], this work will be merged to the master branches of all affected repositories in the next days. After the merge to master, help with testing will be needed.
- Apache CouchDB 1.6.1: release candidate 4 (rc.4) is being tested at the moment and looks good so far.
- CouchDB 2.0 scope:
- CouchDB 2.0 is likely to be the result of merges of code from BigCouch and rcouch’s view changes (so far, this is only a prediction, it hasn’t been decided yet)
- additional, larger changes will be worked on later
- Fauxton: a lot of work has been done lately and will be included soon
- HTTP refactoring: ongoing discussion which HTTP server to move forward with. Pros and Cons of the options will be written down so they can be discussed on the mailing list and voted on eventually.
Vote (ongoing): Release of Apache CouchDB 1.6.1-rc.4 (will be released as Apache CouchDB 1.6.1) (see thread)
The release candidate is out. Please help us test it out! You’ll find details on the testing procedure here.
Best Practices on Replication (see thread)
Question: A CouchDB user asked about the best setup to assure consistency.
Answer: Eventual consistency is ensured by CouchDB’s design. Users just have to take care of resolving conflicts manually (eventually correcting the CouchDB assumption on which document version prevails).
Recommended rev_limit value (see thread)
Question: A user asked if reducing the rev_limit value had a positive impact on performance, and, if so, which was the recommended value.
Answer: Low values are not recommendable, because during replication that would mean users are assuming that their nodes are replicating nicely all the time, without network interruptions or limitations. If rev_limit is low and, for any reason, users miss to replicate a number of revisions higher than the limit, they’ll run into trouble. If users are constantly writing the same document many times, the rev_limit should be high. If the writes operations spread around a large number of documents, the revision numbers won’t grow so quickly and thus rev_limit can be lowered.
Deleted documents being replaced by previous versions (see thread)
Setup: CouchDB 1.5.0 with master-master replication.
Question: sometimes a document has multiple revisions stored,
and when deleting the most current one, a previous one replaces it
and becomes available.
- What’s happening here is that the document is conflicted. That is, there are multiple ‘latest’ revisions to choose from. In this situation, CouchDB chooses one of them to present to the user when they do GET /dbname/docid. When they then delete that revision, they are promoting one of the others.
- The common way to introduce conflicts is to edit the same document at multiple locations and then replicate, which would appear to be the setup in this specific case.
- It is only non-latest (the CouchDB-term is “non-leaf”) revisions that are removed by compaction, CouchDB preserves all of the latest revisions (as we do not know which edit or edits you want to keep).
- CouchDB does not resolve conflicts, it preserves them until you resolve them (e.g. by deleting them).
- If i user is updating the same document at two different sites, and then replicating them, they will introduce conflicts. This is something they need to account for in their application. If user A updates document sample on site 1 and user B updates document sample on site 2 then, after replication, both sites will present either user A or user B’s update, and the other is a losing their revision (preserved but hidden).
Rewriting the CouchDB HTTP Layer (see thread)
A discussion on rewriting the CouchDB HTTP layer has been started this week, you can find the initial email with detailed suggestions and notes here. The general idea behind the rewrite is i.a. to make the code easier to test, remove unnecessary code duplication, organise the code even better and make it easier to write plugins – thus, to make it easier for developers to contribute.
The discussion is still ongoing.
Releases in the CouchDB Universe
- lockit-koa-couchdb 1.0.0 – Lockit CouchDB adapter for Koa
- couchdb-endpoint – PHP endpoint for CouchDB replication with about any backend
- add-cors-to-couchdb 0.0.1– add CORS to CouchDB
- ember-pouch 0.1.4 – PouchDB / CouchDB adapter for Ember data
- couch-proxy-auth 1.0.0 – creates CouchDB Proxy Authentication Headers
- couchdb-rev 0.0.3 – a script that will let you setup revisions for couchdb designs
- nano 5.11.0 – minimalistic CouchDB driver for Node.js
Opinions and other News in the CouchDB Universe
- CouchDB’s Website is listed one example of beautiful sites for Open Source Projects
- A CouchDB Replication Endpoint in PHP (talk, slides)
Use Cases, Questions and Answers
- Use Case: A Simple Blog with CouchDB, Bogart, and Node.js – How To Node
- Stack Overflow: Equal distribution of CouchDB document keys for parallel processing
- Stack Overflow: CouchDB Insert and Update Performance
- Stack Overflow: Does CouchDB have a “bulk get all revisions” feature?
- Stack Overflow: How to manage multiple users at a time in elastic search with CouchDb for searching?
- Stack Overflow: Handle 409 conflict document Node.js nano CouchDB
- Stack Overflow: Upgrading Couchdb 1.3 to 1.5 with Data?
no public answer yet:
- Stack Overflow: shutting down view group server monitored db is closing (CouchDB)
- Stack Overflow: How to stop non-admin users from viewing your CouchDB database through Futon?
- Stack Overflow: re-indexing compacted couchdb views
- Stack Overflow: Error occurred while writing a data into CouchDB
For more new questions and answers about CouchDB, see these search results.
If you want to get into working on CouchDB:
- We have an infinite number of open contributor positions on CouchDB. Submit a pull request and join the project!
- Do you want to help moving the CouchDB docs translation forward? We’d love to have you in our L10n team! See our current status and languages we’d like to provide CouchDB docs in on this page. If you’d like to help, don’t hesitate to contact the L10n mailing list on email@example.com or ping Andy Wenk (awenkhh on IRC).
We’d be happy to have you!
- September 15, Calgary, Canada: Introduction to Cloudant, a fully-managed NoSQL database-as-a-service (DBaaS)
Job opportunities for people with CouchDB skills
- Senior Java Developer, Cluj-Napoca, Romania
- Senior PHP Developer, London, United Kingdom
- Tech Lead – DevOps, San Francisco, CA, USA
Time to relax!
- “Like an over-stretched hard-drive when we take no time off we get pretty cranky and slow. To reboot I’ve had to really think hard about what I love doing and built this into my weekends.” – Take a break: how I learned to relax and reboot
- “Being nice is incredibly overrated. I have no desire to be nice, and I think a culture of “nice” is counter to a culture of consent and boundaries. I prefer to be kind and empathetic – these are things to aspire to.” – On the importance of boundaries and consent