2011-05-19 107 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

相關問題