结构化存储课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
十五. 结构化存储 概念 文件系统 从文件系统到结构化存储 存储对象和流对象 结构化存储特性 复合文档 结构化存储的实现 LockBytes对象. 创建基于内存的复合文档 创建基于文件的复合文档 打开复合文档 复合文档的CLSID 永久对象 例子: MFC实现永久对象 例子:复合文档 1 概念 1.1 文件系统 在操作系统诞生之前,应用程序处理底层的存储设备。 操作系统引入了文件系统。把应用系统和底层的存储设备区分开来。多个应用可以同时使用一个存储设备。操作系统为应用程序提供了抽象的流式的存储结构。 文件系统把存储设备按照树状结构重新组织起来。如UNIX的文件系统,Windows文件系统。 目录,文件。 目录是文件的容器。文件的数据可以存储在不连续的存储区域。文件系统会管理这些区域。 操作系统提供了一组系统调用(Unix)或系统API(Windows)给应用系统。应用系统通过系统调用或API来操作文件,从而操作存储设备。 应用系统使用文件描述符(Unix)或文件句柄(Windows)来代表打开的文件。 多个进程可以同时访问一个文件。这些进程需要采用同步机制来保证操作的一致性。事实上,这种处理很困难。 1.2 从文件系统到结构化存储 结构化存储把文件系统的概念引入到文件内部。从而在存储结构上支持多应用程序的并发访问。 主要思想:在文件内部构造一个树状层次结构。由存储对象和流对象构成。根节点为根存储,根存储下面可以有子存储或流对象。子存储下面可以再有子存储或流对象。存储对象本身不包含信息,它是子存储和流对象的容器。流对象是叶子节点,是数据的载体。这种结构称为文件内部的文件系统,这样的文件称为复合文档。 Word Excel PowerPoint Visio 等文件都是复合文档。 结构化存储使得多用户方便地并发访问一个文件。各个应用访问属于自己的存储对象。 部分访问。增量访问。 1.3 存储对象和流对象 COM库提供了结构化存储的实现,它提供了一组接口和API函数,应用程序利用这些接口和函数来完成结构化存储操作。结构化存储定义的存储对象和流对象由COM库实现,应用程序不需要实现这两个对象。 流对象实现了IStream接口: class IStream::public IUnknown (P207) Read, Write, Seek,CopyTo Commit 把所有变化提交到包容该流对象的存储对象。 Revert rollback取消上次提交以来的所有操作。针对事务模式的流 存储对象实现了 IStorage接口: class IStorage:public IUnknown (P208) CreateStream OpenStream 操作子流对象返回IStream接口指针 CreateStorage OpenStorage 操作子存储对象,返回IStorage接口指针 EnumElements 枚举所有的子流对象和子存储对象。 commit Revert。针对事务模式的存储。 Stat 获取存储对象的信息。 1.4 结构化存储特性 1.4.1 访问模式 创建 临时存储 直接模式和事务模式 优先 读、写权限 共享权限 1.4.2 事务机制 创建、打开存储和流时可以指定事务模式。 只有Commit后,所有的变化才提交到上级。revert可以恢复到上次commit以来的状态。 根存储上commit则会写到磁盘。revert会恢复创建、删除、修改子对象到原先的状态。 事务可以嵌套。 事务的嵌套以嵌套标志为基础而不完全取决与层次结构。(中间层次可能不使用事务) 事务针对写模式而不是读模式 事务的实现是在内存中或临时文件中保存文件拷贝的方式。所以消耗资源。 在直接模式下,revert操作没有意义,commit操作仅仅对根存储相当于flush操作。在此模式下,我们不能假设所有的操作会马上影响到文件系统,修改有可能被缓存 1.4.3 增量访问 减少保存和打开文件减少操作时间。必要时才访问。 降低了系统对资源的要求。 1.4.4 注意事项: 必须从根存储出发使用Open*或Create*逐个访问才能到达底层。 文件碎片。(调用根存储CopyTo解决) 2 复合文档 结构化存储的实现 2.1 LockBytes对象. 实现结构化存储: 根存储与底层的存储介质结合 实现存储对象和流对象。 复合文档(Compound Document)提供 “LockBytes”对象来实现根存储与底层介质的联系。底层介质可以是磁盘文件、内存或用户自定义的虚拟空

文档评论(0)

xiexie2012 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档