【问题标题】:Replacing DataTable with disk-backed data source in .NET在 .NET 中用磁盘支持的数据源替换 DataTable
【发布时间】:2015-03-30 23:45:18
【问题描述】:

我有一个应用程序发出一个 HTTP 请求,该请求以 JSON 格式返回大量数据。收到响应后,应用程序将其反序列化为 JSON,然后将其转换为 DataTable 对象,然后将其分配为 DataSourceDevExpress.XtraGrid.GridControl 对象。这种方法的问题是一切都在内存中完成,如果返回非常大的响应,将消耗大量内存(有时>1GB)。因此,我正在尝试减少内存消耗。

在处理 HTTP 响应和 JSON 反序列化时减少内存使用似乎很简单——我只需要切换到使用流而不是使用巨大的字符串来解析数据。我不确定是否将 JSON 流转换为 GridControl 可以使用的东西,而不会将其全部加载到内存中。

我设想将数据存储在某个临时文件中,该文件支持我可以分配给该DataSource 的对象。我们的用户将快速滚动和过滤这些数据,所以我希望性能仍然非常敏捷。换句话说,我需要将它存储在一些二进制结构中,以便快速读取/扫描表,而无需进行大量解析。像 SQLite 这样的东西可以工作,除了我想要更简单的东西。我对 *nix 比对 .NET 更熟悉,所以我不太了解 .NET 选项有哪些。

什么是一个好的库/组件可以用于这样的事情?根据XtraGrid's data binding methods 的说法,我们可以为DataSource 使用哪些对象具有相当大的灵活性。

如果组件在内存中启动并且仅在内存超过阈值时才溢出到磁盘,那就太好了。

【问题讨论】:

    标签: c# .net datatable


    【解决方案1】:

    我认为你使用 SQLite 的想法可能是最有效的方法,但我建议使用实体框架(简单)或像 dapper(快速)这样的微型 ORM 来填充它,不要浪费你的时间摆弄连接。

    【讨论】:

      猜你喜欢
      • 2013-08-04
      • 2017-01-15
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 2010-09-29
      • 1970-01-01
      • 2020-07-21
      相关资源
      最近更新 更多