FEATURES
Key features of Couchbase vs. Redis + MongoDB
- What’s included
- Built-in cache
- JSON flexibility
- Automatic mobile sync and peer-to-peer sync
- Masterless architecture
- Full SQL querying
- Multi-master geographic replication
- Analytics
- Automatic sharding/partitioning
- Database logic
- Built-in full-text search
- Data structures (queue, set, etc.)
- Multi-dimensional scaling
- Couchbase
- Eventing, UDFs
- Redis + MongoDB
- Redis only
- Requires RedisJSON module
- MongoDB only
- Redis is Lua only
CUSTOMERS
Success stories: Couchbase over MongoDB and Redis
-
"With less than half the servers, we can increase performance and gain a much better scalable architecture."
Amir Ish-Shalom, Sr. Director of Operations, Viber15 billion call and message events/day60% reduction in total servers -
“The most important thing is the multi-dimensional scaling. Having a few nodes for a specific use case is very powerful.”
Jay Duraisamy, SVP, USIS Engineering Leader, Equifax300+ million documents in 40 mins1.5 billion constantly changing records -
“None of the other solutions came even close to Couchbase’s broad enterprise capabilities.”
Aviram Agmon, CTO, Maccabi Health Care2.3 2.3 million customers on a single app0 downtime for thousands of daily connections
CODE SNIPPET
Couchbase's SQL++ and single API excels over Redis/MongoDB
> SQL
// scope/collection allow for more flexible data organization
const bucket = cluster.bucket('accounts-receivable');
const scope = bucket.scope('tenant1');
const collection = scope.collection('invoices');
const result = await collection.get('key');
> SQL
// Redis lacks scope and collection capability
const redisClient = redis.createClient({ ... });
redisClient.connect();
const value = await redisClient.get('key');
> SQL
/* equivalent to the Mongo example */
SELECT SUM(value * volume) AS val, symbol
FROM db.stocks
WHERE symbol IN ( "AAPL", "GOOG" ) AND value > 0
GROUP BY symbol
ORDER BY val DESC, symbol ASC
> SQL
// equivalent to the SQL++ example
db.stocks.aggregate([
{ "$match": {
"$and": [
{"symbol": {
"$in": [
"AAPL",
"GOOG"]}},
{ "value": {
"$gt": 0 }}]}},
{ "$group": {
"_id": {
"symbol": "$symbol" },
"sum(value * volume)": {
"$sum": {
"$multiply": [
"$value",
"$volume"]}}}},
{ "$project": {
"_id": 0,
"sum(value * volume)": "$sum(value * volume)",
"symbol": "$_id.symbol"}}
{ "$sort": {
"sum(value * volume)": -1,
"symbol": 1 }}]})
> SQL
// Redis lacks a complex query language like SQL