orientx: native xml 数据库系统

42
OrientX: Native XML 数数数数数数数 数数 数数数 数数数 数数 数数 数数 数数数 数数数数数数数数数数 100872 [email protected]

Upload: neron

Post on 19-Mar-2016

179 views

Category:

Documents


0 download

DESCRIPTION

OrientX: Native XML 数据库系统. 孟小峰 王宇 罗道峰 陆世潮 安靖 陈妍 蒋瑜 欧建波 中国人民大学信息学院 ( 100872 ) [email protected]. Outline. 体系结构和特征 存储 索引 SUPEX 结构索引 结构索引使用的编码方法 查询处理 导航式查询处理 集合式查询处理 基于代价的查询优化 更新 基于角色的访问控制. OrientX 特征. 基于模式 采用多种粒度的树形结构存储数据 支持描述化查询语言 XQuery 基于代价估计的查询优化方法 基于模式的路径索引 基于角色的访问控制 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: OrientX: Native XML 数据库系统

OrientX: Native XML 数据库系统

孟小峰 王宇 罗道峰 陆世潮 安靖 陈妍 蒋瑜 欧建波中国人民大学信息学院 ( 100872 )

[email protected]

Page 2: OrientX: Native XML 数据库系统

Outline 体系结构和特征 存储 索引

SUPEX 结构索引 结构索引使用的编码方法

查询处理 导航式查询处理 集合式查询处理

基于代价的查询优化 更新 基于角色的访问控制

Page 3: OrientX: Native XML 数据库系统

OrientX 特征 基于模式 采用多种粒度的树形结构存储数据 支持描述化查询语言 XQuery 基于代价估计的查询优化方法 基于模式的路径索引 基于角色的访问控制 …

Page 4: OrientX: Native XML 数据库系统

体系结构

图 1 OrientX 体系结构图

数据存储管理 索引模块 查询处理 数据更新 用户访问控制 模式管理 接口 查询更新处理流

数据导入导出流

查询处理

XML文档

用户访问控制

DTD文档 XSD文档

数据库建立维护管理

API

数据更新

模式管理 数据存取管理

查询处理语句

数据存储管理

数据、模式信息、用户信息、统计信息、索引信息DEB CEB DSB CSB

查询分解查询执行查询优化

数据缓冲管理索引管理

Page 5: OrientX: Native XML 数据库系统

Outline 体系结构和特征 存储 索引 查询处理

导航式查询处理 集合式查询处理

基于代价的查询优化 更新 基于角色的访问控制

Page 6: OrientX: Native XML 数据库系统

OrientX 存储策略 存储管理以记录为单位 , 逻辑含义是一棵子树,是读写的最小单位 一个 XML 文档包含若干个记录,多个满足同一个模式定义( DTD 或者 XML Schema )的 XML 文档放在一个数据集里。 EID ( AID )唯一地标志结点的类型 数据集用 SetID 来标志;在文件上划分逻辑物理块物理块用 LpNo 来标志;给定一对 <SetID , LpNo> ,能马上找到对应文件的相应的偏移量。

Page 7: OrientX: Native XML 数据库系统

多粒度存储策略 四种存储方法

Element-based Depth-first Element Based(DEB) Clustered Element Based ( CEB )

Subtree-based Depth-first Subtree Based (DSB) Clustered Subtree Based (CSB)

Page 8: OrientX: Native XML 数据库系统

多粒度存储策略

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

Page 9: OrientX: Native XML 数据库系统

存储策略的选择 不同的文档适合用不同的方法来存储

当文档比较小的时候,采用深度优先方法 当文档比较大的时候,使用聚簇方法 文档性质比较强的文档,采用深度优先方法 数据性质比较强的文档,采用聚簇方法

为了处理上的方便,无论底层采取什么存储方法,对上层查询的接口都是一样的,这样,提供了一定的独立性。

Page 10: OrientX: Native XML 数据库系统

Outline 体系结构和特征 存储 索引 查询处理

导航式查询处理 集合式查询处理

基于代价的查询优化 更新 基于角色的访问控制

Page 11: OrientX: Native XML 数据库系统

SUPEX 索引策略 父子关系 祖先 -后代关系 绝对路径查询 相对路径查询

结构图

索引记录 DocId, RID, Level, Info

元素映射表

Page 12: OrientX: Native XML 数据库系统

编码方法概述 三类编码方法:

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

Page 13: OrientX: Native XML 数据库系统

结构索引使用的编码 BitPath

思想: prefix-based 方法 好处:

与 region 或者 k-ary tree 方法相比,变长、更新代价小。 与其它 prefix-based 方法相比,不需要分隔符,减少存储空间,提高查询效率。

Page 14: OrientX: Native XML 数据库系统

Outline 体系结构和特征 存储 索引 查询处理

导航式查询处理 集合式查询处理

基于代价的查询优化 更新 基于角色的访问控制

Page 15: OrientX: Native XML 数据库系统

处理 XQuery 的核心问题 Path 路径的求值问题

结构连接 基于树的导航式处理

嵌套查询的解决方案 相关嵌套 非相关嵌套

XML 数据的有序性问题

Page 16: OrientX: Native XML 数据库系统

XQuery 查询导航式实现方法的主要模块 语法分析 语义检查 生成执行计划 优化器

逻辑的 物理的

执行引擎

Page 17: OrientX: Native XML 数据库系统

XQuery Execute Engine

导航式处理 XQuery 的结构图Query Interface

XPath Execute PlanXQuery Execute Plan

XPath Execute Engine

Data Manager

Type check Semantic Check

XQuery Parser

Optimize inline

Page 18: OrientX: Native XML 数据库系统

产生执行计划的算法 构建执行计划

并不是先生成语法树再构建执行计划。 而是,语法分析的同时构建执行计划。

当规约成一个语法单元时,即构建一个相应的操作符 把构成该语法单元的子单元的对应操作符,置为新构建操作符的子操作;形成一棵执行计划树

Page 19: OrientX: Native XML 数据库系统

例子 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>

Page 20: OrientX: Native XML 数据库系统

执行计划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

Page 21: OrientX: Native XML 数据库系统

导航式处理FLWR

ForVarBind LetVarBind ConditionTree EleConstructor

EleConstructor PathPath

Page 22: OrientX: Native XML 数据库系统

导航式处理FLWR

ForVarBind LetVarBind ConditionTree EleConstructor

EleConstructor PathPath

Evaluated true

Page 23: OrientX: Native XML 数据库系统

导航式处理FLWR

ForVarBind LetVarBind ConditionTree EleConstructor

EleConstructor PathPath

Evaluated false

Page 24: OrientX: Native XML 数据库系统

Outline 体系结构和特征 存储 索引 查询处理

导航式查询处理 集合式查询处理

基于代价的查询优化 更新 基于角色的访问控制

Page 25: OrientX: Native XML 数据库系统

集合式查询处理 借鉴关系代数方法,引入 XML 代数,使操作变成一次一集合的操作。

Page 26: OrientX: Native XML 数据库系统

XML Algebra 设计 设计思想 主要问题 难点

Page 27: OrientX: Native XML 数据库系统

设计思想 引入关系中关于记录的概念,操作符的操作对象是记录的集合,若干操作符组成一棵操作符树,来表达一个查询。 记录是一棵 XML 树 操作符的分类

Extraction操作 Processing操作 Construction操作

Page 28: OrientX: Native XML 数据库系统

主要问题 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>

Page 29: OrientX: Native XML 数据库系统

问题 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>

Page 30: OrientX: Native XML 数据库系统

问题 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>

Page 31: OrientX: Native XML 数据库系统

问题 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>

Page 32: OrientX: Native XML 数据库系统

问题 5 :值绑定和引用绑定 有了中间结果,要不要与源数据发生联系?

Page 33: OrientX: Native XML 数据库系统

难点 Pattern Tree Matching 的策略选择

导航式 结构连接 混合

Page 34: OrientX: Native XML 数据库系统

Outline 体系结构和特征 存储 索引

SUPEX 结构索引 结构索引使用的编码方法

查询处理 导航式查询处理 集合式查询处理

基于代价的查询优化 更新 基于角色的访问控制

Page 35: OrientX: Native XML 数据库系统

基于代价的查询优化方法 采用直方图方法统计 XML 数据的分布情况 与模式统计信息相结合形成统计信息模型 通过六种不同的直方图运算 , 计算任意路径中任意子路径的选择性

Page 36: OrientX: Native XML 数据库系统

代价计算实例 n1/n2//n3/n4[a>v]

Page 37: OrientX: Native XML 数据库系统

Outline 体系结构和特征 存储 索引

SUPEX 结构索引 结构索引使用的编码方法

查询处理 导航式查询处理 集合式查询处理

基于代价的查询优化 更新 基于角色的访问控制

Page 38: OrientX: Native XML 数据库系统

XML 更新涉及问题 更新有效性检查

结构有效性 属性有效性

结点定位 存储空间的分配 其它辅助数据的更新,比如索引、编码等。

Page 39: OrientX: Native XML 数据库系统

更新方法

根据模式信息判断更新的有效性 根据不同的存储方法设计不同的更新方法 根据模式信息设计不同的预留空间

在非聚簇存储和 CEB时预留空间相同 在 CSB方法时预留空间不同

Page 40: OrientX: Native XML 数据库系统

Outline 体系结构和特征 存储 索引

SUPEX 结构索引 结构索引使用的编码方法

查询处理 导航式查询处理 集合式查询处理

基于代价的查询优化 更新 基于角色的访问控制

Page 41: OrientX: Native XML 数据库系统

基于角色的用户访问控制 角色之间有继承关系,构成一棵角色树。 用户访问控制的最小粒度是结点级。 采用类 XPath 语句对每个角色授权 为了使用方便和强化授权能力引入否定授权,制定权限冲突规则,和冲突检测机制。 授权检测时,只需对查询语句构成的查询树和授权语句构成的权限树匹配,如果查询树满足权限树,则允许查询执行,否则拒绝,无需访问数据信息。

Page 42: OrientX: Native XML 数据库系统

下一步工作 完善 XML 代数,实现集合式的 XQuery查询处理 进一步研究 XML 查询优化问题 完善更新和访问控制方法