Survey of NoSQL Databases

Unlike SQL databases, for different project use cases there is no “one size fits all” with NoSQL.The four basic types of NoSQL databases are Key-Value Stores, Document Stores, Column Stores, and Graphs. This should be your starting point when choosing a database. But where to from there?Trying to determine the quality of NoSQL databases does not have a lot of coverage in current literature. Why? Because it’s difficult. And hey, us engineers are lazy.Luckily, some of those interested in bettering the field have started to develop an appraisal system, and have evaluated several of the more popular NoSQL databases to help us out a little.

What Do You Want From Your NoSQL Database?

So, what’s important in a NoSQL database? Well, that depends on the project, of course. Here are the main qualities or elements that people might look for in a NoSQL database:

  • Consistency
  • Durability
  • Querying method
  • Concurrency control
  • Partitioning scheme
  • Native partitioning

There is also the “CAP theorem”. The CAP theorem is somewhat akin to the project management triangle: fast, good, cheap – pick two. However, with NoSQL databases, you have Consistency, Availability, and Partition Tolerance (pick two). While these all may be configurable, there will be trade-offs that you will need to make. All NoSQL databases will mainly straddle two of the three elements, so it’s important to choose the right one depending on your project constraints.You might also like to think about security. If you’d like to read more about various security concerns of some of the NoSQL databases listed below you should check out A Survey on Security of NoSQL Databases, from the April 2016 edition of the International Journal of Innovative Research in Computer and Communication Engineering.

Okay, so Tell Me Which NoSQL Database to Choose Already!

Alright, alright! Here’s the wrap-up of some of the most popular ones, organized by type.Aerospike (Key-Value) : favors Availability + Partition ToleranceConsistency: ConfigurableDurability: Flash or SSD on every node, replicated across other nodesQuerying: Internal APIConcurrencyControl: On read commitPartitioning : Proprietary, with native partitioningVoldemort (Key-Value) : favors Availability + Partition ToleranceConsistency: Repair during read pathDurability: Writes to other nodesQuerying: Put, get, deleteConcurrency Control: MVCCPartitioning: Consistent hashing, with native partitioningCouchbase (Document Store) : favors Consistency + Partition ToleranceConsistency: Eventual Durability : Configurable with user specifications Querying : MapReduce Concurrency Control : MVCC Partitioning : Consistent hashing, with native partitioningCouchDB (Document Store) : favors Availability + Partition Tolerance Consistency : Eventual Durability : Configurable, and writes to at least one node Querying : MapReduce Concurrency Control : MVCC Partitioning : Consistent hashing, without native partitioningMongoDB (Document Store) : favors Consistency + Partition Tolerance Consistency : Configurable Durability : Configurable Querying : MapReduce Concurrency Control : Master/slave situation that has different levels of locking Partitioning : Consistent hashing, with native partitioningCassandra (Column Store) : favors Availability + Partition Tolerance Consistency : Configurable Durability : Configurable Querying : CQL, which is like SQL Concurrency Control : MVCC Partitioning : Consistent hashing, with native partitioningHBase (Column Store) : favors Consistency + Partition Tolerance Consistency : Configurable Durability : Configurable Querying : Internal APO Concurrency Control : MVCC Partitioning : Range based, with native partitioningWhile there’s far more to each of these databases that have been listed above, this should give you a good rule of thumb for what you definitely don’t want to choose. From here, you’ll need to read up more about each of these NoSQL databases to determine if it truly is what you are looking for in your project.Peep them here: Aerospike, Voldemort, Couchbase, CouchDB, Cassandra, and HBase.This article is based on Choosing the right NoSQL database for the job: a quality attribute evaluation, a study published in the Journal of Big Data by João Ricardo Lourenço & co.Everything you need to know about outsourcing technology development Access a special Introduction Package with everything you want to know about outsourcing your technology development. How should you evaluate a partner? What components of your solution that are suitable to be handed off to a partner? These answers and more below.

Conclusion

Let's Talk
Lets Talk

Our Latest Blogs

With Zymr you can