我想在C#应用程序中使用查找映射或字典,但预计会存储1-2 GB的数据。
有人可以告诉我是否仍然可以使用字典课程,或者我是否需要使用其他课程?
编辑:我们有一个现有的应用程序,它使用oracle数据库来查询或查找对象详细信息。然而它太慢了,因为相同的对象被反复查询。我觉得在这种情况下使用查找映射可能是理想的,以改善响应时间。但是我担心尺寸是否会成为问题
答案 0 :(得分:7)
简答
是。如果您的机器有足够的内存用于结构(以及程序和系统的其余部分(包括操作系统)的开销)。
长答案
你确定要吗?如果不了解您的应用程序,很难知道建议的内容。
<强>更新强>
根据海报的编辑,听起来缓存在这里会有很长的路要走。有很多方法可以做到这一点:
答案 1 :(得分:1)
只要你使用64GB的机器,是的,你应该可以使用那么大的字典。但是如果你有太多的数据,数据库可能更合适(cassandra实际上只是一个巨大的字典,而且总是有MySQL)。
答案 2 :(得分:1)
当你说1-2GB的数据时,我认为你的意思是这些项目是累积含1-2GB的复杂对象。
除非它们是结构(并且它们不应该是),否则字典并不关心这些项目的大小 只要你有少于2个 24 项目(我从帽子中取出这个数字),你可以尽可能多地存储在内存中。
但是,正如其他人所建议的那样,您应该使用数据库 您可能希望使用内存数据库,例如SQL CE。
答案 3 :(得分:0)
你可以但是对于像你最好使用数据库
那样大的字典答案 4 :(得分:0)
使用数据库。 确保你有一个好的数据库模型,输入正确的索引,然后离开。
答案 5 :(得分:-2)
您可以使用subdictionaries
。
Dictionary<KeyA, Dictionary<KeyB ....
其中KeyA
是KeyB
的一些常见部分。
例如,如果您有一个String
字典,则可以将第一个字母用作KeyA
。