【问题标题】:Best IoT Database?最好的物联网数据库?
【发布时间】:2017-12-04 10:01:38
【问题描述】:

我目前有许多物联网设备正在向 MySQL 数据库发送数据。
我想将它移植到其他一些数据库,它将是开源的并为我提供:

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


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

谢谢

【问题讨论】:

    标签: json database-design relational-database iot non-relational-database


    【解决方案1】:

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

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

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

    你真正寻找的是:

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

    【讨论】:

    • 嗨@Razvan,感谢您的精彩回答。根据您的第 1 点:MySQL 似乎不是可扩展性的好选择。根据第 2 点:500 个表中只有 5-8 个表相互关联。根据第 3 点:我存储数据主要是分析它,相应地绘制图表,根据过去 6 个月或更长时间的数据通知我我的帐单和成本估算,当机器的某些部分不再工作时提醒我超过3小时左右。所以,MYSQL现在是不可能的。回退以进行更多讨论。谢谢
    • NoSQL 既不是一种数据库,也不是供应商。这种比较是苹果与橙子的比较。
    • NoSQL 是一种数据库,而不是供应商。你的陈述一半是对的,一半是错的。苹果和橙子与 SQL 和 NoSQL 相比是相同的。几乎所有 SQL 供应商都提供了共同的功能,而大多数 NoSQL 数据库都提供了这些功能。在 NoSQL 世界中,缺乏事务和 N 对 M 关系似乎是一种反复出现的模式。
    【解决方案2】:

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

    【讨论】:

    • 我的数据是时间序列数据。我想将传入的 json 有效负载(来自设备)直接摄取到数据库中。目前,我运行的脚本首先创建表,然后插入条目。我还有一些脚本可以查找六个月前的数据并让我能够从数据库中下载它。但是,我想减少我的编码时间。我在考虑 InfluxDB 或 Cassandra 或 MongoDB。我很困惑。在这种情况下,哪个可能是更好的解决方案?
    • MySQL 支持 JSON(从 5.7 版开始),并且还可以满足我认为的所有其他要求,具体取决于您对 CSV 部分的需求。您提到的所有数据库都可以满足一些要求,但据我所知 MySQL 覆盖的最多 - 或者 PostgreSQL 可能具有更完整的 JSON 支持。
    • 好的,感谢您的回答。我也会检查PostgreSQL,然后得出结论。
    • 嗨 Lorna,我检查了 PostgreSQL 以及我们之前讨论的内容。但是,我还不确定是全职使用它还是继续使用 MySQL。有一次,对我的研究感到满意,我会将其标记为已接受:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2021-05-29
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多