1 / 20
文档名称:

结构化存储.ppt

格式:ppt   大小:273KB   页数:20页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

结构化存储.ppt

上传人:wz_198613 2018/6/23 文件大小:273 KB

下载得到文件列表

结构化存储.ppt

相关文档

文档介绍

文档介绍:1
1 概念
文件系统
在操作系统诞生之前,应用程序必须要处理底层的存储设备驱动。
操作系统引入了文件系统。把应用系统和底层的存储设备区分开来。多个应用可以同时使用一个存储设备。操作系统为应用程序提供了抽象的流式的存储结构。
文件系统把存储设备按照树状结构重新组织起来。如UNIX的文件系统,Windows文件系统。
根目录,子目录,文件。
目录是文件的容器。文件的数据可以存储在不连续的存储区域。操作系统会管理这些区域,用户会以为访问连续的空间。
操作系统提供了一组系统调用(Unix)或系统API(Windows)给应用系统。应用系统通过API来操作文件,从而操作存储设备。
应用系统使用文件描述符(Unix)或文件句柄(Windows)来代表打开的文件。多个应用程序可以同时访问一个文件。应用系统需要采用同步机制来保证操作的一致性。事实上,这种处理很困难。
第1页/共20页
2
结构化存储把文件系统的概念引入到文件内部。从而在存储结构上支持多应用程序的并发访问。
主要思想:在文件内部构造一个树状层次结构。由存储对象和流对象构成。根节点为根存储,根存储下面可以有子存储或流对象。子存储下面可以再有子存储或流对象。存储对象本身不包含信息,它是子存储和流对象的容器。流对象是叶子节点,是数据的载体。这种结构称为文件内部的文件系统,这样的文件称为复合文档。
结构化存储使得多用户方便地并发访问一个文件。各个应用访问属于自己的存储对象。
部分访问。增量访问。
从文件系统到结构化存储
第2页/共20页
3
存储对象和流对象
COM库提供了结构化存储的实现,它提供了一组接口和API函数,应用程序利用这些接口和函数来完成结构化存储操作。库实现,应用程序不需要实现这两个对象。
流对象实现了IStream接口:
class IStream::public IUnkown (P207)
Read, Write, Seek,CopyTo
Commit 把所有变化提交到包容该流对象的存储对象。
Revert rollback取消上次提交以来的所有操作。针对事务模式的流
存储对象实现了 IStorage接口:
class IStorage:public IUnkown (P208)
CreateStream OpenStream 操作子流对象返回IStream接口指针
CreateStorage OpenStorage 操作子存储对象,返回IStorage接口指针
EnumElements 枚举所有的子流对象和子存储对象。
commit Revert。针对事务模式的存储。
Stat 获取存储对象的信息。
第3页/共20页
4
结构化存储特性
访问模式
创建临时存储直接模式和事务模式优先读、写权限共享权限
事务机制
创建、打开存储和流时可以指定事务模式。
mit后,所有的变化才提交到上级。mit以来的状态。
mit则会写到磁盘。revert会恢复创建、删除、修改子对象到原先的状态。
事务可以嵌套。
事务的嵌套以嵌套标志为基础而不完全取决与层次结构。(中间层次可能不使用事务)
事务针对写模式而不是读模式
事务的实现是在内存中或临时文件中保存文件拷贝的方式。所以消耗资源。
在直接模式下,mit操作仅仅对根存储相当于flush操作。在此模式下,我们不能假设所有的操作会马上影响到文件系统,修改有可能被缓存
第4页/共20页
5
增量访问
减少保存和打开文件减少操作时间。必要时才访问。
降低了系统对资源的要求。
注意事项:
必须从根存储出发使用Open*或Create*逐个访问才能到达底层。
文件碎片。(调用根存储CopyTo解决)
第5页/共20页
6
2 复合文档结构化存储的实现
LockBytes对象.
实现结构化存储:
1。根存储与底层的存储介质结合
2。实现存储对象和流对象。
pound Document)提供了“LockBytes”对象来实现根存储与底层介质的联系。底层介质可以是磁盘文件、内存或用户自定义的虚拟空间。LockBytes对象是所有存储介质的一种抽象的表达方式。存储介质描述称为一般化的字节流,LockBytes对象负责从字节流中读取一批字节,把一批字节写到字节流中。
LockBytes对象实现了ILockBytes接口。这个接口只提供基本的读写操作。
COM库提供了缺省的基于文件句柄的LockBytes对象。提供了基于内存的LockBytes对象,可利用此对象建立基于内存的复合文档。
COM允许应用系统实现自定义的LockBytes对象,并建立复合文档。文件、内存、任何可以抽

最近更新