Hacker News new | ask | show | jobs
by jimbokun 4255 days ago
One interesting thing about the legacy of CouchDB is the sync protocol. There are now multiple implementations capable of syncing with each other, making it easy to migrate data to a different provider, even if the underlying implementation is different. I think there have been one or two forks and different service providers, and they can all exchange data without issue, as far as I know.
1 comments

HTML5 - http://pouchdb.com iOS, Android, .NET, Java - http://developer.couchbase.com/mobile Hosted - http://www.iriscouch.com and http://cloudant.com Original - http://couchdb.apache.org

All of these are 100% open source and interoperable.

This is exactly why I went for couchbase and decided to avoid firebase.
Assuming you use PouchDB, how do you avoid syncing the entire database with all users?
database-per-user is a common pattern with CouchDB. If you need to aggregate data across your users for reporting etc then you can use a server-side replication to create a "master" database which is only accessible to your internal users.

You could also use filtered replication but it is: a) not scalable b) not secure (the whole db would still be accessible to all users)

Couchbase has a different spin on this via "channels" though I'm not sure how it interoperates with PouchDB.

Couchbase Sync Gateway's channels are just slices through the data. The mechanism is internal to the Sync Gateway (you write a JS function that says who can see which channels and which channels a doc belongs to.) Replicating clients don't Need to know about this filtering, so channels work great with all flavors of Couch.