Tengo que proporcionar el servicio IoT para mi cliente. Los componentes MQTT, Kafka y Rest Services se utilizarán para ingerir los datos de los dispositivos a la base de datos. Necesito hacer algunos análisis sobre los datos en el backend. El tamaño de los datos sería de 135 bytes / dispositivo y 6000 dispositivos / segundo. He compartido la arquitectura aquí para comprender los requisitos y componentes.
Investigué sobre los almacenes de datos (MongoDB, Postgresql (TimescaleDB), Redis, Neo4j, Cassandra) y todos los proveedores probaron que su base de datos es adecuada para el caso de uso de IoT. Me he confundido acerca del uso de la base de datos probada / más confiable / escalable para IoT.
¿Cuál podría ser la mejor base de datos adecuada para ingerir esta gran cantidad de datos y hacer el análisis?
¿Hay algún punto de referencia probado para la base de datos adecuada para el IoT?
Por favor dé sus pensamientos y sugerencias.
fuente
Respuestas:
Usted está limitado a cualquiera de las bases de datos NoSQL, porque cualquier base de datos SQL no le permitirá 6K TPS directamente en el servidor ni podrá usar ningún servicio en la nube SaaS o plataforma ya especializada en este tipo de operaciones, por ejemplo, recibir datos telemáticos a través de MQTT / Kafka, divídalo y almacene para estos 6000 dispositivos y proporcione API REST simple para acceder a los datos de telemetría. Como flespi o lo que sea similar.
fuente
IoT es prácticamente datos de series temporales. Existen algunos TSDB: InfluxDB, OpenTSDB, GridDB, etc. Todos tienen la versión de comunidad / oss para que pueda ver si se adapta a sus necesidades. InfluxDB es popular, pero tenga en cuenta que la agrupación solo está disponible para la versión paga. OpenTSD es puro OSS, y GridDB afirma que está orientado a IoT y es más rápido que InfluxDB. Dependiendo de sus necesidades, tal vez desee buscar uno que tenga una ingesta rápida.
fuente
Timescaledb, una extensión de postgres personalizada para conjuntos de datos de series de tiempo funciona muy bien. Y obtiene las características habituales de la base de datos relacional, uso de SQL, confiabilidad, índices, escalabilidad.
fuente
La pregunta es amplia y no se puede dar una respuesta precisa, pero estos enlaces pueden ayudar:
http://outlyer.com/blog/top10-open-source-time-series-databases/
Seguimiento con puntos de referencia: http://outlyer.com/blog/time-series-database-benchmarks/
Otra comparación: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798
fuente
Además de las respuestas anteriores, también recomiendo mirar Tarantool , ClickHouse y ScyllaDB . Estas soluciones son más que suficientes para la mayoría de los casos.
Excepto que en algunas situaciones, especialmente para incrustar, el MDBX (o algo así) puede ser útil.
fuente