2011-05-19 106 views
4

有可能在内存中的SQLite数据库中创建一个:共享多个应用程序之间的内存SQLite数据库

rc = sqlite3_open(":memory:", &db); 

,但如果我理解正确the documentation,这个数据库是本地的创建它的应用程序。

我有一个内存SQLite数据库的需求,可以由几个应用程序访问。除了在虚拟硬盘上创建数据库之外,有没有这样做的方法?

这是一个嵌入式Linux平台。

回答

4

无法跨进程共享的内存数据库 - 它是真的不是为了做到这一点,因为它缺乏正确的排序诚信承诺的(但不意味着它的速度更快) - 所以要么把数据库更永久的存储(比如ramdisk)或者把数据库放在单个进程中(“数据库管理器”)并使用某种形式的本地通信策略(unix域套接字,命名管道等)来允许其他进程请数据库管理员为他们做一个查询。

1

不,您将不得不在ramdisk/tmpfs上创建数据库,如果您希望它在内存中并与其他应用程序共享。

+0

的/ dev/shm用于这是一个不错的选择 – SystemParadox 2012-01-11 13:43:47

0

您可以在共享内存中创建具有必要生命周期的进程中的数据库(以及跨进程锁)。您只需要做的就是将其视为任何其他共享内存资源(记住在访问时锁定/解锁)。不幸的是,我认为这可能需要一些人干涉SQLITE源来使用你提供的内存(共享),而不是分配它自己的内存。

http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/shm.h.html

相关问题