Eu tenho que fornecer o serviço de IoT para meu cliente. Os componentes MQTT, Kafka e Rest Services serão usados para ingerir os dados dos dispositivos no banco de dados. Eu preciso fazer algumas análises sobre os dados no back-end. O tamanho dos dados seria 135 bytes / dispositivo e 6000 dispositivos / segundo. Compartilhei a arquitetura aqui para entender os requisitos e os componentes.
Investiguei sobre os armazenamentos de dados (MongoDB, Postgresql (TimescaleDB), Redis, Neo4j, Cassandra) e todos os fornecedores provaram que seu banco de dados é adequado para o caso de uso da IoT. Confuso quanto ao uso do banco de dados comprovado / mais confiável / escalonável para a IoT.
Qual poderia ser o melhor banco de dados adequado para ingerir essa quantidade de dados e fazer análises?
Existe alguma referência comprovada para o banco de dados adequado para a IoT?
Por favor, dê seus pensamentos e sugestões.
fonte
Respostas:
Você está limitado aos bancos de dados NoSQL, porque qualquer banco de dados SQL não permitirá 6K TPS diretamente no servidor, nem poderá usar qualquer serviço ou plataforma em nuvem SaaS já especializado em esse tipo de operações - por exemplo, receber dados telemáticos via MQTT / Kafka, divida e armazene esses dispositivos 6000 e forneça uma API REST simples para acessar os dados de telemetria. Como flespi ou algo parecido.
fonte
A Internet das coisas é praticamente uma série de dados temporais. Existem alguns TSDB por aí: InfluxDB, OpenTSDB, GridDB, etc. Todos eles têm a versão community / oss para que você possa ver se ele atende às suas necessidades. O InfluxDB é popular, mas observe que o armazenamento em cluster está disponível apenas para a versão paga. O OpenTSD é um sistema operacional puro e o GridDB afirma que é orientado à IoT e mais rápido que o InfluxDB. Dependendo das suas necessidades, talvez você queira procurar um que tenha uma ingestão rápida.
fonte
Timescaledb, uma extensão do postgres personalizada para conjuntos de dados de séries temporais funciona muito bem. E você obtém os recursos usuais do banco de dados relacional, uso de SQL, confiabilidade, índices e escalabilidade.
fonte
A pergunta é ampla e nenhuma resposta precisa pode ser dada, mas esses links podem ajudar:
http://outlyer.com/blog/top10-open-source-time-series-databases/
Acompanhamento com benchmarks: http://outlyer.com/blog/time-series-database-benchmarks/
Outra comparação: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798
fonte
Além das respostas anteriores, também recomendo consultar o Tarantool , ClickHouse e ScyllaDB . Essas soluções são mais que suficientes para a maioria dos casos.
Exceto que, em algumas situações, especialmente para incorporação, o MDBX (ou algo parecido) pode ser útil.
fonte