C# 管理内存中大量数据的最佳方法?

C# 管理内存中大量数据的最佳方法?,c#,caching,memory,large-data,C#,Caching,Memory,Large Data,我正试图找到一种最好的方法,在不访问数据库的情况下使用C#管理内存中的大量数据。(当这些信息成为最终信息时,数据库将仅用于存储其中的一部分) 当我说“大量数据”时,我指的是数百兆字节,我想管理一个复杂的结构,而不仅仅是一个包含数百万条记录的表 我需要尽可能快地在它们内部搜索,当它们过时时,我需要能够删除其中的一部分 幸运的是,我可以将这些数据拆分为不需要以某种方式关联的组…因此我不需要在数百万之间查找或更新一行,但类似于在50000个其他组之间查找一个组,搜索、添加和删除此组中的数据,并在过时时

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

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

我需要尽可能快地在它们内部搜索,当它们过时时,我需要能够删除其中的一部分

幸运的是,我可以将这些数据拆分为不需要以某种方式关联的组…因此我不需要在数百万之间查找或更新一行,但类似于在50000个其他组之间查找一个组,搜索、添加和删除此组中的数据,并在过时时删除所有组

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


管理这种情况的最佳方法是什么?Windows或.Net framework有任何类型的限制都会造成问题?

您应该可以使用内存将数据存储在数据结构中,并处理数据。取舍是,内存将不可用于运行在同一服务器上的其他应用程序。此外,当您尝试将数据从内存提交到磁盘/DB时,大数据所花费的时间也会更长

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


您还需要设置一个更新/刷新缓存的策略。它可以是每小时、每天、每周;取决于您的需要。

这是一项复杂的任务,如果您真的不觉得有必要自己编写代码,我认为您应该查看一些现有的内存数据库,这些数据库可以提供此功能。如果找到可靠的产品,我不需要编写特定的内容……内存数据库是一个好主意……至少需要加以考虑。我看到其中一些是有点贵,其他一些是免费的,但在测试年。我看到SqLite也可以在内存中工作……也许对我来说是一个很好的解决方案。