我一直在寻找使用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