mysql - 使用MQTT或远程MySQL获取服务器上的数据?

标签 mysql raspberry-pi mqtt

我目前在不同位置设置了多个 Raspberry Pi,每 5 秒收集一次数据(温度、湿度)。为了可视化该数据,我想知道是否最好通过 MQTT 将该数据发送到 VPS 并将其保存到本地 MySQL 数据库,或者仅使用远程 MySQL 连接并将数据直接插入 MySQL 数据库。 目前,我还看不出 MQTT 有什么优势。大家还有其他意见吗?

谢谢和问候, 乔纳斯。

最佳答案

对此的任何答案都将在一定程度上基于意见,但我相信以下是 MQTT 可以为您带来好处的一些领域:

  • 消息传递(尤其是通过质量较差的链接)- 使用 MQTT(且 QOS>0),一旦消息被接受,就可以保证传递(在限制范围内!);客户端/代理将处理网络问题等。请注意,某些 MQTT 客户端不支持离线缓冲(例如 Paho .Net client ),但您可以通过在每个 Pi 设置上运行代理作为桥来解决此问题。如果您使用 MySQL,那么您将需要自己处理连接问题(如果这对您很重要的话,还需要在网络中断期间处理数据持久性)。
  • 带宽 - MQTT 消息可能更小(这取决于您打包消息的方式,但协议(protocol)增加的开销非常小)。
  • 安全性 - MySQL security guidelines声明 MySQL“不应从不受信任的主机访问端口”。任何产品都可能存在安全问题,但 MySQL 是一个比 MQTT 代理更大、更复杂的系统,因此具有更大的攻击面。
  • 松散耦合 - 从远程节点直接连接到数据库会将您锁定在该数据库和架构中。使用 MQTT 允许您重新构建后端(包括迁移到 PostgreSQL),而无需向客户端推送任何更改(当您拥有大量远程设备或无法远程更新它们时,这一点很重要)。
  • 发布/订阅模型 - MQTT 使用的发布/订阅模型具有许多优势,例如从测试系统订阅实时数据。
  • 双向 - 例如,如果您需要控制远程设备上的继电器,则可以轻松从服务器向其发送消息(这也可用于执行诊断请求日志等操作)。

关于mysql - 使用MQTT或远程MySQL获取服务器上的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60021925/

相关文章:

python - 使用 SQLAlchemy 查找周长内的经度和纬度

mysql - 用于删除的 db_query 在 PHP 代码中不起作用,但直接在 mysql 中执行正常

android - 用于上传图像/视频并通过智能手机应用程序查看的物联网 API

apache-kafka - IoT - 多个 Kafka 生产者向同一主题发布消息

MySQL 防止重复插入

python - 有没有办法在 python 中编写视频崩溃安全?

python - 使用python发送消息时报错400

ios - 我在 ios 应用程序中使用 MQTTClient,我想在订阅主题时保存用户的数据

erlang - emq mqtt 集群 : Client Session management

php - mysql phpmyadmin,如何保存通过输入类型 "select"(下拉菜单)的表单获得的出生日期