2011-12-20 78 views
0

是否有人運行SQLite內存數據庫作爲其Web應用程序的主數據庫?我正試圖處理這種設置的可行性/愚蠢。作爲Web應用程序主數據庫的SQLite內存的可行性

如果我的Web應用程序的併發用戶少於500個並且數據庫的大小很小(0到4 GB),那麼將SQLite作爲主數據庫運行在內存中的整個數據庫的可行性如何?爲應用程序?

運行內存顯然會讓ACID的「耐久」方面變得困難,但是對於SQLite backup API,似乎可以保持內存數據庫與基於文件的數據庫同步。我在想,當用戶執行保存/更新/刪除命令時,它可以立即更新內存中的副本,然後排隊等待到基於文件的數據庫。每當應用程序循環時,它都可以通過備份API從基於文件的數據庫中加載,對吧?

根據SQLite文檔,爲了保持內存數據庫的正常運行,必須保持單個連接處於打開狀態,因此如果打開幾個小時或幾天,這是一個問題嗎?

+0

[memcached](http://memcached.org/)可能適合您的需求嗎? – TrentVB 2012-01-30 21:06:49

回答

0

如果您需要將數據庫同步到磁盤,爲什麼要使用內存數據庫?內存數據庫的優點是數據永遠不需要寫入文件系統。由於您需要需要將數據寫入磁盤,因此您將唯一的優勢轉化爲缺點。那爲什麼呢?儘可能大地調整緩存。

+1

我正在考慮使用單個Web服務器的系統。如果服務器發生故障,如果磁盤上沒有備份,如果沒有寫入磁盤,整個數據庫將會消失。所有正常的網絡流量都可以流經內存數據庫,但我認爲任何寫入操作都應排隊並保存到磁盤以進行災難恢復。 – Andy 2011-12-21 06:24:48

1

您應該只使用內存數據庫進行數據處理,而不是存儲數據。因爲無論如何您需要將數據存儲在磁盤上,所以首先將數據庫存儲在磁盤上更簡單,更有效。

相關問題