偶希望可以使用结构化存储来解决巨型树结构的问题,大家帮忙瞧瞧可行性,多谢了...

编程语言: c#

问题描述:


      这棵树是用在大型ftp站的搜索服务中的,除了要存储大量的目录结构信息,还需要对目录的改变作出即时的改变.因为这颗树是一个小型插件的一部分,占用太多内存,似乎就显得比较龌龊了,所以把这么一棵树部署在内存中是说不过去的.曾经考虑了多种方案,例如虚拟内存,内存映射文件;索引文件;XML等等.

使用虚拟内存和内存映射文件甭说了,一坨一坨的非托管数据结构和托管数据结构的转换,效率那是超级低的.

索引文件似乎是个不错的选择,按照常用的搜索条件建立索引,多级定位...但是大家要找的文件稀奇古怪,什么都有.而且,似乎难于即时的反映文件系统的变化,而且非常复杂,偶没有设计过Cache,经验欠缺,这个东东对我来说,困难 sad_smile.gif.

XML搜索起来方便,即时反映文件变化也方便,唯一的缺点是要动它,就得用XmlDocument,这东西卡拉一家伙就把整个文档都读进来了,内存就 confused_smile.gif....

结构化存储似乎是个好东西,我可以用文件夹名字命名IStorage,用一个IStream来存储该文件夹下所有文件的信息.例如:文件名,创建时间之类.

用结构化存储的好处就是自然的树型结构,添加删除方便.就是搜索的速度稍微有点slow.
IStorage的一些子对象的管理操作,像什么EnumElements,MoveElementTo,RenameElement,DestroyElement都比较慢.

另外,用一个IStream来存储该文加夹下所有的文件信息,而不是一个文件一个IStream是因为流对象是以512字节为一个单位进行申请,一个文件一个IStream,太浪费了.


各路奶牛,可有什么好的建议嘛?兄弟在这里多谢了先.
                                                                                                                    (Nineteen.bbs@bbs.tsinghua.edu.cn)

转载于:https://www.cnblogs.com/dotShare/archive/2004/06/19/17161.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值