Do an image search on Bing or Google for “Internet of Things Building Blocks” or similar and you’ll find a plethora of visual depictions of tools and technologies that go into making the entirety of the IoT. A couple of examples can be found at Manuscrypts.com and Techcrunch.com. In short, you can find references to all manner of technology: hardware, wireless/wired infrastructure, cloud, app development frameworks, and more. No doubt, these are needed to manifest the many solutions that fall under the IoT umbrella.
But there’s a glaring omission. Everyone is talking about how the massive volume of data generated by the IoT will be managed, and asking (or proposing solutions for) how we are going to mine this Big Data lake for useful, actionable data. I think we can all agree that, to a large degree, the IoT is all about the data.
Therefore, it’s mysterious that nobody is discussing data management on the so-called edge nodes that make up the IoT. Sure, there will be some cases for which no on-device data management is needed—for example, simple sensors that merely broadcast the value of whatever they’re measuring. Even in this case, though, the gateways that gather and pre-process the sensors’ data will need a database system. For example, a network of temperature sensors would upload highly granular data (e.g. every second). The analytics conducted on the data once it arrives in the cloud, though, might only require the hourly high/low range and median values. The initial analytics should be performed on the gateway.
But a vast number of edge devices will need to store, retrieve and analyze some data right where they sit, before shipping anything “upstream” to gateway or server-based data aggregation points that we usually think of in connection with Big Data. These data-crunching edge devices are more interesting “things” that, in and of themselves, provide value to their users. Things like self-driving cars, smart buildings, forklifts, GoPro cameras, electronic flight bags, and a nearly endless list of other things. These things ingest and produce a respectable amount of data that must be managed on the device, before it ever becomes part of Big Data (cloud-based or otherwise).
That implies that a database management system is needed on devices. And yet, to the extent that “database” is referenced at all in the discussion of IoT building blocks, it’s solely in the context of that Big Data cloud and mining problem, for which many open-source and proprietary solutions exist.
Here’s another exercise: search “big data database vendors” or “big data analytics vendors.” For database systems on edge nodes, the choices are substantially fewer. Too many developers opt for the roll-your-own approach due to a (usually wrong) belief that a DBMS is overkill for their needs, or that a DBMS is too “heavy.” In most cases, neither is true. Database system internals are complex because they need to manage critical capabilities like the ACID (atomicity, consistency, isolation, durability) properties and provide for sophisticated searches. But the good ones hide that complexity from the developer who needs fairly straightforward functionality: create, read, update, and delete (CRUD), and these DBMS do so in a small fraction of the code size most people think of when they hear “database system.”
A widely used (but often invisible, due to its “embedded” nature) sub-set of DBMSs, including McObject’s eXtremeDB, exist to meet on-device data management needs with code footprints of a few hundred kilobytes, at most—hardly heavy. Most of these are mature technologies that have existed for 15 years or more, and therefore represent less risk to a project than a roll-your-own approach, and facilitate the all-important faster time-to-market or time-to-revenue metrics. They can address simple CRUD requirements, but also more sophisticated needs such as for high availability and database clusters.
Steven Graves co-founded McObject in 2001. As the company’s president and CEO, he has both spearheaded McObject’s growth and helped the company attain its goal of providing embedded database technology that makes embedded systems smarter, more reliable, and more cost-effective to develop and maintain. Graves is an advisory board member for the University of Washington’s certificate program in Embedded and Real Time Systems Programming.