By leveraging database for IoT, organisations can efficiently store, process, analyse, and derive insights from the massive volumes of data generated by IoT devices. We take a look at how to implement the MongoDB database in an IoT environment.
The Internet of Things (IoT) generates vast amounts of data from various sources, including sensors, devices, and applications. Databases provide a structured and organised way to store this data.
IoT applications often need to access specific subsets of data quickly and efficiently. Databases offer indexing and querying mechanisms that optimise data retrieval performance. They enable developers to define indexes on particular fields or attributes, improving the speed of data retrieval operations and reducing the overall latency in accessing IoT data.
Thus, by leveraging databases in IoT environments, organisations can effectively manage and harness the vast amounts of data generated by IoT devices. Databases provide data storage, processing, integration, security, scalability, and historical analysis capabilities that are essential for unlocking the full potential of IoT applications and deriving actionable insights from IoT data. Figure 1 shows the various sources of data generation in the IoT environment.
![Data generation at different applications of IoT](https://www.opensourceforu.com/wp-content/uploads/2023/07/Data-generation-at-different-applications-of-IoT.jpg)
Comparison of MongoDB, RethinkDB, SQLite, and Apache Cassandra
Popular databases used in IoT applications are MongoDB, RethinkDB, SQLite, and Apache Cassandra. The choice between these depends on specific project requirements. MongoDB and RethinkDB are document databases suitable for handling diverse and evolving data, with MongoDB having broader industry adoption. SQLite is a lightweight embedded database for local storage, while Cassandra excels in high scalability, availability, and distributed architectures. Table 1 compares these four databases critically.
Table 1: MongoDB vs RethinkDB vs SQLite vs Apache Cassandra
Criteria | MongoDB | RethinkDB | SQLite | Apache Cassandra |
Latest version | MongoDB 6.0 | RethinkDB 2.4.2 | SQLite 3.42.0 | Apache Cassandra 4.1 |
Released in | 2009 | 2012 | 2000 | 2008 |
Supportable programming languages | C++, Python, JavaScript | C++, Python, JavaScript | Python, Java, C#, Ruby, PHP | C++, Java, Python, Go, Node.JS |
Database model | Supports JSON | Supports JSON | Follows a relational data model and supports SQL queries. | Follows NoSQL database |
Key features | Autosharing, indexing | Distributed database, automatic sharding, and replication | Serverless, flexible | Easy data distribution, fast linear-scale performance |
Advantages of using in IoT applications | Document-oriented, flexible schema | Adaptable query language, plug-and-play functions | Enables small memory footprint, no dependencies | Fault-tolerant, scalable |
Installation of MongoDB on Windows
MongoDB 6.0 is the latest community edition version and can be downloaded on the official URL of MongoDB. To install MongoDB on Windows, a 64-bit system is required. The steps are given below.
Step 1: Download the MongoDB community .msi installer zip package and unpack it in your system directory.
Step 2: Next, navigate to the download directory; there should be an installer file called .msi. From the admin user, the installation wizard will be launched by double-clicking the .msi file, as shown in Figure 2.
![Setup wizard of MongoDB installation](https://www.opensourceforu.com/wp-content/uploads/2023/07/Setup-wizard-of-MongoDB-installation.jpg)
Step 3: After running the .msi installation file of MongoDB, choose the complete setup type. Configure and start MongoDB as a Windows service during the installation, and the MongoDB service will start on successful installation, as shown in Figure 3.Step 4: Now, the user can edit the system environment variable from the ‘program files’ of the C drive.
Step 5: The MongoDB services can now be accessed at the local host, as shown in Figure 4.
![Access the MongoDB services from the local host](https://www.opensourceforu.com/wp-content/uploads/2023/07/Access-the-MongoDB-services-from-the-local-host.jpg)
Popular commands used in MongoDB for IoT
MongoDB offers a rich set of commands that can be useful for IoT applications. Table 2 lists some popular MongoDB commands commonly used in IoT scenarios.
Table 2: List of MongoDB commands used in IoT
Command | Description |
db.createCollection (“sensors”) | Creates a collection of ‘sensors’ to store data |
db.insertOne | Adds a document to a collection |
db.insertMany | Adds multiple files to a collection |
db.sensors.find ({ sensorId: s }) | Retrieves sensor readings where the sensor ID is ‘s’ |
db.aggregate | Performs aggregation operations on the data |
db.updateOne | Updates a filter-matched document |
db.deleteOne | Deletes a filter-matched document |
db.deleteMany | Deletes multiple filter-matched documents |
Programming MongoDB using Python
To work with MongoDB in Python, you can use the PyMongo library, the official MongoDB driver for Python. PyMongo provides a simple and intuitive API for interacting with MongoDB from your Python code.
Step 1: Install PyMongo. PyMongo can be set up with the help of pip, Python’s package manager. This can be done using the following command:
$ pip install pymongo
Step 2: The PyMongo package can now be imported by running the following command:
$ import pymongo
Step 3: To work with MongoClient, we need to connect to the default host and port using the following command:
$ client = pymongo.MongoClient(“mongodb://localhost:27017/”)
Step 4: MongoDB allows multiple databases to coexist on a single server. Databases in PyMongo are accessed via MongoClient instances with dictionary-style access:
$ db = client[“mydatabase”]
Step 5: Now, access a collection within the database:
$ collection = db[“yourcollection”]
A collection in MongoDB is a set of related documents that functions similar to a table in a traditional database. Python’s method for accessing collections is identical to that used for databases.
Step 6: In this step, you can insert a document into a collection. Data in MongoDB is represented (and stored) using JSON-style documents. In PyMongo, we use dictionaries to represent documents. As an example, the following dictionary inserts a document in a MongoDB collection:
$document = {“Name”: “OSFY”, “Month”: 07} $ collection.insert_one(document)
MongoDB is a NoSQL database widely used because of its document-oriented design. Built with horizontal scalability across multiple servers, it can easily handle massive amounts of data. Industries using the Internet of Things often need to process and analyse streaming data in real-time. MongoDB’s real-time data processing, querying, and aggregation capabilities facilitate prompt analysis and decision-making.