最好的物联网数据库?

问题描述 投票:0回答:3

我当前有许多 IoT 设备正在将数据发送到 MySQL 数据库。
我想将其移植到其他数据库,该数据库将是开源的并为我提供:

  • JSON 支持
  • 可扩展性
  • 根据有效负载自动添加多列的灵活性
  • Python 和 PHP 支持
  • 极快的读写速度
  • 能够以 CSV 格式导出至少 6 个月的数据


请尽快恢复。 任何帮助将不胜感激。

谢谢

json database-design relational-database iot non-relational-database
3个回答
0
投票

根据输入数据构建数据库是一个错误。想象一下,明天您的数据将是 CSV 或 XML,格式略有不同。根据抽象数据模型设计数据库,对其进行规范化并将现有数据应用到您的模型。根据您拥有的输入和计划获得的输出来塑造您的结构。如果您检索与输入相同的内容,将数据存储在文件中就足够了,您不需要数据库。

此外,您不想将“原始”记录存储在数据库中。即使您的数据库可以在运行时从原始元素组成数据记录,您也无法在不访问所有记录的情况下基于某个提取的元素运行选择。

大多数数据库允许您从任何地方连接(与 Python 相比,Java 中对 PostgreSQL 的支持并不好,但驱动程序标准化的质量和水平可能会有所不同)。问题是您的驱动程序应支持哪些功能。例如,您可能需要支持批量导入(不要向数据库发出大型 INSERT 集)。

您真正寻找的是:

  • 可扩展性:您的数据库可以随着数据的增长而增长吗?添加额外的 CPU 会给数据库带来好处吗(MySQL 尤其不适用于大型查询)。您可以将数据库分片到多个实例上吗? (MySQL 再次无法处理这个问题)。
  • 你的模型看起来像雪花吗?如果是的话,你可以考虑NoSQL,否则就远离它。如果您设法将模型建模为雪花(这意味着您愿意妥协),您可以使用基于 Lucene 的搜索产品、Mongo、Cassandra 等任何产品。您拥有时间序列这一事实并不意味着您有资格使用 NoSQL。例如,您可能有 10K 台设备发出 5k 种消息类型。特定数据在设备级别和消息类型级别上进行冗余记录。在这种情况下,由于 n:m 关系,你不再拥有雪花了。
  • 为什么要存储数据?您要提出什么疑问?

0
投票

对于 IoT 设备,您可以使用 influxDB、TimescaleDB 或 Cassandra,它们都是数据库中的最佳选择。


-1
投票

为什么要放弃 MySQL?它是开源的,可以满足您上面列出的所有标准。这是一个非常主观的问题,所以很难给出一个好的答案,但是 MySQL 不是一个坏的选择

© www.soinside.com 2019 - 2024. All rights reserved.