我一直在尋找使用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,在寫入過程中出現故障可能會導致一些問題!
我想支持是我會遇到的主要問題。我覺得我可以很好地解決大多數問題,並閱讀了所有的資料。但它與我寫的任何東西都非常不同,我真的不想在6個月後取得成功,並打電話告訴我一個數據庫沒有打開! – Tim 2009-07-03 13:36:42