我有一个从传感器收集数据的应用程序。此数据需要存储在远程主机上的 mysql 数据库中。我想在将数据发送到远程数据库之前以某种方式缓存这些数据,以确保在网络暂时中断时没有数据丢失。
我的第一个想法是将数据存储在本地文本文件中,然后使用 mysqls 'load data infile local' 每分钟上传一次到远程数据库。这里的问题是我想在成功上传后从文本文件中删除上传的条目。但这有时会损坏文本文件,因为传感器进程仍在写入它。
第二个想法是使用命名管道。但是我的容量有限,也有阻塞问题......
我正在寻找一种解决方案,其中本地文件通常只包含上次上传和现在之间的测量数据(即 1 分钟的数据)。如果上传不工作,这个缓存文件需要保存所有后续内容(达到文件系统的限制)。一旦上传再次开始,所有这些存储的数据都需要上传并从缓存文件中删除。 有没有一种优雅的方法来实现这一目标?我正在使用 Linux、MySql、Python,...
最佳答案
你有没有想过使用sqlite?这将允许您使用(大致)与远程 MySQL 服务器相同的数据层,但您可以在本地缓存,然后在准备好时推送您的插入。
它使用平面文件作为后端,但您不必为此担心,并且有一些命令行工具(类似于 MySQL 客户端)来管理您的应用程序创建的数据文件。
这个链接看起来并不可怕:
关于python - 如何在发送到远程数据库之前缓存数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28708782/