2009-07-02 93 views
1

我一直在尋找使用DBfDotNet來存儲一些傳感器數據。 對於任何不知道我在說什麼的人來說,這是一個用C#編寫的數據庫引擎,請查看codeplex或這篇非常好的文章codeproject。它與codeproject文章中的時間進行比較的數據庫是sqlite。簡單文件數據庫有哪些問題?

從我所做的測試來看,它比我嘗試過的其他嵌入式數據庫快得多。它本質上是一個對象數據庫,所以我們可以保存日期,而不必擔心ADO.NET,ORM和SQL等可怕的事情!

有了50萬行的文件中,像查詢:

IEnumerable<People> result = peoples.Where<People>(x => x.dob < DateTime.Now.AddYears(-30) 
                && x.dob > DateTime.Now.AddYears(-10) 
                && x.name.StartsWith("Ca") 
               ); 

花了大約5秒鐘。

那麼使用這樣的數據庫會有什麼缺點呢?

一個問題是數據庫文件中的列是固定寬度的,所以如果數據變化了,空間將被浪費。我正在查看的數據存儲固定寬度,所以這不會是我的問題。

它不是線程安全的。這對我來說不是問題,但可以隨時添加爲可選包裝器。

另外它遠離ACID,在寫入過程中出現故障可能會導致一些問題!

回答

1

不考慮功能性問題,請考慮支持。項目中是否有足夠的開發人員以及該項目的用戶確保可以快速糾正錯誤?

或者說另一種方式:如果由於此引擎中的缺陷而丟失所有數據,節省的開發時間是否合理?

也可以在使用它們時備份數據文件,或者您需要一種機制來緩存傳感器數據,同時備份?

+0

我想支持是我會遇到的主要問題。我覺得我可以很好地解決大多數問題,並閱讀了所有的資料。但它與我寫的任何東西都非常不同,我真的不想在6個月後取得成功,並打電話告訴我一個數據庫沒有打開! – Tim 2009-07-03 13:36:42