我有一个传感器在远程位置生成一个数据向量,比如说每秒(最多可调整到每秒 100 个向量)。该位置有 4G 调制解调器来发送数据。由于功率限制,我选择使用 Raspberry Pi 3+ 从传感器接收数据,对其进行解码并将其发送到我的 VPS 服务器。
在我运行 Ubuntu 18.04 的服务器上,我在 PostgreSQL 之上安装了 TimescaleDB,这是处理时间序列数据的一个很好的组合,我想将传感器数据存储在其中,然后在我的网站上发布。我很想听听您对数据流的看法,我有一些问题。
将传感器数据从 RPi 插入服务器数据库的最佳方法是什么?使用我的 C 软件中的 libpq 库直接从 RPi 插入它们是否可以保存,或者我应该以不同的方式将数据传输到服务器,然后将数据插入服务器端的数据库中?
在 RPi 方面,我希望有一个本地缓冲区,以防止与服务器的连接中断时丢失数据。我可以简单地在我的 C 程序或命名管道中使用循环缓冲区,或者我可以在本地安装 PostgreSQL/TimescaleDB,在那里插入数据,然后使用 postgres_fdw 或 dblink 将数据从那里传输到我的服务器 DB 并删除其中的条目我的本地数据库。你有什么建议?
我认为在 RPi 上安装 Postgres 太过分了。
在纯文本文件中缓冲传感器数据就足够了。该过程可能类似于:
copy ... from stdin
使用内部事务将文本文件的内容发送到 Postgres 服务器。如果失败(连接问题),请重试直到成功。使用
copy .. from stdin
比运行多个单行 INSERT 语句更有效。并且仍然比运行单个多行 INSERT 语句更有效。此外,该文件还充当您想要的缓冲区。