orientx: native xml 数据库系统
Post on 19-Mar-2016
179 Views
Preview:
DESCRIPTION
TRANSCRIPT
OrientX: Native XML 数据库系统
孟小峰 王宇 罗道峰 陆世潮 安靖 陈妍 蒋瑜 欧建波中国人民大学信息学院 ( 100872 )
xfmeng@mail.ruc.edu.cn
Outline 体系结构和特征 存储 索引
SUPEX 结构索引 结构索引使用的编码方法
查询处理 导航式查询处理 集合式查询处理
基于代价的查询优化 更新 基于角色的访问控制
OrientX 特征 基于模式 采用多种粒度的树形结构存储数据 支持描述化查询语言 XQuery 基于代价估计的查询优化方法 基于模式的路径索引 基于角色的访问控制 …
体系结构
图 1 OrientX 体系结构图
数据存储管理 索引模块 查询处理 数据更新 用户访问控制 模式管理 接口 查询更新处理流
数据导入导出流
查询处理
XML文档
用户访问控制
DTD文档 XSD文档
数据库建立维护管理
API
数据更新
模式管理 数据存取管理
查询处理语句
数据存储管理
数据、模式信息、用户信息、统计信息、索引信息DEB CEB DSB CSB
查询分解查询执行查询优化
数据缓冲管理索引管理
Outline 体系结构和特征 存储 索引 查询处理
导航式查询处理 集合式查询处理
基于代价的查询优化 更新 基于角色的访问控制
OrientX 存储策略 存储管理以记录为单位 , 逻辑含义是一棵子树,是读写的最小单位 一个 XML 文档包含若干个记录,多个满足同一个模式定义( DTD 或者 XML Schema )的 XML 文档放在一个数据集里。 EID ( AID )唯一地标志结点的类型 数据集用 SetID 来标志;在文件上划分逻辑物理块物理块用 LpNo 来标志;给定一对 <SetID , LpNo> ,能马上找到对应文件的相应的偏移量。
多粒度存储策略 四种存储方法
Element-based Depth-first Element Based(DEB) Clustered Element Based ( CEB )
Subtree-based Depth-first Subtree Based (DSB) Clustered Subtree Based (CSB)
多粒度存储策略
l1 l2 f2 f1
a1
b
t
a2
l1
l2 f2 f1
a1
b
t
a2
DEB 存储顺序 :t f1 l1 a1 f2 l2 a2 b 每个记录包含 EID , Text Value 和它的父记录的地址 PAddress 。
CEB 存储顺序 :a1,a2 聚簇存储在一个物理块; f1,f2 在一个物理块;l1,l2 在一个物理块; b, t 各在一个物理块。
DSB CSB
存储策略的选择 不同的文档适合用不同的方法来存储
当文档比较小的时候,采用深度优先方法 当文档比较大的时候,使用聚簇方法 文档性质比较强的文档,采用深度优先方法 数据性质比较强的文档,采用聚簇方法
为了处理上的方便,无论底层采取什么存储方法,对上层查询的接口都是一样的,这样,提供了一定的独立性。
Outline 体系结构和特征 存储 索引 查询处理
导航式查询处理 集合式查询处理
基于代价的查询优化 更新 基于角色的访问控制
SUPEX 索引策略 父子关系 祖先 -后代关系 绝对路径查询 相对路径查询
结构图
索引记录 DocId, RID, Level, Info
…
…
元素映射表
编码方法概述 三类编码方法:
Region-based: <start, end>, <order, size> Prefix-based: Dewey-code K-ary-tree-based: PBiTree
基于编码方法的索引和查询技术: EE-Join , EA-Join 和 KC-Join MPMCJN SHCJ, MHCJ,VPJ stack-merge
结构索引使用的编码 BitPath
思想: prefix-based 方法 好处:
与 region 或者 k-ary tree 方法相比,变长、更新代价小。 与其它 prefix-based 方法相比,不需要分隔符,减少存储空间,提高查询效率。
Outline 体系结构和特征 存储 索引 查询处理
导航式查询处理 集合式查询处理
基于代价的查询优化 更新 基于角色的访问控制
处理 XQuery 的核心问题 Path 路径的求值问题
结构连接 基于树的导航式处理
嵌套查询的解决方案 相关嵌套 非相关嵌套
XML 数据的有序性问题
XQuery 查询导航式实现方法的主要模块 语法分析 语义检查 生成执行计划 优化器
逻辑的 物理的
执行引擎
XQuery Execute Engine
导航式处理 XQuery 的结构图Query Interface
XPath Execute PlanXQuery Execute Plan
XPath Execute Engine
Data Manager
Type check Semantic Check
XQuery Parser
Optimize inline
产生执行计划的算法 构建执行计划
并不是先生成语法树再构建执行计划。 而是,语法分析的同时构建执行计划。
当规约成一个语法单元时,即构建一个相应的操作符 把构成该语法单元的子单元的对应操作符,置为新构建操作符的子操作;形成一棵执行计划树
例子 import default schema = "xmark" for $p in document('xsmall.xml') //people /person Let $i := $p//interest where $p/profile/@income >10000 return
<person> <profile>{$p/profile} </profile> {$i}
</person>
执行计划FLWR
ForVarBind LetVarBind ConditionTree EleConstructor
EleConstructor PathPath
$p in document('xsmall.xml') //people /person
$i := $p//interest
$p/profile/@income >10000
<person>
<profile>{$p/profile} </profile>$i
导航式处理FLWR
ForVarBind LetVarBind ConditionTree EleConstructor
EleConstructor PathPath
导航式处理FLWR
ForVarBind LetVarBind ConditionTree EleConstructor
EleConstructor PathPath
Evaluated true
导航式处理FLWR
ForVarBind LetVarBind ConditionTree EleConstructor
EleConstructor PathPath
Evaluated false
Outline 体系结构和特征 存储 索引 查询处理
导航式查询处理 集合式查询处理
基于代价的查询优化 更新 基于角色的访问控制
集合式查询处理 借鉴关系代数方法,引入 XML 代数,使操作变成一次一集合的操作。
XML Algebra 设计 设计思想 主要问题 难点
设计思想 引入关系中关于记录的概念,操作符的操作对象是记录的集合,若干操作符组成一棵操作符树,来表达一个查询。 记录是一棵 XML 树 操作符的分类
Extraction操作 Processing操作 Construction操作
主要问题 1:绑定到结点还是结点序列?(引入+ 修饰符)FOR $b in document(“books.xml”)//bookLET $a := $b/authorWHERE $b/year<1990RETURN < books_before_1990> <book> {$a} </book> < books_ before _1990>
FOR $b in document(“books.xml”)//book $a in $b/authorWHERE $b/year<1990RETURN < books_before_1990> <book> {$a} </book> < books_ before _1990> FOR $b in document(“books.xml”)//bookWHERE $b/year<1990RETURN <books_ before _1990> <book> {$b/author} </book> < books_ before _1990>
问题 2 :结构谓词结点和非谓词结点 <bib> { for $b in doc("http://bstore1.example.com/bib.xml")/bib/book where $b/publisher = "Addison-Wesley" and $b/@year > 1991 return <book year="{$b/@year }"> { $b/title } </book> }</bib>
问题 3 :表达式的嵌套(结果构造符多次使用)
<result>FOR $b in document(“books.xml”)/bib/bookRETURN <books_price_and_review> {$b/title} {$b/price} {FOR $r in document(“reviews.xml”)//review WHERE $b/title = $r/title RETURN $r/content } </books_price_and_review></result>
<result>FOR $b in document(“books.xml”)/bib/book $r in document(“reviews.xml”)//review WHERE $b/title = $r/titleRETURN <books_price_and_review> {$b/title} {$b/price} {$r/content} </books_price_and_review> </result>
问题 4 :谓词的作用域 for $v in document(“book.xml”)//vendorwhere $v/address=”beijing”return <vendor_books> {$v/name}{$v/book[title=“C++”]} </vendor_books>
for $v in document(“book.xml”)//vendor $b in $v/bookwhere $v/address=”beijing” and $b/title=“C++”return <vendor_books> {$v/name}{$b} </vendor_books>
问题 5 :值绑定和引用绑定 有了中间结果,要不要与源数据发生联系?
难点 Pattern Tree Matching 的策略选择
导航式 结构连接 混合
Outline 体系结构和特征 存储 索引
SUPEX 结构索引 结构索引使用的编码方法
查询处理 导航式查询处理 集合式查询处理
基于代价的查询优化 更新 基于角色的访问控制
基于代价的查询优化方法 采用直方图方法统计 XML 数据的分布情况 与模式统计信息相结合形成统计信息模型 通过六种不同的直方图运算 , 计算任意路径中任意子路径的选择性
代价计算实例 n1/n2//n3/n4[a>v]
Outline 体系结构和特征 存储 索引
SUPEX 结构索引 结构索引使用的编码方法
查询处理 导航式查询处理 集合式查询处理
基于代价的查询优化 更新 基于角色的访问控制
XML 更新涉及问题 更新有效性检查
结构有效性 属性有效性
结点定位 存储空间的分配 其它辅助数据的更新,比如索引、编码等。
更新方法
根据模式信息判断更新的有效性 根据不同的存储方法设计不同的更新方法 根据模式信息设计不同的预留空间
在非聚簇存储和 CEB时预留空间相同 在 CSB方法时预留空间不同
Outline 体系结构和特征 存储 索引
SUPEX 结构索引 结构索引使用的编码方法
查询处理 导航式查询处理 集合式查询处理
基于代价的查询优化 更新 基于角色的访问控制
基于角色的用户访问控制 角色之间有继承关系,构成一棵角色树。 用户访问控制的最小粒度是结点级。 采用类 XPath 语句对每个角色授权 为了使用方便和强化授权能力引入否定授权,制定权限冲突规则,和冲突检测机制。 授权检测时,只需对查询语句构成的查询树和授权语句构成的权限树匹配,如果查询树满足权限树,则允许查询执行,否则拒绝,无需访问数据信息。
下一步工作 完善 XML 代数,实现集合式的 XQuery查询处理 进一步研究 XML 查询优化问题 完善更新和访问控制方法
top related