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:
|Licensing||Proprietary||Open-Source Community and Enterprise editions|
|Scalability||Highly Scalable||Highly Scalable|
|Deployment||AWS only, fully managed||
|Backup & Restore||
|Querying||Limited key-value and range queries|
|Data Center Replication||
|Sharding||Sharding is automatically done under the covers||Sharding is automatically done under the covers|
|Security||Provided by normal AWS security measures|
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.