【发布时间】:2011-12-14 23:53:16
【问题描述】:
我正在将一个复杂的过程从 SQL 转移到一个 .NET 应用程序。我有点采取蛮力的方法,只从 SQL 中提取所需的数据,然后存储在数据表中。使用带步进的管道模式,我分解了可以并行完成的进程(不依赖于其他进程,也不处理相同的数据位)。
一切都很好,但我想知道是否有内存中的 sql 解决方案比 DataSet/DataTable 结构执行得更好。我们一次讨论 50k 行,最多支持 1m 行数据(读取 5b 行)。 1 行(包含所有支持的数据行)的行大小可能约为 1K 平均(由于大字符串)。
我的问题专门针对 DataSet 的性能、内存开销和持久性。我需要将每个阶段的数据序列化到磁盘以进行恢复。
将行映射到强类型模型会更好吗?我不需要数据集的任何关系或其他好处;我使用并行处理替换了大部分搜索功能。
数据仅使用原始类型,没有 blob、流、地理等。
【问题讨论】:
-
至于将其转换为强类型模型,我想说这取决于您所代表的数据。另外,你试图对内存中的数据做什么?了解这一点可能有助于我自己和其他人确定针对这种情况的最佳方法/最佳建议。
-
大约需要发生 100 个不同的过程。检查重复记录、数据计算和聚合、更新、删除等。生成的最终数据集被推送回 SQL。某些进程需要加入和组之类的功能。
标签: c# .net-4.0 dataset nosql data-processing