如何在C#中使用非常大的字典?

pas*_*ena 6 c# memory

我想在C#应用程序中使用查找映射或字典,但是它应该存储1-2 GB的数据.

有人可以告诉我是否仍然可以使用字典类,或者我是否需要使用其他类?

编辑:我们有一个现有的应用程序,它使用oracle数据库来查询或查找对象详细信息.然而它太慢了,因为相同的对象被反复查询.我觉得在这种情况下使用查找映射可能是理想的,以改善响应时间.但是我担心尺寸会不会成为问题

RQD*_*QDQ 7

简答

是.如果您的计算机有足够的内存用于结构(以及程序和系统的其余部分(包括操作系统)的开销).

答案很长

你确定你要?如果不了解您的应用程序,很难知道建议的内容.

  • 数据来自哪里?一份文件?文件?一个数据库?服务?
  • 这是一种缓存机制吗?如果是这样,一旦他们暂时没有被访问,你可以将项目从缓存中过期吗?这样,您就不必一直将所有内容都保存在内存中.
  • 正如其他人所建议的那样,如果您只是想存储大量数据,那么您可以只使用数据库吗?这样您就不必一次将所有信息都存储在内存中.通过索引,大多数数据库都能很好地执行快速检索.您可以将此方法与缓存结合使用.
  • 将在内存中的数据是只读的,还是在发生变化时必须将其保留回某个存储?
  • 可伸缩性 - 您是否预计随着时间的推移,将存储在此字典中的数据量会增加?如果是这样,你将会遇到购买能够处理这些数据量的机器非常昂贵的问题.如果是这种情况,您可能希望查看分布式缓存系统(AppFrabric可以想到),因此您可以横向扩展(更多计算机)而不是垂直扩展(一个非常昂贵的故障点).

UPDATE

根据海报的编辑,听起来缓存在这里会有很长的路要走.有很多方法可以做到这一点: