2009-07-02 50 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