Choosing a NoSQL database is way more complicated than selecting an RDBMS, the world of NoSQL database comes in multiple flavors, each one has a specific design focused on solving a different set of problems.

A common comparison and recently also one of the most popular is Couchbase and DynamoDB, that is why I would like to compile here a comparison based on my experience with both, the documentation available and some opinions on StackOverflow and other sites.

Let’s get ready to rumble!

A comparison of apples and oranges

First of all, we are almost comparing apples with oranges here, DynamoDB is a highly scalable key-value store which is eventually-consistent by default. Couchbase, on the other hand, is a consistent, fast and highly scalable key-value store, document database and managed cache.

Of course, the difference between a key-value store and document databases is hard to define at first, as most of the key-value stores also support a data structure like JSON and the document databases naturally can be used as a key-value store. The differences between them will only emerge after you start comparing feature by feature.

 

A quick table comparison

We are going deeper on each topic in future posts, but for now let’s see how a simple and quick table comparing DynamoDB and Couchbase Server looks like:

Feature DynamoDB Couchbase Server
Licensing Proprietary Open-Source Community and Enterprise editions
Type
  • Key-Value Store
  • Limited Document Database
Model
  • Limited data types
  • 400kb max document size
  • Key-value with JSON-Support
Search
  • Elastic Search
Indexing
  • Max of 5 Global and Local secondary indexes per table
  • Hash or hash-range indexes only
Data Integrity
  • Eventually Consistent by default
  • Can be configured to be strongly consistent
  • Eventually Consistent between Regions
Scalability Highly Scalable Highly Scalable
Deployment AWS only, fully managed
Locking Optimistic locking
Backup & Restore
  • Limited standard backup service
  • On-Demand backup is only available in a few regions.
Querying Limited key-value and range queries
Data Center Replication
  • Bidirectional
Throttling
  • Dynamo Accelerator (DAX) for eventually-consistent reads only.
  • Can be tuned by Increasing RCU & WCU
Administration Interface
  • Feature limited cloud administration interface
  • No GUI in the local installation
Sharding Sharding is automatically done under the covers Sharding is automatically done under the covers
Security Provided by normal AWS security measures
Architecture Unknown
Integrations
  • Spark, Hadoop
  • Others not supported by AWS

Conclusion

Comparing Couchbase with DynamoDB makes me feel like comparing apples and oranges,  they clearly are made for different needs:

DynamoDB is essentially a key-value store, which means that it will be a good fit when your application executes very simple queries and stores a small amount of data. Anything other than that, you might consider something else first.

If you don’t care that much about vendor lock-in, DynamoDB can also avoid some headaches in the short/medium term as it is a fully managed database.

TAs mentioned earlier, in terms of affordability, AWS’  DynamoDB pricing model is quite attractive in the beginning — but it can also get out of control. Here are some examples:

  • An instance with 30Kb of Avg. Document Size, 500 Item Read/sec and 50 Item Write/sec will cost you U$ 919 per month.
  • An instance with 100Kb of Avg. Document Size, 400 Item Read/sec and 50 Item Write/sec will cost you more than U$ 3.300 per month, and if your documents are on Avg 200kb it jumps to more than U$ 6.700 not counting backups, etc.

DynamoDB seems to be a good solution for small and straightforward applications like Alexa skills or working together with lambda functions, it can also support your growth as a highly scalable database, just be prepared to open your wallet in that case.

 

Couchbase, on the other hand, is a much better option for applications demanding high performance, consistency and flexible querying. By default, there is a fully managed cache layer integrated under the covers to make your reads and writes really fast, and the data can be easily queried using a SQL-like language called N1QL.

I barely compared Couchbase Lite/Sync Gateway with AWS IoT Rules, as this topic itself deserves a whole new article, but as you might know, Couchbase Lite has a lot of famous use-cases and is widely used in many industries such as gaming, transportation, sales, etc.

Couchbase CE is totally free and all the major releases are launched on the same day for the Community and Enterprise editions. Couchbase EE has a much more flexible and cheaper licensing, as you only pay for your EE servers running in production and we also provide 24/7 support, training, and other benefits.

The community is a big plus and you can easily get help on StackOverflow or on Couchbase’s forums. Moreover, we put a lot of effort to create a nice development environment, well-designed SDKs and a bunch of demo apps, there are +500 of them under couchbaselabs on GitHub.

If you have any questions, tweet me at @deniswsrosa.

Author

Posted by Denis Rosa, Developer Advocate, Couchbase

Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app.

Leave a reply