I have an IoT use-case (Should I use the MQTT protocol?) and decided to implement the SMACK architecture. I hope, Up and running the SMACK stack would be very much cost. Right now I am not expecting that much data. In future, based on the increase of sensor data I'll implement SMACK stack.
Use case
The IoT devices will send approx. 100k messages/minute to the gateway via repeaters and the gateway will transfer the messages to the cloud. I want to track the employees in an organization. The sensors will be fixed on their ID card. The sensor sends the location related data (approx. 15KB/message) to the gateway via repeaters using BLE. It's for the analytical purpose. After the data passed to the cloud, I'll do some analytics and store into the DB and display on a web page. Based on this analytics data, I'll show the user's current location and also the user's moving locations of a certain passed time span (last 1hr or 2hr or 1day).
I'll do some processing over the data and send it to the front end/DB.
So If I use the below simple architecture with the use of Redis/MongoDB/CouchDB/Any GraphDB NoSQL layer and S3 as the storage to store historical data. So the cost would be very much low.
Workflow:
- Ingest into Redis/MongoDB/CouchDB/Any Graph DB,
- Copy into S3 over time and
- Expire in Redis/MongoDB/CouchDB/Any Graph DB.
So the NoSQL layer will have only the recent data and the S3 will have the historical data.
Question:
What would be the best choice in the NoSQL layer (i.e) MongoDB/Redis/CouchDB/Any GraphDB?