CHALLENGES
7 frequent challenges with Redis/MongoDB
Using MongoDB™ with Redis can enhance performance, but the combination adds significant complexity and might introduce more challenges. Because Redis lacks some features, it often needs additional modules that further complicate the setup.
CHALLENGE #1
Architecture
Redis/MongoDB is very difficult to scale from a single replica set to a fully sharded environment.
CHALLENGE #2
Cost
MongoDB's inability to scale increases operational costs.
CHALLENGE #3
Replication and failover
MongoDB is highly susceptible to data loss and inconsistency.
CHALLENGE #4
Operational overhead
Redis/MongoDB deployments require operations teams with mastery of disparate skill sets.
CHALLENGE #5
Multi-data center deployment
When deployed in multiple geographies, MongoDB can’t perform all writes locally.
CHALLENGE #6
Mobile
Redis lacks a mobile solution, and MongoDB's mobile solution has significant shortcomings.
CHALLENGE #7
Time
Redis/MongoDB is time-consuming to develop, manage, and maintain.
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
// 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');
// Redis lacks scope and collection capability
const redisClient = redis.createClient({ ... });
redisClient.connect();
const value = await redisClient.get('key');
/* 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
// 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 }}]})
// Redis lacks a complex query language like SQL