no Per Document Authorization is still my biggest issue with couch that keeps me from using it https://wiki.apache.org/couchdb/PerDocumentAuthorization
Why use CouchDB instead of Couchbase?
Has anyone tried out rxdb on the client with couchdb as server? I'm affraid mostly about the scaling issues when you sync with many clients
I was looking really hard at using CouchDB 2.0 for an offline-first progressive web app. The biggest asset in my opinion of CouchDB is actually PouchDB [1] PouchDB is really great and nicely designed.
However, the showstopper that I hit was that CouchDB still does not support permissions on a per-user basis (even though PouchDB encourages this explicitly [2])
What this means is that if you have a typical system with users and logins, who can only access their own data, and you require some sort of aggregated view where you can view all users data behind some sort of permissions (admin user, etc), you are forced to create a new db for each user in Couch, and then run replication for those users to a separate master.
Think for example if you wanted to store images in CouchDB, and then have some sort of global feed (like instagram)
So, systems with many users (tens of thousands -> millions) would be stuck replicating an equal number of couch databases constantly. Each replica in 2.0 was an erlang thread, and each database is a separate file. Apparently some of the performance issues were fixed in 2.1, but it still requires a physical file per db and continuous replication.
Some promising solutions like envoy [3] from Cloudant, which were based on Mango [4] have been worked on, but don't seem to have much support in the core Couch community and feels to have been abandoned.
Another problem is that you can't really throttle or manage pouchDB <-> couchDB replication very well. Eg, if you have a large-ish database that's out of sync, it's just going to try to download itself as soon as you sync, which isn't very mobile friendly, or "PWA" friendly IMO.
Net result for me was that I just stuck with my Postgres DB, Rails API, and a bunch of Redux/React code to accomplish what I needed.
Still a fan of Couch/Pouch but wouldn't recommend it if your system requires any kind of serious per-user or role-based permissions or aggregated views.
[1] https://pouchdb.com/
[2] https://pouchdb.com/2015/04/05/filtered-replication.html
[3] https://github.com/cloudant-labs/envoy
[4] https://blog.couchdb.org/2016/08/03/feature-mango-query/