2011-12-15 41 views
1

我不知道這是否被詢問過或沒有(因爲我GOOGLE了它)。SQLite與Web服務c#

那麼我寫了一個Web服務,將託管與SQLite數據庫。

許多客戶會對它執行CRUD操作。我計劃使用這只是爲了簡單。

現在我寫了大多數方法,並且此時我認爲沒有該SQLite的DBMS(我想),因此如果兩個或多個客戶端應用程序寫入我的應用程序,可能會存在衝突和數據不一致問題。

還是SQLite支持管理多連接操作?或者我要切換到SQL Server 2008

回答

1

SQLite「支持管理多個連接的操作」,意思是它不會炸燬或導致數據損壞。但是,它的設計不像MS-SQL Server那樣具有高負載併發操作的效率。所以,它歸結爲多少是「許多客戶」。如果你正在談論數十個同時的請求,你會很好用SQLite。如果您在討論數百個同時請求,則您可能需要遷移到MS-SQL Server。請注意,爲了使兩個請求同時發生,兩個客戶端必須在大致相同的幾毫秒時間窗口上按下「提交」按鈕。因此,需要數百個同時連接的客戶端才能獲得數十個同時請求。

1

是SQLite支持concurrency and locking

+0

其實我的主機允許有一個SQL DB被佔用:(你認爲它有沉重的垮臺嗎? – 2011-12-15 15:49:48

1

簡短的回答是肯定的。看看this Sqlite FAQ entry。更長的答案有點複雜......你想在一個旨在處理繁重事務負載的體系結構中使用Sqlite嗎?可能不會。如果你確實想要朝這個方向發展,我建議從SQL Server Express開始。如果您需要升級到一個完全成熟的SQL Server也不會在所有問題......

SQLite的摘錄:

(5)可以在多個應用程序或相同的多個實例應用程序同時訪問單個數據庫文件?

多個進程可以同時打開同一個數據庫。 多個進程可以同時做一個SELECT。但是,只有 一個進程可以在 的任何時刻對數據庫進行更改。

SQLite使用讀寫器鎖來控制對數據庫的訪問。 [...]

+0

一個ASP.net或WCF Web服務是一個進程,每個請求在同一進程中是不同的線程。 – 2011-12-15 15:41:21

+0

@ BenRobinson:不一定。 – 2011-12-15 15:47:16