2010-06-30 48 views
1

我正在尋找一個家庭項目(ASP.NET MVC)的數據庫,我可能會最終主持。在閱讀Stack Overflow上的類似問題here後,我決定使用MySQL。SQLite併發性問題是一個交易斷路器?

但是,易於使用的&部署SQLite是誘人的,我想確認我的理由,然後再完全寫下來。

我的目標是維護用戶狀態消息(如Twitter)。這將意味着大多數情況下只有一張帶有用戶標識/狀態消息對的表。讀取/插入/刪除狀態消息的操作。不需要修改。

閱讀以下段落後,我決定SQLite不能爲我工作。我有一個簡單的數據庫,但由於我所有的事務都與SAME表一起工作,所以我可能會遇到一些問題。

SQLite在整個數據庫文件上使用讀寫器鎖。這意味着如果有任何進程正在從數據庫的任何部分讀取數據,則所有其他進程都無法寫入數據庫的任何其他部分。同樣,如果任何一個進程正在寫入數據庫,則所有其他進程都無法讀取數據庫的任何其他部分。

我的理解是否天真? SQLite會爲我工作嗎? MySQL還提供了SQLite在使用ASP.NET MVC時不會使用的東西嗎? VS的發展容易嗎?

+3

您是否考慮過SQL Server Compact Edition?如果需要,稍後可以稍後將其更改爲完整的SQL Server,但SQLCE不具有SQLite所執行的鎖定問題。 – 2010-06-30 10:10:55

+0

@Lasse我沒有看過它,但我現在。謝謝! – Preets 2010-06-30 10:30:16

+0

你的應用程序有多少用戶?你期望實際訪問你的應用的人數有多少? – ninjalj 2010-06-30 22:53:20

回答

3

如果你願意等待半個月,下一個SQLite版本打算支持write-ahead logging,這應該允許更多的寫入併發。

+0

謝謝切線。我檢查了鏈接,它似乎是SQLite的好步驟。但是,我不認爲我應該等待,至少我的熱情會減少! – Preets 2010-07-01 10:19:21

+0

取決於你的時間表。如果你不希望在接下來的兩週內使用過多(這是一個家庭項目和所有的),那麼你可以開發SQLite,然後更新庫。 或者,如果下一個版本證明是值得的,那麼只需在MySQL中進行開發並稍後再開發到SQLite。如果你的數據庫代碼是健全的,那麼一個單表應用應該很容易翻譯。 – 2010-07-01 18:05:24

+0

謝謝切線。我將使用MYSQL,並在新版本發佈並可接受時將其移植到SQite中。 – Preets 2010-07-07 08:36:08

1

即使簡單的併發SQLite聲明支持工作 - 即使在問了幾次之後,我仍然無法獲得。

編輯 自從我寫了上面,我能夠得到併發寫入和讀取與SQLite的工作。看起來我沒有正確地處理NHibernate會話 - 在所有創建會話的代碼周圍放置了使用塊來解決問題。 /編輯

但是它可能適用於您的應用程序,尤其是使用user380361提到的Write-ahead Logging。

小尺寸,單一文件安裝速度快,適用於NHibernate,免費的公有領域 - 在幾乎所有方面都是非常好的產品!

+0

- 即使是在問了幾次之後,我甚至都無法獲得簡單的併發SQLite聲明來支持工作。 這令人不安。我現在只需要堅持使用MySQL。感謝您的答覆。 – Preets 2010-07-01 10:21:46