我一直在研究使用DBfDotNet来存储一些传感器数据。 对于任何不知道我在说什么的人来说,它是用c#编写的数据库引擎,请查看codeplex或这篇非常好的codeproject文章。与codeproject文章中的时间进行比较的数据库是sqlite。
从我所做的测试来看,它比我尝试过的其他嵌入式数据库要快得多。它本质上是一个对象数据库,所以我们可以保存日期,而不必担心像ADO.NET,ORM和SQL这样糟糕的事情!
文件中有500k行,查询如下:
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并且在写入期间失败可能会导致一些问题!
答案 0 :(得分:1)
在不涉及功能性问题的情况下,请考虑支持。是否有足够的项目开发人员和项目用户确保可以快速纠正任何错误?
或者说另一种方式:如果由于此引擎中的缺陷而丢失了所有数据,开发中的节省时间是否合理?
您也可以在使用数据文件时备份数据文件,还是需要一种机制来在备份时缓冲传感器数据?