The days of the single source of truth, one database for the entire enterprise, are over. Now even a relatively simple mobile application demands more than one database. The good news is that we have entered a golden age of open-source NoSQL databases. Developers have great and readily available open-source technologies with robust communities behind them at their fingertips.
The difficulty is knowing which database is right for which use case. While a number of options are available, according to Redis Labs, these are five NoSQL databases that developers should be familiar with.
Redis Labs offers enterprise-class Redis and Memcached for developers. Their fully-managed cloud services – Redis Cloud and Memcached Cloud – deliver top performance in a highly-available, infinitely scalable, predictable and stable manner — freeing developers from dealing with nodes, clusters, scaling, data-persistence and failure recovery.
Choosing a NoSQL Database
Click through for the top five NoSQL databases and how best to use them, as identified by Redis Labs.
MongoDB is a document-oriented database that natively supports JSON format. It is extremely easy to use and operate so it is very popular with developers and doesn’t require a database administrator (DBA) to bootstrap. MongoDB is quite functionally robust and allows for flexible replication for sharding across nodes. With MongoDB, there is multi-version concurrency control for keeping older versions of data available to ensure consistency in complex transactions.
As such, MongoDB is suitable for scenarios with high write loads and Big Data volumes. Replication, sharding and data center awareness enable it to remain available in unreliable environments (e.g., the cloud). It offers dynamic queries and powerful aggregates, index support and map/reduce functions. Being a NoSQL database, it is also very convenient to use early in the development phase, when a schema has not been fully established.
Redis is one of the fastest datastores available today. An open source, in-memory and NoSQL database known for its speed and performance, Redis has become popular with developers and has a growing and vibrant community. It features several data types that make implementing various functionalities and flows extremely simple.
To deliver top performance, Redis stores all data in RAM. Because Redis is king when it comes to speed and performance, the database is best used when time is an issue, including job management, queuing, real-time analytics, messaging, in-app social capabilities and geo search.
Created at Facebook, Cassandra has emerged as a useful hybrid of a column-oriented database with a key-value store. Grouping families gives the familiar feeling of tables and provides good replication and consistency for easy linear scaling. Cassandra is most effective when used for managing really big volumes of data (the kind that don’t fit in a single server), such as Web/click analytics and measurements from the Internet of Things – writing to Cassandara is extremely fast. It provides a familiar interface (CQL, reminiscent of SQL) and the learning curve isn’t too steep for users. Cassandra also comes with tunable consistency settings.
CouchDB gets accessed in JSON format over HTTP. This makes it simple to use for Web applications. Perhaps not surprisingly, CouchDB is suited best for the Web with some interesting applications for offline mobile apps. Developers should look to CouchDB when seeking a reliable database – every change is stored on disk as a document revision, so redundancy and conflict resolution are well addressed. By using multi-version concurrency control (MVCC), writes do not block reads. Additionally, CouchDB boasts a strong replication model that allows for Master-Master replication and filtered replication streams. This robust replication model opens up interesting possibilities for scaling the database.
Deep down in Hadoop is the powerful database, HBase, that spreads data out among nodes using HDFS. It is, perhaps, most appropriate to use for managing huge tables consisting of billions of rows. Being a part of Hadoop, it allows using map/reduce processing on the data for complicated computational jobs, but also provides real-time data processing capabilities.
Both HBase and Cassandra follow the BigTable model. As such, HBase can be scaled linearly simply by adding more nodes to the setup. HBase is best suited for real-time querying of Big Data.