我有一个项目,有一个相当复杂,嵌套(引用,呼吁所引用的对象上下)的对象(class)储存在一个词典,如:

public static Dictionary<string, Object1> DObject { get; set; }

要素※1是一个复杂的类。它不像是一个"地址簿"或"人信息"类。类本身已经阵列、字典的另一个对象。这些对象引用类以上,等等。

因为DObject可1GB+在存储器,我要serialize到一个文件使用BinaryFormatter.因为我需要加载此目的,我在考虑使用MemoryMappedFile.新键的和价值观可能加入的字典。对象可能会有更多的数据(补充/更新),等等。不疯狂多变的大小?我怎么访问某些关键在DObject在存储器的映射的文件?是否有一个搜索机制等hashtable在的记忆,所以我可以找到一个某些关键像一个典和获得其价值?这是怎么疯狂多的工作?

我想的想法。有一个大的磁盘上的文件(2GB+).我更新对象在字典中的快速磁盘上像拥有一个储存在磁盘上。一切都快。关键价值的看了所有的方式。我看起来,编辑的价值,保存,等等。我会快速访问该2GB+对象的任何时候我想要的。如果周转基金的服务器重新启动,我就需要快速访问该2GB+尺寸的对象。这就是为什么我想1)化的2)。负载和阅读从/向霉酚酸酯.我主要关注的是速度在这一时刻。我不能再装这2GB数据从零开始,每次我调试该项目,换句话说(它需要很长的时间)。

任何建议、想法和思想上我应该怎么处理这种情况。

有帮助吗?

解决方案

你不能一直 DObject 在一个存储器映的文件。.净的对象往往走动的时候,你不能强迫他们留在一个地方,在存储器(你可以销他们,但你真的不想)。你可以列化的目的和将它写入文件,但这将意味着书写的超过1gb的数据每个时间。

为什么不去的标准的方式,以及'serialize'你的对象的一组数据库的数据表?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top