【问题标题】:Best way to manage a large amount of data in memory?管理内存中大量数据的最佳方法?
【发布时间】:2014-02-05 07:10:07
【问题描述】:

我正在尝试寻找在不访问数据库的情况下使用 C# 管理内存中大量数据的最佳方法。 (当它们成为最终信息时,数据库将用于存储这些信息的一部分)

当我说“大量数据”时,我指的是数百兆字节,我希望管理一个复杂的结构,而不仅仅是像一个包含数百万条记录的表。

我需要尽快在它们内部进行搜索,并且我需要能够在它们过时时删除其中的一部分。

幸运的是,我可以将这些数据分成不需要以某种方式关联的组...所以我不需要在数百万之间查找或更新一行,但可以在 50,000 之间查找一个组其他,搜索,添加和删除该组中的数据,并在该组过时时删除所有组。

我有一些项目已经在内存中管理数据,但没有那么大,所以我不知道这些方法是否也适用于这种情况: -我使用了 .Net 缓存对象,但我从未使用过超过 10 或 20 兆字节的数据 -私有静态列表数据=新列表();我在上面存储了 xml 格式的数据组,但我从来没有使用超过几兆字节的数据 -datatable 对象,一个用于组,在最后一种情况下,我从来没有使用超过 10 兆字节的数据,而且我在管理访问时遇到了问题,因为数据表不是线程安全的

处理这种情况的最佳方法是什么? Windows 或 .Net 框架有什么限制可能会给我带来问题吗?

【问题讨论】:

  • 这是一项复杂的任务,如果你真的觉得不需要自己编写代码,我认为你应该看看一些现有的可以提供此功能的内存数据库
  • 如果发现可靠的产品...内存数据库是个好主意...至少需要考虑的东西,我不需要写一些具体的东西。我看到其中有些有点贵,有些是免费的,但多年来一直处于测试阶段。我看到 SqlLite 也可以在内存中工作......也许对我来说是一个很好的解决方案。

标签: c# caching memory large-data


【解决方案1】:

您应该可以使用内存将数据存储在数据结构中并使用数据。折衷方案是内存将不可用于同一服务器上运行的其他应用程序。此外,当您尝试将数据从内存提交到磁盘/数据库时,大数据所需的时间会更多。

根据您的数据,必须定义结构。如果数据不相互关联,您应该为每个实体创建不同的对象。

您还需要制定更新/刷新缓存的策略。可以是每小时、每天、每周;根据您的需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 2013-02-27
    • 1970-01-01
    • 2010-11-30
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    相关资源
    最近更新 更多