我的任務是找到一個適合即將使用的項目的數據庫。我很難找到一個很好的比賽。我們的應用程序是一個.Net Framework 4.0 C#應用程序。多用戶嵌入式數據庫
首先我看了一下SQLite,但是我遇到了問題,因爲SQLite在寫入期間鎖定它的數據庫文件。
我有2個獨立的應用程序在同一時間運行使用相同的數據庫,我不能確定何時寫一個。我試圖等待鎖釋放,但這導致了一些數據丟失。所以我認爲我會發明一個隊列系統,但是這兩個應用程序都需要使用相同的隊列......所以我認爲我只是做一個單獨的Window服務。所有這些對我來說聽起來都像傳統的RDBMS。
我決定回溯並問自己:「我使用正確的數據庫嗎?」。
有人知道一個數據庫可能符合我的要求嗎?
這是我的要求: 1.易於安裝。這包括沒有單獨的「安裝程序」,用戶必須單獨運行應用程序的安裝。這首先讓我相信我需要一個嵌入式數據庫,但我認爲可能有一些聰明的方式在我們的安裝程序中包含數據庫安裝。
很難打破。這裏最大的要求是,它應該能夠處理命名管道而不是TCP/IP,以達到安全考慮(或者任何能夠降低人們的系統配置來打破我們的應用程序的能力)。我們的應用程序將始終在同一臺機器上運行。他們需要共享相同的數據庫,因此如果防火牆/安全/「智能用戶」參與其中,使用TCP/IP可能會導致問題。
對數據庫的長時間運行操作不應該阻止其他用戶讀/寫數據庫。我想過編寫一些代碼來處理這個需求,但仍然使用Sqlite,但決定做更多的功課。
授權協議:我們希望買東西,我們可以免費再分配費用。我們不希望我們的最終用戶需要爲我們依賴的數據庫購買他們自己的單獨許可證。
大小限制:我們計劃在這些數據庫中存儲相當多的數據,並且不接受任意限制。我們願意接受操作系統對文件大小施加的限制。 SQLite的大小限制(這是任何Windows機器文件的大小限制)大於2 TB。
很高興有:可以使用實體框架。
很高興擁有:關係數據庫。我們可能允許第三方應用程序讀取我們的數據庫,並且不介意它是關係數據庫還是文檔數據庫對象數據庫。但是,我們願意爲滿足我們所有要求的東西做好準備。
數據庫我已經看了迄今: RavenDB SQLite的 CubeSQLite SQL CE
Oracle和Microsoft SQL Server是針對難以再分發許可和那裏。
我明白這些要求是非常嚴格的。我甚至不確定是否有可用的現成解決方案。我很感激任何人都可以提供的幫助。
[Stack Overflow是不是一個推薦引擎(http://meta.stackexchange.com/a/128562/157914) –
謝謝爲反饋。我明白,如果你不想給我一個建議,並理解與建議相關的陷阱。如果有人願意協助,那麼我會很感激。 –
@MikeBynum你能幫我解決你使用的解決方案嗎?如果可能的話源代碼會很好 – Smith