非常快的.NET 4嵌入式数据库

时间:2011-02-21 10:06:02

标签: .net database

我正在为.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)。

3 个答案:

答案 0 :(得分:2)

SQLite支持内存数据库,请参阅:http://sqlite.phxsoftware.com/

使用它时,您确定在内存中使用它,而不是从磁盘中使用它吗?

答案 1 :(得分:2)

我建议您使用STSdb4。它是一个基于WaterfallTree的嵌入式.NET 4.0数据库 - 一种创新的数据索引结构。 STSdb4远比基于B树的数据库快。它通过顺序和随机密钥实时提供记录索引,提供超快的速度。有一个database comparison tool可以帮助您做出决定。

上述基准测试工具包含以下数据库:

  • Access 2013
  • BrightstarDB
  • CassandraDB
  • db4objects的
  • 德比
  • 火鸟
  • H2
  • HamsterDB
  • 性LevelDB
  • MongoDB的
  • MS SQL
  • MySQL的
  • Oracle Berkeley
  • 了Perst
  • Postgre
  • RaptorDB
  • RavenDB
  • ScimoreDB
  • Siaqodb
  • SQLite的
  • STSdb
  • VelocityDB
  • 的Volante

答案 2 :(得分:1)

阵列怎么样?

使用50列定义类型,将数据加载到数组中,然后对其执行LINQ查询。

LINQ to Objects中没有索引,但它仍然很快。