我想就数据共享的设计实现征求您的意见。
我正在研究 Linux 嵌入式设备(mips 200 Mhz),我希望在多个进程之间进行某种数据共享,这些进程可以一次读取或写入多个参数。
该数据包含约 200 个字符串参数,每秒更新一次。进程可能会在 1 秒内访问大约 10 次数据。
我非常想尝试使设计高效(CPU / Mem)。
此数据不需要持久保存,每次重新启动时都会重新创建。
目前,我正在考虑两种选择:
- 使用分片内存 IPC (SHM) + 信号量(锁定所有 SHM)。
- 使用基于 SQLite 内存的数据库。
对于任一选项,我将提供一个 C 接口库,它将执行 DB 操作的所有逻辑。
对于 SHM,这意味着锁定/解锁信号量并访问可以称为索引数组的参数。
对于 SQLite,我的库将是 SQLite 接口库的包装器,因此该过程不必知道 SQL 语法,(应对查询和回复进行一些解析)。
我相信共享内存更有效:
无需使用和解析 SQL,以数组形式访问。
话虽如此,使用 SQLite 也有一些优点: 已经工作和调试(数据库级别)。增加灵活性。在许多嵌入式系统中广泛使用。
切入正题,
性能方面,我没有使用 SQLite 的经验,如果您能分享您的意见和经验,我将不胜感激。
谢谢