0. Time needed to finish reading: 2-3 minutes
#1. A quick introduction
The overwhelming majority of projects, be it web or mobile projects, will require the use of a database technology. Choosing the right database technology is not an easy job and as an application architect you should have a very clear overview on the database engines (with their advantages and disadvantages) available out there. But that is a story for another (more technical) article. For now, let’s try to stay on topic and mention the fact that there are two main types of databases: SQL and NoSQL.
- SQL = relational databases (structured)
- NoSQL = non-relational databases (document-oriented and distributed)
#2. Why noSQL?
Many projects are developed with SQL. Two of the most important SQL database platforms are MySQL (the world’s most popular open source database) and MariaDB (made by the original developers of MySQL). These are commonly used in a mix with PHP or Python, for example. And according to W3techs, PHP is used by 83.5% of all the websites. That is a lot.
At this point, if you’re just reasearching for the differences between SQL and NoSQL, the next piece of information will not help you. On the other hand, if you’re trying to figure out what kind of NoSQL engine would be best for your project, we’ve got you covered.
#3. List of top NoSQL Database Engines
MongoDB is currently the most popular NoSQL platform and it helps companies like Expedia, Forbes, MetLife or TheGuardian extend their services in areas like the Internet of Things or Business Intelligence. This free and open source, cross-platform, document-oriented database is often part of stacks like SAILS and MEAN.
2. CouchDB (Apache)
CouchDB provides an intuitive HTTP/JSON API, while enabling high performance and strong reliability. Just like in the case of other Apache projects, CouchDB has pretty good documentation available.
3. Apache HBase
Yes, another one from Apache. The official site states that HBase’s “goal is the hosting of very large tables – billions of rows X millions of columns – atop clusters of commodity hardware”.
4. Amazon DynamoDB
Amazon DynamoDB provides a cloud-based NoSQL database for applications that need performance at any scale. Users can monitor and scale easily with the help of Amazon Web Services. Supports both key-value and document models. Some of the well-known organisations using DynamoDB are Samsung, Netflix or CapitalOne.
Couchbase helps organizations with a flexible data model, indexing and full-text search. This JSON document support database platform with perform really neat for mobile applications, e-commerce transactions or analytics services.
6. Oracle NoSQL Database
Oracle NoSQL Database is a scalable, distributed NoSQL database, designed to provide highly reliable, flexible and available data management across a configurable set of storage nodes. (from the official website)
7. Cassandra DB (Apache)
We keep reading “Apache” and NoSQL. They surely have some experience with the Database engines world. Cassandra is a decentralized, distributed, column-oriented database engine that provides low latency client access.
When talking about popular Key-Value store implementation systems, we have to mention Redis. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries.
For bigger projects, you’ll often end up a situation when both SQL and noSQL technologies will need to be implemented in a manner that will help the project perform faster and scale better. Databases can get really complicated, really fast, so you should consider proper professional support.
Even if SQL is the most popular option for web and mobile projects, if you want to try to scale fast in a very dynamic fashion and adapt the project (and the project’s code) often, then NoSQL is the right candidate. Also, NoSQL has become more and more popular when developing AGILE (quick iterations, no downtime).
..And just some final mentions
Some mentions here, regarding the content of this article, because the non-relational databases is quite complex:
- NoSQL is an umbrella term
- If you plan on handling a lot of data, paid support/premium solutions are probably the right call (and all of the provides are offering such options)
- there would have been possible to list the NoSQL systems based on their type: Key-Value, Key-Document, Column-Family or Graph, but we preferred publishing an overview, allowing you to chose the platform depending on your project’s needs
Looking forward to hearing your thoughts!