As the Internet of Things (IoT) continues to grow, so does the number of “things” being managed. With tens of millions of things, ranging from sensors to devices, already in use, we are now beginning to see the imminent and increased scaling of the IoT.
And while the number of things – 25 billion connected devices by 2020, according to Gartner – is certainly of interest, it is what we are doing with all the data collected from these devices that has captured the attention of industry experts. We are no longer just connecting devices and sending exception-based messages such as alerts, but we are sharing, processing, and analyzing the data, unearthing trends, and gaining incredibly valuable business insight and doing so in real time.
In light of this evolution, a key component of any IoT application development strategy must be database management. As developers start to lay the groundwork for their application development, choosing the appropriate database type is a vital component for ensuring success. Different applications, by their nature, have different requirements.
There are two main types of database systems – relational and NoSQL databases:
· Relational databases are the most common databases in use today, and have been around for a few decades. They are known for being straightforward, flexible, and easy to manage, organizing data neatly by tables of columns and rows with records in each. Each row has a unique key, which simplifies linking data to different tables. Data schemas are fixed and fields must conform to certain characteristics defined by the database administrator. This uniformity and indivisible nature are imperative for transactions in industries such as finance and banking where data must be identical on both the sending as well as the receiving ends (these transactions – called ACID transactions – protect the integrity of the data). Relational databases are often used for billing and inventory data – low-volume, low-velocity transactions.
The downside: Data queries can be slow because they are waiting on results from tables that may have numerous relationships. Relational databases can also be very expensive because although they scale up efficiently (more storage added to a single server), they do not scale out horizontally very well across multiple, smaller servers. As your data grows exponentially, so do your expenses.
· NoSQL databases are the relative “new kid on the block.” and were created to address some of the shortcomings of relational databases. While relational databases are rigid, NoSQL databases allow data to be more free-form and unstructured. NoSQL allows different types of data, gathered from a wide variety of devices, to be collected, stored and analyzed as a whole, potentially in real time. When you examine the volume and types of data that a single company might gather over time, it’s clear where NoSQL databases might come into play. We can use the example of a water management firm, where in the short term sensors might gather data to notify customers of water leaks, broken pipes, and emergencies. However, over time the data helps them determine usage trends to help reduce overall consumption.
But NoSQL has its downsides as well. It’s not equipped to handle the analytic processing of the data or the joins, which is the retrieval ofdata from two or more tables based on the logical relationships between them. Additionally, the security and reliability of ACID transactions are not available through many NoSQL database options.
So which database is best? The answer depends on a variety of factors, including the industry your company is in, the complexity of your applications, and the data gathered. In the end, you may determine that it is not necessarily an either/or, but rather a hybrid solution that employs both relational and NoSQL databases that may be the best solution for your company. One thing to keep in mind is the level of flexibility required to support changes in the underlying data models of your application as your company’s needs grow and change.