COM原理及应用---- 结构化存储

1、结构化存储

COM的结构化存储(structured storage)机制,也称为永久存储(persistent storage)机制。结构化存储可以说是软件存储技术的一个重要进展,COM针对组件软件的需要,在文件系统的基础上,提出了结构化存储的概念。利用结构化存储,组件程序之间可很好地协同工作,一个组件程序可以与另一个组件程序共享同一个文件,就如同一个应用程序与另一个应用程序共享同一个磁盘文件系统一样。

COM定义了结构化存储的规范,包括一组接口和实现这些接口成员函数的一些规则;同时COM也提供了结构化存储的实现,即复合文档技术。复合文档技术是 OLE的基础。OLE最初的目标是在文档中嵌入或链接对象,当然现在OLE的发展已经超出了这个范围,但复合文档仍然是OLE的基础存储技术。

2、结构化存储的引入

组件化程序设计方法把应用系统设计成多个组件程序,如何在这些组件程序之间以共享方式访问同一个文件是组件化程序设计必须要解决的问题。而多个组件通过文件句柄访问共享文件难以实现,结构化存储技术“借用”文件系统的概念,在文件内部构造了一个类似于文件系统的树状层次结构,解决了这一问题。

结构化存储的层次结构的节点可以是两种对象:存储对象和流对象,每个存储对象或者流对象都是一个可独立进行读写操作的对象,组件程序只对它拥有的节点对象进行操作。从应用系统整体上看,这些组件程序在共享访问同一个文件。

3、文件系统

操作系统的诞生把应用程序与底层存储设备隔离开来,操作系统为应用程序的运行提供了基本的抽象环境,它可以处理所有与存储设备有关的基本操作。同时,操作系统引入了文件系统的概念,允许多个应用程序共享同一个存储设备。而且,操作系统为应用程序提供了一种抽象的流式存储结构,应用程序仍然独立地访问它自己的存储空间,不同应用程序相互之间不受干扰。

4、文件系统与结构化存储的框图

5、存储对象和流对象

对于一个完整的存储操作来说,它被分为两个层次:应用程序调用API函数;操作系统提供API函数的实现。COM库提供了结构化存储的实现,它提供了一组接口和API函数供组件程序调用来完成实际的存储操作。因此,结构化存储定义的存储对象和流对象由COM库实现,应用程序或者组件程序并不需要实现这两个对象,就好比应用程序不需要实现文件句柄或者目录对象一样。

流对象非常类似于单独的磁盘文件,它也是进行数据读写操作的基本对象,利用流对象可以保存各种类型的数据,它有自身的访问权限和一个独立的搜索指针。流对象也用一个字符串作为其名称,就好像文件名一样。流对象是一个由COM实现的组件对象,它实现了基本的COM接口IStream,应用程序通过 IStream接口访问流对象,进行各种数据访问操作。

存储对象类似于目录对象,它也有一个字符串名称,但它本身并没有存储数据信息,它作为其子存储对象和子流对象的容器,只记录了这些子对象的信息。存储对象暴露IStorage接口,客户程序通过IStorage接口对存储对象进行操作。

应用程序或者组件程序可以通过结构化存储机制共享同一个复合文件,存储对象和流对象也可以在这些程序之间被共享访问,即使这些程序运行在不同的进程中。

6、结构化存储特性――访问模式

存储对象和流对象支持两种基本的访问模式:直接访问和事务访问模式。在直接访问模式下,程序对存储对象或者流对象的修改操作马上生效;而在事务模式下,程序对存储对象或者流对象所作的修改被缓存起来,只有当提交(Commit)时才真正有效,如果调用Revert成员函数,则可以恢复到上次提交或刚打开时的状态。

7、结构化存储特性――事务机制

在结构化存储的树状层次结构中,事务特性可以适用于所有层次上的对象,因此,事务特性可以嵌套使用。

事务机制需要消耗较多系统资源。

8、结构化存储特性――命名规则

在结构化存储的树状层次结构中,每个存储对象和流对象都有一个字符串名字。

根存储对象的名字实际上就是复合文档的文件名,所以根存储对象的命名规则受文件系统影响,它遵守文件系统的命名约定。与创建和打开根存储对象有关的函数中,直接使用文件名即可。所有非根存储对象和流对象都由它们的父对象管理,由于它们存在于文件内部,因此它们的命名规则遵守COM给出的约定。

时间: 2024-08-18 08:34:33

COM原理及应用---- 结构化存储的相关文章

阿里HBase超详实践总结 | 一文读懂大数据时代的结构化存储

前言 时间回到2011年,Hadoop作为新生事物,在阿里巴巴已经玩得风生水起,上千台规模的"云梯"是当时国内名声显赫的计算平台. 这一年,Hadoop的好兄弟HBase由毕玄大师带入淘宝,开启了它的阿里之旅.从最初的淘宝历史交易记录,到去年的支付宝消费记录存储在线历史存储统一:从蚂蚁安全风控的多年存储演进,到HBase.TT.Galaxy的大数据激情迭代:HBase在阿里经历过年轻的苦涩,释放过青春的活力,也付出过成长的代价.几代人的不懈努力下,五年陈的HBase开始表现出更成熟.更

大数据时代的结构化存储—HBase在阿里的应用实践

前言 时间回到2011年,Hadoop作为新生事物,在阿里巴巴已经玩得风生水起,上千台规模的"云梯"是当时国内名声显赫的计算平台. 这一年,Hadoop的好兄弟HBase由毕玄大师带入淘宝,开启了它的阿里之旅.从最初的淘宝历史交易记录,到去年的支付宝消费记录存储在线历史存储统一:从蚂蚁安全风控的多年存储演进,到HBase.TT.Galaxy的大数据激情迭代:HBase在阿里经历过年轻的苦涩,释放过青春的活力,也付出过成长的代价.几代人的不懈努力下,五年陈的HBase开始表现出更成熟.更

闭关纪要3.C#的结构化存储功能以及在Web开发之中的应用

这次,我来谈一点高深的话题:结构化存储(Structured Storage). 也许有人要奇怪我为什么研究到那个东西去了,不就是个打杂的么?还要研究这些东西?我先说说来由. 我的网站上的地名信息系统一共包含70万个文件,这么多的文件处理起来是很成问题的,例如采用以下方法: 1.不在服务端任何缓存处理,直接在用户访问时返回页面,这样的话,缺点是反应速度慢,对Web服务器和数据库服务器产生的压力挺大,毕竟,与地图相关的查询通常是比较耗性能的(据我所知,一般的地图公司的查询引擎很少基于SQL). 2

大数据时代结构化存储云HBase技术架构及最佳实践

在10年,阿里研究HBase,是为了解决阿里容量及并发的实际问题,按照数据库要求,阿里深入HBase技术,并致力于保障稳定性和性能,目前已经有10000台规模,数百个集群,大约1亿的QPS,服务整个集团的业务.17年,把这部分能力也开放给公有云客户.本文中,阿里云高级专家封神带来了主题演讲<大数据时代结构化存储云HBase技术架构及最佳实践>,介绍HBase的应用选择.实战案例.技术平台解读以及后续的规划. 为什么应用HBase 一般而言,传统关系型数据库面临着成本.容量.QPS.分析等多方面

关于文本结构化存储

问题描述 现在正在用c#写一个案例库管理系统,想要对文本案例中的关键属性及相应属性值进行提取并结构化存储管理.具体若已知一篇txt格式的新闻文本,并且用正则表达式编写了一些语义规则,如何基于这些规则抽取出文本的相应字段?比如有一句话"事故伤亡人数为56人",怎么把"56"抽取出来?要完成这些工作具体会涉及到什么技术思想原理?小白一枚不知从何下手,还请大神们指点一二 解决方案 解决方案二:privateList<string>GetInfo(stringi

简述云存储在非结构化存储管理下的12大优势

非结构化数据,显而易见就是把信息存储在文件系统中,而不是数据库中的一种数据.据IDC的研究人员表示,如今现在有80%的企业数据是非结构化数据,而且每年都以60%的年增长率在增加.研究人员称,经常性使用的数据比例平均只有1%到5% .而未被使用数据,数量是如此的庞大并在不断的在增加,占据了企业内部第一层存储的大部分空间,是的存储资源浪费不少. 如今,使用云存储,只需支付云存储服务水平协议费用,越来越多的IT部门采用云存储模式.在不影响日常工作的情况下,如何更好地存储全球范围,那些尚具有潜在价值的不

非结构化数据存储与管理

问题描述 非结构化数据该怎么存储与管理呀?在网上看到的使用数据库或者数据库+文件系统,这在hadoop和swift中是如何体现的呢? 解决方案

《Effective Ruby:改善Ruby程序的48条建议》一第10条:推荐使用Struct而非Hash存储结构化数据

第10条:推荐使用Struct而非Hash存储结构化数据 哈希表是Ruby程序员经常使用的一种有用的.通用的数据结构.Hash类提供了使用哈希表的简单的接口,与数组一样,它是Ruby的重要部分之一,该类有自己专用的语法来创建新的实例.当需要使用键值对时,Hash类绝对是首选.事实上,Ruby程序员在任何时候都会使用哈希,甚至方法的参数关键字也是使用Hash类语法糖来实现的.哈希如此通用,因此能被用来对类型进行模拟,比如数组.集合,甚至基本对象.在OOP语言中,当用到结构化数据时,我们往往有比哈希

IBM发布面向大数据及非结构化工作负载的DeepFlash 150全闪存存储

IBM本周二扩大了自己的全闪存存储产品线,增加了一款瞄准大数据和其他非结构化数据应用的产品. "新推出的IBM DeepFlash 150计划从本周晚些时候开始出货,针对那些要求标准全闪存存储解决方案不具备的容量的应用."IBM存储系统.文件和对象存储产品总监Alex Chen表示. 大多数全闪存存储阵列专注于更为传统的应用,例如VDI虚拟桌面.块存储和在线交易处理等. 分析师告诉我们,有80%的数据都是非结构化的,大数据对于闪存存储来说是一个不同的问题.自有了大数据,数据就迈向了PB