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.

[See Also:Apache Zeppelin – Why You Should Use This Tool]

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.

[See Also:Cassandra Case Uses]

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 Tolerance

Consistency: Configurable

Durability: Flash or SSD on every node, replicated across other nodes

Querying: Internal API

Concurrency Control: On read commit

Partitioning : Proprietary, with native partitioning

Voldemort (Key-Value) : favors Availability + Partition Tolerance

Consistency: Repair during read path

Durability: Writes to other nodes

Querying: Put, get, delete

Concurrency Control: MVCC

Partitioning: Consistent hashing, with native partitioning

Couchbase (Document Store) : favors Consistency + Partition Tolerance

Consistency: Eventual

Durability : Configurable with user specifications

Querying : MapReduce

Concurrency Control : MVCC

Partitioning : Consistent hashing, with native partitioning

 

CouchDB (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 partitioning

 

MongoDB (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 partitioning

 

Cassandra (Column Store) : favors Availability + Partition Tolerance

Consistency : Configurable

Durability : Configurable

Querying : CQL, which is like SQL

Concurrency Control : MVCC

Partitioning : Consistent hashing, with native partitioning

 

HBase (Column Store) : favors Consistency + Partition Tolerance

Consistency : Configurable

Durability : Configurable

Querying : Internal APO

Concurrency Control : MVCC

Partitioning : Range based, with native partitioning

 

While 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.

Introduction Package

Zymr blogger

0 comments

Leave a Reply

© 2019, Zymr, Inc. All Rights Reserved.| LEGAL DISCLAIMER | PRIVACY POLICY | COOKIE POLICY