DB2 viper XML Support

    最近研究学习DB2新版本(代号 viper, 版本 9 - 9.5)对于原生XML支持(Native Support)的特性,在对 IBM developerWorks, infoCenter 还有DB2对于XML feature支持的原文paper的若干学习研究时有了一些心得,并将这些心得和相关文章的条目摘抄成笔记,最后整理成为chart(ppt). 本想把这些东西共享出来,但我写的附带插图和详细排版的稍微专业和好看的chart的版权应该属于公司(在master view中已经 加入了IBM和CRL的Logo),恐怕无法以个人名义共享出来.所以还是把草稿笔记拿出来吧,其中部分内容来自互联网,developerWorks,DB2 infoCenter,官方paper<Native XML Support in DB2 Universal Database>,所以我对摘抄笔记不做任何负责.
    笔记中没怎么做排版,没有用颜色区分代码和关键词等等,大家如果需要的话还是把笔记部分全部copy出来到editor或者记事本中最大化查看吧,这样能 尽量保持代码分行清晰,我用的editor是GNU的开源NotePad++,用惯了,而且觉得ue32和editor3都需要注册太麻烦了,我显示器分 辨率是1280*1024,如果小于这个分辨率的话可能会受换行符的影响把格式搞得很乱,可实在不想重新排版了,对不住各位.
    其中的英文有一些翻译了,大部分都没有翻译,不过很简单,不是很需要翻译过来,如果哪位对其中的一些部分有疑问或者有心得或者有更深入的认识和想法,恳请你能跟我交流([email protected]),不胜感激.
    刚才进行发布,提示我超出最大字数限制,莫名其妙之余将分部份发布.
    以上.


DB2 Viper, SQL/XML,  XQuery

0)Introduction & check points
    IBM 的第一个同时支持表格式(基于 SQL 的)和层次式(基于 XML 的)数据结构的数据库管理系统.
    "原生支持"(Native Support)
        "Native" means that XML documents are stored on disk pages in tree structures matching the XML data model.
       
    在 DB2 Viper 中,只有 Unicode 数据库才能同时存储 XML 文档和 SQL 数据的更多传统格式

    DB2 使客户机应用程序能够通过它们选择的查询语言 —— SQL(包括具有 XML 扩展的 SQL,常常称为 “SQL/XML”)或 XQuery —— 同时处理表格数据结构
    和 XML 数据结构。DB2 中的引擎级组件支持用这两种语言指定的查询。

    基于树形结构的存储,DB2 9 直接支持国际标准的XML查询语言Xquery(包含Xpath标准的支持)。
    先前开发人员需要很多Coding 才能实现的XML解析和查询工作现在直接通过调用一条Xquery即可实现。
    除了存储机制,查询机制,配套的还有XML的索引机制,XML Schema的管理机制等。
    由于对XML的Native支持,DB2 9 不再是单纯的关系型数据库,而是同时支持关系型和层次性数据模型的混合型数据库。
    一方面继承原有的二维数据库技术,支持标准的SQL查询二维表;另一方面一套完善的XML Native 技术,支持标准的Xquery查询XML层次模型;
    同时二维的SQL查询和层次的Xquery查询还可以互相嵌套实现两种数据模型的关联查询。
   
   
    物理存储:
        DB2 采用一种经过解析的格式来存储和操作 XML 数据,这种格式可以反映原始 XML 文档的层次结构。因此,它采用树和节点作为模型来存储和处理 XML 数据。
        如果用户要求 DB2 在进行存储之前针对注册的 XML 模式对 XML 数据进行检验,那么 DB2 将用模式类型信息对 XML 层次结构中的所有节点进行标注;否则,
        就用默认的类型信息对节点进行标注。
       
        *在存储时,DB2 会保留这个文档的内部结构,并将它的标记名和其他信息转换为整数值。这样做可以节省磁盘空间,还可以改进使用导航表达式的查询的性能。
        例如,在存储时,DB2 可能将 图 2 中的 “Comments” 标记转换为 “0”。但是,用户并不了解这种内部表示。
        最后,DB2 会根据需要自动地跨多个数据库页拆分文档的各个部分(即文档树的节点)。实际上,DB2 可以根据需要对文档层次结构中任何级别上的节点集合
        (即子树)进行拆分。在这种情况下,DB2 自动地生成和维护一个"区域"索引,这样就可以高效地跟踪整个文档的物理表示。
       
        The new catalog table SYSXMLSTRINGS holds the mapping from tags to StringIDs for all XML columns in the database.
       
        对比:
        过去的存储方式:将xml分拆放到普通 relational tables 或者 以完整形式存储为Clob or Blob -> 被容量和性能限制(解析速度差)
            xml storage 解决方案: Oracle 10g: CLOB, MS SQL server 2005: BLOB
        现在(hybrid way): similar to the DOM,The XML data is formatted to buffered data pages for faster navigation and query execution as
                           well as simpler indexing.
       
        xml列没有长度限制和强制使用schema验证:This column has no maximum length and no mandatory constraining XML schema
            ---条件:良构的(well-formed) statement
            ---Currently, only the client-server communication protocol limits XML bind-in and bind-out to 2GB per document.
           
        In the physical storage layer, the primary storage unit in the IBM implementation is a node.
        A node exists on a page along with other nodes from the same or different documents.
        Each node is linked not only to its parent, but also to its children.
        As a result, navigating to a node's parent, siblings, or children is highly efficient,
        operating at little more than pointer traversal speeds as long as the next referenced node is on the same page.
        Nodes can grow or shrink in size, or they can be relocated to other pages without rewriting the entire document.
       
        Index entries contain actual document node position information. As a result, the index can quickly provide direct
        access to the nodes within a document and avoid a document traversal.
        In addition, because the index has this document node position information, it understands the document hierarchy
        and can perform containment tests. The index knows which child nodes belong to the same ancestor and can do appropriate filtering
       
        从磁盘上的最小的存储单元开始,保存的就是XML对应的树结构。这棵树类似于XML经过DOM解析后得到的树结构。
        (实际上XML 文档被插入DB2 9的时候是通过SAX解析的方法被解析的,而之后存储到磁盘上的效果遍历起来如同DOM树一样方便)。
       
        DB2 的pureXML 技术将以节点级(而非文档级)粒度存储 XML。在数据库中,物理存储层的主要存储单元是节点。
        每一页中都存在一个节点,而其它的节点则来自相同或不同的文档。每个节点不仅连结其父节点,还连结其子节点。
        因此,浏览到某个节点的父项、同级项或子项的效率都非常高,只要下一个引用的节点在同一页,其遍历速度将比指针的遍历速度还要快。
        无需重写整个文档即可增加或减少节点,或者将节点重新部署到其它页。
       
            If a document tree is too large to fit on one page it gets split into regions.
            If a document spans multiple pages, its regions are connected by the regions index.
           
   
        与以往(如Oracle) xml存储方式对比:
        (一) Oracle基于大对象CLOB的存储方式
            XML操作                            DB2 9 Native XML                                    Oracle非结构化大对象存储   
            存储方式                           预先解析,磁盘上存储类似XML DOM树结构                CLOB
            查询的时候是否需要解析?        不需要                                                需要
            支持任意节点或属性上的索引?    支持                                                不支持重复出现节点上的索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值