将实时数据存储在sqlite数据库中,以便与其他进程共享,但不能持久保存在磁盘上



我在嵌入式linux系统(比如Raspberry Pi(上使用SQLite和SQLAlchemy来进行一些数据记录。

DB有一个配置传感器和adc板的模式。它有一个测量表,其中包含时间戳、值、adc_board_id(FK(和channel_id(FH(列。

测量值每分钟保存到数据库中。

然而,我想用实时测量(每秒(更新LCD。

LCD应用程序是一个单独的过程,它从数据库中获取要显示的数据。

有没有一种方法可以创建一个仅基于RAM的实时测量表(一个特殊的表(

我希望它可以通过DB访问(就像共享内存一样(,但永远不会持久存在(即永远不会写入磁盘(。

注意:我希望大多数表都保留在磁盘上,但指定一个(或多个(永远不会写入磁盘的特殊表。

这甚至适用于访问数据库的单独进程吗?

该表将只由一个进程编写,但可能由许多进程读取,可能通过视图(一旦我学会了如何使用SQLAlchemy(。

我确实看到了一些SQLite文档,其中写道:

在其中创建新表的数据库。可以创建表格在主数据库、临时数据库或任何附加数据库中。

也许使用临时数据库可以做到这一点

是否可以通过其他进程访问

或者,一个位于ramdisk(/dev/shm/...(上的附加数据库

数据库/SQLite/SQLAlchemy是否有其他技术可以实现同样的结果

在内存中存储SQLite数据库,同时与另一个进程共享

你可以用一个";ramdisk";。这与普通文件系统一样工作,但使用RAM作为物理存储。您可以使用tmpfs文件系统创建一个:

mount -t tmpfs -o size=512m tmpfs /mnt/ramdisk

之后,您可以将SQLite数据库存储在/mnt/ramdisk中,并使用另一个应用程序访问它。

两个进程是否可以访问同一个数据表

技术上是的。但是,对于sqlite,您应该确保只有一个进程具有写访问权限。这对你来说似乎是可行的。

相关内容

最新更新