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

编程语言: c#

问题描述:


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

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

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

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

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

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

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


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

posted on 2004-06-19 18:53  .Share  阅读(1298)  评论(10编辑  收藏  举报

导航