对家庭自动化系统使用远程数据库(firebase)是错误的想法吗?

物联网 智能家居 数据传输
2021-06-04 11:05:15

我正在研究家庭自动化系统,我的想法是:
会有客户端应用程序,它将在经典的 HTTP 服务器(在互联网上)上运行。它将与 firebase 实时 (NoSQL) 数据库进行通信。此应用程序还将在 Raspberry Pi 上运行(Raspberry Pi 将用作本地 HTTP 服务器)。

Raspberry Pi 还将侦听数据库更改并控制 ESP32 模块(根据数据库中的条目)。我的系统框图如下:

系统架构

我的问题是 - 拥有一个远程数据库(firebase 数据库)是个坏主意吗?这个家庭自动化系统实际上是我的学士论文并评论我的工作,一位教授声称这是一个糟糕的架构,因为数据库应该在本地树莓派上:没有真正的项目使用这种类型的架构(互联网上的数据库代替本地在 RPi 上)。他声称这是不安全和公正的 - 没有人这样做。他说得对吗?

注意:我拥有“互联网”数据库的原因是能够通过互联网而不是本地控制系统......在我看来,全局控制功能的最简单解决方案......
那么谁是对的?如果是教授,实现全球(通过互联网)控制的最简单方法是什么?有任何想法吗?
谢谢!

2个回答

一般来说,NoSQL 相对于关系数据库的唯一优势是可扩展性。阅读有关ACID 的内容,并决定您是否准备好放弃这些属性以换取它。

远程访问通常只对前端有利,对数据库没有好处。将数据库暴露在 Internet 上不是优势,而是一种权衡。同样,为了可伸缩性,您牺牲了所需的属性(在本例中为安全性)。

在行业中,将数据存储在云中是很常见的,其中存储了最后的“愿望”和最后的“实际状态”。两个客户端(一个是“控制器/监控”接口,另一个是“受控/监控”接口)。这两个客户端还将存储最后的愿望和最后的实际状态。这种设置的优点是两个客户端不需要同时连接。因此,在参差不齐的蜂窝覆盖等情况下,系统仍然可以工作。此外,两个客户端不需要在同一个网络上,可以在互联网上工作。

这种范式有多种实现方式。Couchbase 和 mongoDB 等数据库允许在客户端和服务器之间进行复制,以此来实现这一点。MQTT 允许代理为此具有“LastWillAndTestament”功能。“设备影子”的 AWS 实现与云中的数据存储是同一类型的概念。Azure 数字孪生与此类似。Firebase 已经被游戏开发者使用了一段时间,用于跨设备和服务器同步状态。这是同步应用程序状态的好方法。AWS Appsync 是另一种选择。Azure 具有一些功能,例如 Azure SQL edge、cosmos db,并且很快就会推出更接近 AppSync 的功能。云中无物,

在安全方面,是的,因为通信是在互联网上进行的,所以会有更多的部分需要保护。但是在过去的 20 年里系统已经发展到通过证书等来确保安全(至少协议是安全的。人们仍然可以被愚弄和欺骗!)。如果您可以仅依赖网络上的受信任设备,那么仅本地网络的系统不需要任何安全性(这种情况越来越少,因为我们的家庭网络上有这么多设备并且可以被黑客入侵)。但这将是有限的,您无法在没有安全性的情况下在互联网上操作系统。

所以,你在这里有两个目标。一个是引导将指导和批准您的论文的人,另一个是拥有与行业相关的论文!两全其美的是,如果您可以教育所有相关人员。祝你一切顺利。