版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据管理模块(Data Manager)新增功能说明书文档负责人:朱金清文档编写人:朱金清文档系统版本号:OrientX Version 3.0文档完成时间:2007/8/25开发单位:中国人民大学IDKE实验室XML工作组1. 概述本模块介绍数据在OrientX系统中的管理,包括数据的存储方法,数据的导入导出,数据的存取等。向上层查询模块提供接口的是DataManager类。它通过调用Schema类实现模式文档的解析和数据集的建立,通过调用ImportHandler类实现XML格式的文档的导入,上层模块利用它的导航接口可以提取想要的数据对象。由于原来讲schema绑定到数据集中,造成了接下来
2、要完成的更新功能的不便,本文档应运而生。在schema和数据集分开的前提下,自然也就达到操作上的松耦合。Schema的创建和DataSet的创建是两个独立的步骤,同样的删除一个DataSet不再涉及Schema的删除。所以现在将修改(包括添加)的函数在下面第二部分中陈述。2. 数据结构描述2.1 NxdbDataManager 类 NxdbDataManager类可以说是这个模块的主要接口的类,它的功能主要有向上层提供管理数据接口,包括: 1) 数据集的建立、删除2) Schema的注册、删除3) 数据文件的导入导出4) 存取查询需要的数据NxdbDataManager类就是封装了这些功能的接
3、口,下面是NxdbDataManager类的具体实现1. 数据成员2. 成员函数(1) int CreateDataSet(char* dataSetName)函数名称CreateDataSet()函数输入dataSetName: 要创建的DataSet的名称函数输出0 创建成功-1 创建失败函数功能就是调用下层AccessManager接口,创建相应的data set。函数算法描述实现基本上比较简单,就是调用下层的函数接口要做的事情主要有:1) 判断原来是否存在同名的DataSet2) 若不存在,则创建新的DataSet3) (原来的系统)创建OidDataSet(2) int Import
4、Doc(char* dataSetName,char* docName ,char* URL,StorageMode storageMode = DEBMode,EncoderMethod encoderMethod)函数名称ImportDoc()函数输入dataSetName: 文档导入的目标Data set namedocName: 要导入的文档名URL: 当前导入文档对应的schema的URLstorageMode: 文档的存储格式(DEB,DSB,CEB,CSB)encoderMethod:文档的编码方式(RegionCode32Encoder等)函数输出0 导入成功-1 导入失败函数
5、功能在指定的数据集中导入指定的文档,并按照指定的存储格式存储注意:获取DTDTree的时候是通过URL在B+树中查找,然后获取相应的SchemaID(其实是页中的pageNo来标识),接着通过此SchemaID函数算法描述本文件主要是调用SAX2提供的文档导入接口,根据遍历文档遇到不同的节点而调用自定义的处理函数,因此在该函数主要是设置我们的处理函数。主要由SAX2XMLReader以下两个来完成:setErrorHandler(ErrorHandler* const handler);setContentHandler(ContentHandler* const handler);(3)in
6、t RegisterSchema(char* dtdFileName,char* URL)函数名称RegisterSchema ()函数输入dtdFileName: 要导入的schema的文件URL: 要导入的schema的URL地址函数输出0 导入成功-1 导入失败函数功能注册一个schema,并将其命名为URL,主要是在DataSet号为2的DataSet中注册一个Schema,主要完成的任务是将*.xsd文件读取出来并解析成DTDTree,然后将DTDTree打成流存储在磁盘中。函数算法描述利用SchemaParser将*.xsd文件解析成DTDTree将DTDTree解析成字节流然后存
7、储到磁盘中将Schema存储后得到的SchemaNO和URL存储到Schema索引中,其中Schema索引包括URL,NO,RegisterTime,其中URL为主索引,而NO为二级索引。(4)int ExportDoc(char* dataSetName,char* oldDocName,char* newDocName)函数名称ExportDoc()函数输入dataSetName:要导出的文档所在的DataSetNameoldDocName: 要导出的文档的原始名称newDocName: 要导出的文档的新名称函数输出0 导入成功-1 导入失败函数功能将某个文档到处到新的文档中函数算法描述调
8、用StorageFormat的ExportDoc2007-07-22CDEBStorageMode(1)ElementNode* CDEBStorageMode:GetParent( ElementNode* cele )实现步骤:1. 获取cele的父亲结点,如果父亲节点为ElementNode,则返回,否则执行下一步骤2. 获取父亲结点(为RecordNode),然后读出父亲结点的parent Code Buffer,3. 对CodeBuffer进行解析(ReadDEBRecIndexKey函数)4. 对解析出来的Code的IndexKey(RegionCode32对应的m_start),
9、如果是0,那么当前结点为根节点,那么根节点的父亲结点为空NULL。5. 通过Code去ElementNodeCache中查找,找到则返回,并修改指针6. 如果找不到,那么利用GetElement(Code*)去Disk中解析出ElementNode,然后修改相应的指针.7. ElementNode结点在Cache中不存在,那么将ElementNode加入到Cache中以备下次使用(2)ElementNode* CDEBStorageMode: GetFirstChild( ElementNode* cele )1. 首先得到cele的firstChild记作curNode,如果curNode不
10、为空,进行以下三个步骤地循环体,如果curNode为空那么跳出循环,执行第5步。2. 如果当前结点为ElementNode,那么返回当前结点。3. 如果当前结点为TextNode,那么将curNode指向curNode的右兄弟。4. 如果当前结点为RecordNode,那么跳出循环。5. 如果curNode结点位NULL,那么返回NULL6. 此时当前结点curNode为RecordNode,首先判断curNode->root是否为空,如果不为空,那么返回的结果为curNode->root,然后修改指针;如果为空,执行以下步骤7. 如果为空,首先根据curNode中的pCode和m
11、_DocID去缓存中查找,如果找到相应的ElementNode,那么返回的结果为找到的ElementNode,如果找不到ElementNode,那么根据pCode首先去CodeRecAddressIndex中查找出地址,然后根据地址去磁盘中还原出相应的ElementNode,然后返回这个ElementNodeMetadata Manager模块功能说明书1. 概述一个数据库系统,元数据信息的管理应该作为一个单独的模块进行管理,所有在撇开原有数据的捆绑之后,元数据开始有自己的管理家园了。本模块主要负责元数据(Schema信息)的管理,主要包括Schema的注册,Schema的保存,Schema的
12、加载(导出DTDTree)和Schema的删除功能。在第二部分详细介绍下Metadata的各个接口及其实现的细节。2. 数据结构描述2.1 MetaDataManager类本类主要负责Schema信息的主要功能实现类,包括系统运行开始时的初始化,然后用户进行的Schema的注册,Schema的保存、删除和加载等操作。需要注意的是,在Metadata进行保存的同时,因为用户只对Schema URL感知,而对底层的SchamaNO(可以理解成为Schema在系统中的ID号)却一无所知,所以得有一个专门负责管理Schame的登记的工具,简称为Schema URL和ID号的映射表,简称表<URL
13、,SchemaNo>。对于表<URL,SchemaNo>的管理,本系统借用Bekerley DB进行管理,所以在初始化阶段必须把相应的Bekerley初始化好,然后在进行Schema的注册时要把相应的项加入到Bekerley DB中。2.2 MetaDataManager的成员函数(1) void Initialize()函数名称Initialize ()函数输入无函数输出无函数功能首先因为本系统中,每个数据单元的申请都是以DataSet的形式申请的,所以Metadata也是属于一个DataSet的,本系统规定2号Set属于Metadata的,初始化对应的<URL,Sc
14、hemaNO>索引表。函数算法描述实现基本上比较简单,就是调用下层的函数接口要做的事情主要有:4) 判断2号Set是否存在5) 若不存在,则创建新的SET,名称为DTDDATASET6) 初始化<URL,SchemaNO>索引表。(2) void RegisterSchema(char* url, char* dtdfile)函数名称RegisterSchema ()函数输入char* url : 要导入的Schema的URL(此时URL没有前缀),其中前缀为:"char* dtdfile :要导入的Schema文件的文件全路径名称函数输出无函数功能将没有前缀的UR
15、L构造成有前缀的URL,然后将Schema文件通过SchemaParser类型解析成DTDTree,然后对DTDTree进行编码函数算法描述主要完成Schema保存和<URL,SchemNO>索引表的添加:1) 获取完整的URL(Prefix + 文件名“bib.xml”等)2) 将Schema文件解析成DTDTree3) 对DTDTree进行编码4) 保存(DTDFlusher函数)DTDTree(注意:这里面,因为遗留下来的DTDTree中有一个setID,这里把它引用过来,不过它的意义不是setID了,而是对于2号数据集也就是Scheme专用的数据集的逻辑页号。)5) 将第一
16、步和第四步分别得到的URL和setID(实际上为lpNO)组成一个项保存到索引表中。(3) void DeleteSchema(char* url)函数名称DeleteSchema ()函数输入char* url : 要删除的Schema的URL其中前缀为:"函数输出无函数功能删除相应的schema 函数算法描述1) 首先通过URL在<URL,SchemaNO>索引表中查找2) 如果找不到,则返回3) 如果找到,此时这个SchemaNO就是在DataSet中的逻辑页号,将这段空间利用AccessManager的free操作即可释放(4) void ExportSchema
17、(char* url)函数名称ExportSchema ()函数输入char* url : 要导出的Schema的URL其中前缀为:"函数输出无函数功能导出相应的schema 函数算法描述存储模块改进功能设计说明书1引言编写本说明书是为了向读者介绍OrientX系统中,数据存储模块的设计思路及使用方法。需要注意的是另一个模块:数据存取模块。虽然这两个模块在名字上只有一字之差,但两个模块在功能作用上有很大的不同。本模块重点介绍在OrientX系统中四种存储方式的特点和实现。而数据存取模块重点在数据的导入、导出和存取,及相关的数据模式的建立。2总体设计设计背景:由于原系统在处理数据存储时
18、,对于不同的存储策略比如DEB或者DSB等,都在同一个函数中实现,通过每个结点的不同类型用SwitchCase语句进行区分,这样给代码阅读和实现以及以后的维护都带来一定的困难,所以提出,各自分工,各行其职的方法,Version3.0版本主要为了实现Update功能,所以只实现了DEB存储策略的储存及其数据获取方法。设计方案及其总体思想:1、首先,每个记录的保存发生变化。同样地,也是利用SAX接口,在遇到相应的字符时调用相应的回调函数,这些处理都与先前的版本一样,但是在endElement时,保存每个记录的数据内容不同,现在,由于脱离了Schema的捆绑约束,而引入了每个TagName对应的全局<ID,Name>影射表。每个结点需要保存的内容有:(1)父亲结点的Code对应的有效标识(2)当前结点的TagID,Code,(3)孩子结点的Tag,Code对应的有效标识。具体存储
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 燃气门站安全运行方案
- PDP性格测试(完整版题目+详细真人版解析)
- 2026年特种设备安全管理人员安全操作知识模拟试卷(附答案)
- 2026年出版专业初级职业资格考试编辑加工与校对模拟试题含答案
- 危险化学品经营安全技术操作规程
- PCB专业技能考核试题(含详细答案)
- 自动售检票系统运维安全操作规程
- 2026年家庭药师服务需求试题及答案
- 2026年陕西省人力资源和社会保障厅下属事业单位考试真题(附答案)
- 施工现场卫生防疫及消杀工作方案
- 2025年6月浙江省高考化学试卷真题(含答案及解析)
- 《中药炮制学》课程教学大纲
- 心力衰竭消化道出血课件
- 辽宁现代服务职业技术学院单招数学真题及完整答案详解【考点梳理】
- 内衬(覆)不锈钢复合钢管管道工程技术规程
- 高中数学分层练习(基础题):圆锥曲线(60题)
- 院前急救病历书写规范
- 电梯维修培训教程
- 《伤寒论》课件-葛根黄芩黄连汤证
- 机械制造加工车间安全手册
- 社区综合治理工作汇报
评论
0/150
提交评论