我正在为.net 4(最好是内存中)寻找一些快速嵌入式数据库。
我通常的操作非常简单:给一个大约50个cols和30k行的大表(最长可达1m),查询SELECT AVG(col1)FROM table WHERE col2 IN(?)和col3 IN(? )和col4< ?,SELECT col1 FROM table WHERE [same]等。列是字符串或浮点数。
我已经开始使用简单的.net DataTables + LINQ,它们非常快但显然是大小限制的(它在没有ram之前很久就崩溃了)。还有没有我认为应该提高性能的索引。
然后我尝试使用SQL查询的SQLite(devart适配器),这比内存数据表慢10倍。我已经在此表的所有列上创建了索引,但这没有帮助。我认为SQLite被认为是最快的嵌入式数据库之一,因此非常令人失望。
是否有快速且可扩展的替代方案?例如。像DataTable这样的索引可以使用大量的内存(例如,我不介意它会吃掉几个ram)。
答案 0 :(得分:2)
SQLite支持内存数据库,请参阅:http://sqlite.phxsoftware.com/
使用它时,您确定在内存中使用它,而不是从磁盘中使用它吗?
答案 1 :(得分:2)
我建议您使用STSdb4。它是一个基于WaterfallTree的嵌入式.NET 4.0数据库 - 一种创新的数据索引结构。 STSdb4远比基于B树的数据库快。它通过顺序和随机密钥实时提供记录索引,提供超快的速度。有一个database comparison tool可以帮助您做出决定。
上述基准测试工具包含以下数据库:
答案 2 :(得分:1)
阵列怎么样?
使用50列定义类型,将数据加载到数组中,然后对其执行LINQ查询。
LINQ to Objects中没有索引,但它仍然很快。