I'm not an expert on couchbase (and neither on RethinkDB, to be frank, though I am a huge fan), but here's what RethinkDB has going for it:
- Changefeeds - easily open a persistent connection to the server and get updates when the results of an almost arbitrary query changes.
- Joins
- Expressive query language that is pretty functionally minded, really shines in their clojure/haskell drivers
- Excellent client libraries, well maintained
- Geospatial queries/objects
- Amazing admin interface (it has been amazing for a long time, too, not a recent change)
- First class consideration of replication & sharding (it is not a bolt-on in any way shape or form)
- API-driven cluster configuration
- API driven permissions management (this is relatively new)
- Excellent, easy to follow documentation
There are more things, but this is just what I can think of off the top of my head.
The team at RethinkDB is also just great -- I've met them in person and gotten help from them and they're straight shooters.
They've also got this great project coming up called Horizon: https://www.youtube.com/watch?v=Sb1lH5mvYmU
Also they have a video up with a member of the team building a realtime game with React Native: https://www.youtube.com/watch?v=xRK0SYSgVF0
Maybe someone who is very familiar with couchbase can help make a list... I'll start it off:
- Custom query language
- First class consideration for scale -- replication and sharding
Firstly, regarding the marketing, it may not have been to many people's tastes - but it definitely worked, and achieved a lot of what was set out in terms of raising the awareness of what was a decent product that wasn't as well known as its competitors. There may be cases where people avoid it because they don't like the marketing, but the reality, having seen its effect, is they are in the minority, and would probably serve themselves better by assessing products based on technology rather than spiel.
Now, on the actual technology!
What Couchbase has historically been good at is highly scalable Key-Value access, at very high performance and low latency. Performance is comparable to Redis, but CB much more mature sharding, clustering and HA. e.g. fully online growing/shrinking of cluster, protection from node failures, rack/zone failures and data center failures. Redis may be a good fit for single-machine caching situations, and also has its own advantages in terms its datastructures support, etc.
Quality of SDK's is pretty subjective, but I'd say the 2.x re-write of Couchbase SDK's makes them very solid. The Java SDK in particular is extremely good both in performance and by providing native RxJava interfaces.
In terms of query interface, there's geospatial and a new freetext capability on the way.
Couchbase chose down to go down the route of a SQL based interface as their main query language. This seems to be a bit love/hate with developers with some delighted and some perplexed. Maybe for devs it should really be about higher level interfaces like Spring are increasingly important anyway?
The native interface being SQL based is usually very popular with the BI / Reporting side of things.
Changefeeds (continuous query?) is a feature not in Couchbase which I would very much like to see in the future. One thing I would say is that it's something you have to be very careful in the design of to ensure scalability and performance. Consistency is something which would obviously need thought as well.