3

我正在将一个复杂的过程从 SQL 移到一个 .NET 应用程序。我采取了一种蛮力方法,只从 SQL 中提取所需的数据,然后存储在数据表中。使用带步进的管道模式,我分解了可以并行完成的进程(不依赖于其他进程,也不处理相同的数据位)。

一切都很好,但我想知道是否有一个内存中的 sql 解决方案,它的性能比 DataSet/DataTable 结构更好。我们一次讨论 50k 行,最多支持 1m 行数据(读取 5b 行)。1 行(包含所有支持的数据行)的行大小可能约为 1K 平均(由于大字符串)。

我的问题专门针对 DataSet 的性能、内存开销和持久性。我需要将每个阶段的数据序列化到磁盘以进行恢复。

将行映射到强类型模型会更好吗?我不需要数据集的任何关系或其他好处;我使用并行处理替换了大部分搜索功能。

数据仅使用原始类型,没有 blob、流、地理等。

4

1 回答 1

4

对于本地 SQL 操作,请查看 SQLite。我不记得它是否可以专门在内存中运行,但是如果关闭磁盘缓存和事务日志,它可能会非常接近。

多年前,Steve Shaunessey 在 Borland 开发了一个快速的内存 SQL 引擎。我不知道它是否曾经被产品化过。浏览 Embarcadero.com 网站,看看他的作品是否有任何残留物幸存下来。

我注意到 aidaim.com 宣传了一个内存中的 SQL 引擎。没有经验,仅供参考。

还可以考虑使用 LINQ 进行内存查询操作。如果你注意你在做什么,LINQ 的查询组合和延迟执行可以很好地处理大数据,IMO。而且,不需要 SQL 解析器。

于 2011-12-15T00:12:50.223 回答