我在嵌入式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,您应该确保只有一个进程具有写访问权限。这对你来说似乎是可行的。