结构化大对象LOB数据.pdf

上传人:Y94****206 文档编号:6111364 上传时间:2019-04-12 格式:PDF 页数:34 大小:5.83MB
返回 下载 相关 举报
摘要
申请专利号:

CN201380012712.9

申请日:

2013.02.08

公开号:

CN104160398A

公开日:

2014.11.19

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20130208|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

国际商业机器公司

发明人:

K·D·海特; K·J·夏勒特; N·D·丘奇; R·V·特兰; C·霍尔茨

地址:

美国纽约

优先权:

2012.03.13 US 13/418,771

专利代理机构:

北京市中咨律师事务所 11247

代理人:

于静;张亚非

PDF下载: PDF下载
内容摘要

提供用于处理存储在数据库表的列中的大对象(LOB)数据内的结构化内容的技术。存储描述结构的结构元数据,每个所述结构定义所述结构化内容的不同格式。接收对所述数据库表中的数据的请求。使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列。对于所述数据库表中包括LOB数据的每个数据行,使用控制数据标识要应用于存储在该数据行中的所述LOB数据内的所述结构化内容的一个所述结构,以及基于所标识的一个所述结构,将该数据行中的所述LOB数据内的所述结构化内容映射到所述结果集中的所述列。返回所述结果集。

权利要求书

权利要求书
1.  一种用于大对象(LOB)数据内的结构化内容的方法,所述LOB数据存储在数据库表的列中,所述方法包括以下步骤:
存储描述结构的结构元数据,每个所述结构定义所述结构化内容的不同格式;
接收对所述数据库表中的数据的请求;
使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列;
对于所述数据库表中包括LOB数据的每个数据行,使用控制数据标识要应用于存储在该数据行中的所述LOB数据内的所述结构化内容的一个所述结构;以及
基于所标识的一个所述结构,将该数据行中的所述LOB数据内的所述结构化内容映射到所述结果集中的所述列;以及
返回所述结果集。

2.  根据权利要求1的方法,其中所述结构化内容包括字段,并且其中当由所述计算机的所述处理器执行时,所述计算机可读程序代码被配置为执行:
响应于接收所述请求,使用所述结构元数据创建第一查询以便从所述结构化内容中检索字段值;以及
使用所述结构元数据创建第二查询以便将所述字段值插入所述结果集的列中。

3.  根据任一上述权利要求的方法,其中所述结构元数据包括所述LOB数据中的结构化内容的偏移和长度。

4.  根据任一上述权利要求的方法,其中所述控制数据是所述LOB数据的一部分。

5.  根据任一上述权利要求的方法,其中将所述控制数据存储为单独列。

6.  根据任一上述权利要求的方法,其中所述LOB数据包括结构化内容和非结构化内容,并且其中所述方法还包括:
接收检索所述LOB数据中的所述结构化内容的请求;
标识所述LOB数据中的所述结构化内容的偏移和长度;
在所标识的偏移处检索所标识的长度的所述结构化内容;以及
返回所检索的结构化内容。

7.  根据任一上述权利要求的方法,其中所述LOB数据包括结构化内容和非结构化内容,并且其中所述方法还包括:
存储对所述结构化内容中的元素的索引;
接收在所述LOB数据中的所述结构化内容中搜索特定元素的请求;
使用所述索引在所述结构化内容中定位所述特定元素;以及
返回所定位的特定元素。

8.  根据任一上述权利要求的方法,其中所述方法还包括:
接收具有多个字段的可变长度LOB(VLOB)记录;
响应于确定所述VLOB记录中的字段延伸到分配给所述VLOB记录的物理空间之外,将该字段作为空字段处理。

9.  根据权利要求8的方法,其中所述方法还包括:
处理引用所述VLOB记录中的空字段的查询。

10.  一种用于处理大对象(LOB)数据中的结构化内容的计算机系统,所述LOB数据存储在数据库表的列中,所述计算机系统包括:
处理器;
存储设备,其耦合到所述处理器;以及
存储装置,其用于存储描述结构的结构元数据,每个所述结构定义所述结构化内容的不同格式;
接收装置,其用于接收对所述数据库表中的数据的请求;
使用装置,其用于使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列;
对于所述数据库表中包括LOB数据的每个数据行,使用装置还可操 作以使用控制数据标识要应用于存储在该数据行中的所述LOB数据内的所述结构化内容的一个所述结构;以及
映射装置,其用于基于所标识的一个所述结构,将该数据行中的所述LOB数据内的所述结构化内容映射到所述结果集中的所述列;以及
返回装置,其用于返回所述结果集。

11.  根据权利要求10的计算机系统,其中所述结构化内容包括字段,并且其中所述操作还包括:
响应于接收所述请求,创建装置使用所述结构元数据创建第一查询以便从所述结构化内容中检索字段值;以及
创建装置还可操作以使用所述结构元数据创建第二查询以便将所述字段值插入所述结果集的列中。

12.  根据权利要求10或11的计算机系统,其中所述结构元数据包括所述LOB数据中的结构化内容的偏移和长度。

13.  根据权利要求10至12中的任一权利要求的计算机系统,其中所述控制数据是所述LOB数据的一部分。

14.  根据权利要求10至13中的任一权利要求的计算机系统,其中可将所述控制数据存储为单独列。

15.  根据权利要求10至14中的任一权利要求的计算机系统,其中所述LOB数据包括结构化内容和非结构化内容,并且其中所述系统还包括:
接收装置,其还可操作以接收检索所述LOB数据中的所述结构化内容的请求;
标识装置,其用于标识所述LOB数据中的所述结构化内容的偏移和长度;
检索装置,其用于在所标识的偏移处检索所标识的长度的所述结构化内容;以及
返回装置,其用于返回所检索的结构化内容。

16.  根据权利要求10至15中的任一权利要求的计算机系统,其中所述LOB数据包括结构化内容和非结构化内容,并且其中所述系统还包括:
存储装置,其用于存储对所述结构化内容中的元素的索引;
接收装置,其用于接收在所述LOB数据中的所述结构化内容中搜索特定元素的请求;
定位装置,其用于使用所述索引在所述结构化内容中定位所述特定元素;以及
返回装置,其用于返回所定位的特定元素。

17.  根据权利要求10至16中的任一权利要求的计算机系统,其中所述系统还包括:
接收装置,其用于接收具有多个字段的可变长度LOB(VLOB)记录;
处理装置,其用于响应于确定所述VLOB记录中的字段延伸到分配给所述VLOB记录的物理空间之外,将该字段作为空字段处理。

18.  根据权利要求17的计算机系统,其中所述系统还包括:
处理装置,其用于处理引用所述VLOB记录中的空字段的查询。

19.  一种用于大对象(LOB)数据内的结构化内容的计算机程序产品,所述LOB数据存储在数据库表的列中,所述计算机程序产品包括:
计算机可读存储介质,其可由处理电路读取并且存储指令以便由所述处理电路执行,以执行根据权利要求1至9中的任一权利要求的方法。

20.  一种存储在计算机可读介质上并可加载到数字计算机的内部存储器中的计算机程序,所述计算机程序包括软件代码部分,当所述程序在计算机上运行时,所述软件代码部分用于执行根据权利要求1至9中的任一权利要求的方法。

说明书

说明书结构化大对象(LOB)数据
技术领域
本发明的各实施例涉及创建、搜索、检索结构化LOB数据以及使其无效。
背景技术
数据库管理系统(DBMS)软件可以使用数据库查询语言以便在数据库中存储和检索数据。数据库查询语言可以是但不限于结构化查询语言(SQL)接口。将数据库组织成包括数据行和列的表。行可以称为元组或记录或行。
可以使用索引访问数据库中的表。索引是对表中的记录的一组有序引用(例如,指针)。索引用于使用键(即,记录的一个字段或属性,其对应于列)访问表中的每个记录。术语“键”还可以称为“索引键”。索引基于表的一个或多个列。
查询可以被描述为基于特定条件的对数据库中的信息的请求。查询通常包括一个或多个谓词。谓词可以被描述为表达或暗示比较运算(例如,A=3)的搜索条件的元素。
大对象(LOB)数据可以被描述为存储在DBMS中的表中的单个列或字段中的二进制数据集合。
在DBMS和数据库应用编程接口(API)中,在检索LOB数据之后,将大对象(LOB)数据列的解释留给数据库应用。数据库应用从数据库中检索原始LOB数据,并且使用应用逻辑对LOB数据进行后处理。
通常,LOB数据包含非结构化的多媒体、音频或图像数据。但是,有时,LOB数据还可以包含结构化内容(即,采用字段形式)。例如,结构 化内容可以包括嵌入在多媒体LOB数据中的字段(例如“artist(艺术家)”和“title(标题)”字段)的标记。为了在LOB数据中搜索特定字段,DBMS具体化LOB数据并且将LOB数据发回到发出请求的应用。发出请求的应用以编程方式检查LOB数据的内容,从而查找特定字段的特定值。某些DBMS可以允许在LOB数据的子集上搜索,但它们首先在内部具体化LOB数据以便实现该操作。具体化LOB数据可以被描述为通过输入/输出(I/O)操作将LOB数据加载到存储器中。
可变长度LOB(VLOB)是一种类型的LOB,并且可以被定义为具有某一数量的字段,但VLOB的不同记录(即,实例)可以具有有效或为空(即,无效)的不同字段。因此,VLOB可以被描述为具有可变数量的有效字段。
当今应用从数据库中检索这些原始LOB,然后使用应用逻辑对LOB数据进行后处理。但是,如果LOB具有有限数量的结构化格式,则LOB数据的交互和解释可以很复杂。
因此,所属技术领域需要解决上述问题。
发明内容
提供一种用于处理存储在数据库表的列中的大对象(LOB)数据内的结构化内容的计算机实现的方法、计算机程序产品和系统。存储描述结构的结构元数据,每个所述结构定义所述结构化内容的不同格式。接收对所述数据库表中的数据的请求。使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列。对于所述数据库表中包括LOB数据的每个数据行,使用控制数据标识要应用于存储在该数据行中的所述LOB数据内的所述结构化内容的一个所述结构,以及基于所标识的一个所述结构,将该数据行中的所述LOB数据内的所述结构化内容映射到所述结果集中的所述列。返回所述结果集。
从第一方面看,本发明提供一种用于大对象(LOB)数据内的结构化内容的方法,所述LOB数据存储在数据库表的列中,所述方法包括以下 步骤:存储描述结构的结构元数据,每个所述结构定义所述结构化内容的不同格式;接收对所述数据库表中的数据的请求;使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列;对于所述数据库表中包括LOB数据的每个数据行,使用控制数据标识要应用于存储在该数据行中的所述LOB数据内的所述结构化内容的一个所述结构;以及基于所标识的一个所述结构,将该数据行中的所述LOB数据内的所述结构化内容映射到所述结果集中的所述列;以及返回所述结果集。
从另一方面看,本发明提供一种用于处理大对象(LOB)数据中的结构化内容的计算机系统,所述LOB数据存储在数据库表的列中,所述计算机系统包括:处理器;存储设备,其耦合到所述处理器;以及存储装置,其用于存储描述结构的结构元数据,每个所述结构定义所述结构化内容的不同格式;接收装置,其用于接收对所述数据库表中的数据的请求;使用装置,其用于使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列;对于所述数据库表中包括LOB数据的每个数据行,使用装置还可操作以使用控制数据标识要应用于存储在该数据行中的所述LOB数据内的所述结构化内容的一个所述结构;以及映射装置,其用于基于所标识的一个所述结构,将该数据行中的所述LOB数据内的所述结构化内容映射到所述结果集中的所述列;以及返回装置,其用于返回所述结果集。
从另一方面看,本发明提供一种用于大对象(LOB)数据内的结构化内容的计算机程序产品,所述LOB数据存储在数据库表的列中,所述计算机程序产品包括:其中包含计算机可读程序代码的计算机可读存储介质,当由计算机的处理器执行时,所述计算机可读程序代码被配置为执行:存储描述结构的结构元数据,每个所述结构定义所述结构化内容的不同格式;接收对所述数据库表中的数据的请求;使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列;对于所述数据库表中包括LOB数据的每个数据行,使用控制数据标识要应用于存储在该数据行中的所述LOB数据内的所述结构化内容的一个所述结构;以及基于所标识的 一个所述结构,将该数据行中的所述LOB数据内的所述结构化内容映射到所述结果集中的所述列;以及返回所述结果集。
从另一方面看,本发明提供一种用于处理大对象(LOB)数据内的结构化内容的计算机系统,所述LOB数据存储在数据库表的列中,所述计算机系统包括:处理器;以及存储设备,其耦合到所述处理器,其中所述存储设备在其上存储程序,并且其中所述处理器被配置为执行所述程序的指令以便执行操作,其中所述操作包括:存储描述结构的结构元数据,每个所述结构定义所述结构化内容的不同格式;接收对所述数据库表中的数据的请求;使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列;对于所述数据库表中包括LOB数据的每个数据行,使用控制数据标识要应用于存储在该数据行中的所述LOB数据内的所述结构化内容的一个所述结构;以及基于所标识的一个所述结构,将该数据行中的所述LOB数据内的所述结构化内容映射到所述结果集中的所述列;以及返回所述结果集。
从另一方面看,本发明提供一种用于大对象(LOB)数据内的结构化内容的计算机程序产品,所述LOB数据存储在数据库表的列中,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质可由处理电路读取并存储指令以便由所述处理电路执行,以执行一种用于执行本发明的步骤的方法。
从另一方面看,本发明提供一种存储在计算机可读介质上并可载入数字计算机的内部存储器的计算机程序,所述计算机程序包括软件代码部分,当所述程序在计算机上运行时,所述软件代码部分用于执行本发明的步骤。
附图说明
现在仅通过实例的方式参考以下附图中所示的优选实施例描述本发明,这些附图是:
图1以框图示出根据本发明的一个优选实施例的计算环境;
图2以框图示出根据现有技术并且其中可以实现本发明的一个优选实 施例的数据库表;
图3以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的用于存储保险数据的数据库表;
图4以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的用于房主保险单的LOB数据的结构;
图5以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的用于机动车辆保险单的LOB数据的结构;
图6以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的显示未解释的(原始)二进制数据的结果集;
图7以框图示出根据本发明的一个优选实施例的具有基于底层LOB数据格式的格式的保险单结果集;
图8以流程图示出根据本发明的一个优选实施例的用于处理存储在数据库表的列中的大对象(LOB)数据内的结构化内容的操作;图8由图8A和图8B组成。
图9示出根据本发明的一个优选实施例的描述保险单表的伪代码;
图10示出根据本发明的一个优选实施例的用于描述保险单表的伪代码的结构元数据的一个实例;图10由图10A和10B组成。
图11以框图示出根据本发明的一个优选实施例的LOB数据内的结构化内容;
图12以流程图示出根据本发明的一个优选实施例的用于在LOB数据中检索结构化内容的操作;
图13以流程图示出根据本发明的一个优选实施例的用于在LOB数据中索引和搜索结构化内容的操作;
图14以框图示出根据本发明的一个优选实施例的固定长度LOB数据;
图15以框图示出根据本发明的一个优选实施例的具有一个空字段的VLOB数据;
图16以框图示出根据本发明的一个优选实施例的具有多个空字段的 VLOB数据;
图17以流程图示出根据本发明的一个优选实施例的用于处理VLOB的操作;
图18以框图示出根据本发明的一个优选实施例的表;
图19示出根据本发明的一个优选实施例的VLOB的定义;以及
图20以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的计算机体系架构。
具体实施方式
出于示例目的给出了对本发明的不同实施例的描述,但所述描述并非旨在是穷举的或是限于所公开的实施例。在不偏离所述实施例的范围的情况下,对于所属技术领域的普通技术人员来说许多修改和变化都是显而易见的。本文中所用术语的选择,旨在最好地解释实施例的原理、实际应用或对市场中的技术的技术改进,或者使所属技术领域的其它普通技术人员能理解本文公开的实施例。
图1以框图示出根据某些实施例的计算环境。计算设备包括DBMS110,并且DBMS 110包括结构化LOB系统120和目录130。目录130包括结构元数据140。在某些实施例中,结构元数据140包括LOB数据中的结构化内容(例如,字段)的偏移和长度,以及用于访问LOB数据的映射信息。DBMS 110耦合到数据库150。数据库150存储一个或多个数据库表160和一个或多个索引162。一个或多个数据库表160可以存储LOB数据、二进制大对象(BLOB)数据、VLOB数据和其它数据。
创建结构化LOB数据
结构化LOB系统120提供二进制数据与例如数据库管理系统(DBMS)中所应用的结构化内容的动态运行时映射,以便生成结构化LOB数据。
图2以框图示出根据某些实施例的数据库表200。数据库表200包括用于二进制大对象(BLOB)(其为一种类型的LOB)的列。术语二进制 大对象(BLOB)用于描述作为单个实体存储在DBMS中的二进制数据集合。图2中的省略号指示可以具有其它数据行。此外,可以具有其它列。
图3以框图示出根据某些实施例的用于存储保险单数据的数据库表300。数据库表300用于保险单,并且将保险单数据(在图3中名为“PolicyData”)存储为LOB数据或BLOB数据。保险单数据可以存储用于机动车辆保险单或房主保险单的数据。保险单数据存储两个不同结构之一(即,布局或格式),具体取决于保险单类型。图4以框图示出根据某些实施例的用于房主保险单的LOB数据的结构400。结构400包括用于保险单类型、房屋类型、房间数量、房屋价值和地址的列。
图5以框图示出根据某些实施例的用于机动车辆保险单的LOB数据的结构500。结构500包括用于保险单类型、制造商、型号、年份、颜色和价值的列。
因为存储在数据库表300中的每个行可以是两个结构400、500之一,所以结构化LOB系统120存储结构元数据140,结构元数据140描述与LOB数据关联的每个结构以便有助于处理LOB数据。结构元数据140描述LOB数据与特定结构(例如结构400或500)之间的映射,以便能够将LOB数据映射到该特定结构的列。
除了存储有关LOB数据结构的结构元数据140之外,结构化LOB系统120针对插入到数据库150中的每个行存储控制数据(例如,控制标志或控制字段)。该控制数据可以直接存储在LOB数据中,或者作为单独列存储在LOB数据外部。在图4和5中,保险单类型存储在结构化LOB数据的第一部分中,并且保险单类型是控制数据,其用于指示LOB数据用于哪种类型的保险单。结构化LOB系统120使用该信息确定如何根据对应结构有效传送LOB数据。具体地说,结构化LOB系统120基于控制数据,使用结构元数据140将LOB数据映射到特定结构。
以下是实例查询1:
SELECT*FROM InsurancePolicy
当发出查询1时,(例如向最终用户)返回结果集,其包含PolicyData  BLOB作为原始二进制数据。查询1可以使用索引。图6以框图示出根据某些实施例的显示未解释的(原始)二进制数据的结果集600。在这些情况下,使用BLOB外部的索引。因为结果集600仅包含BLOB数据,所以BLOB作为整体进行索引。在这些情况下,应用将BLOB解析为子字段。
当接收对存储在数据库表160的列中的LOB数据的请求时,结构化LOB系统120使用结构元数据140生成查询以便检索LOB数据并且将LOB数据插入到结果集中,该结果集是另一个数据库表160。例如,结构化LOB系统使用结构元数据140生成下面的查询2、查询3、查询4、查询6、查询7和查询8。
以下是标识保险单类型的实例查询2:
SELECT NumberOfRooms FROM INSURANCEPOLICY
WHERE POLICYTYPE='H'
结构元数据140和控制数据的组合允许结构化LOB系统120为最终用户提供结构化LOB数据。在某些实施例中,结构化LOB系统120生成具有列的结果集,这些列的格式为可以包括在结果集中的每种类型的LOB数据。在某些实施例中,结构化LOB系统120使用控制数据的值(即,图4和5中的保险单类型的值)针对每行确定结果集中的哪些列可能具有数据以及哪些列可能没有数据。
图7以框图示出根据某些实施例的具有基于底层LOB数据格式的格式的保险单结果集700。例如,结构化LOB系统120在结果集700中提供其它列信息,包括:保险单类型、房屋类型、房间数量、房屋价值、地址、制造商、型号、年份、颜色和价值。图7示出结果集700,其包含一行机动车辆保险单数据以及一行房主保险单数据。在结果集700中,当LOB数据具有值为“M”的控制数据(即,保险单类型)时,结构化LOB系统120根据存储在DBMS 110中的结构元数据140,显示机动车辆保险单的列数据,其包括:保险单类型、制造商、型号、年份、颜色和价值。同样,当LOB数据具有值为“H”的控制数据时,结构化LOB系统120根 据存储在DBMS 110中的结构元数据140,显示房主保险单的列数据,其包括:保险单类型、房屋类型、房间数量、房屋价值和地址。
当结构化LOB系统120在结果集的行中显示一种类型LOB数据(例如,机动车辆保险单)的值时,结构化LOB系统120填充特定于该类型LOB数据的列的值,并且结构化LOB系统120针对当前数据行将特定于其它类型LOB数据(例如,房主保险单)的列显示为空或无效。
使用结构化LOB系统110,DBMS 110能够直接处理有限结构化LOB数据。这使得LOB数据处理对于最终用户而言透明,并且提供可扩展机制以便访问结构化LOB数据中的数据,包括对有限结构化LOB数据进行读取、插入、更新和索引。
以下是用于插入房主保险单的值的实例查询3:
INSERT INTO INSURANCEPOLICY(PolicyType,PropertyType,
NumberOfRooms,HomeValue,ADDRESS)VALUES('H','SINGLE FAMILY','5','500000','555 BAILEY AVE')
以下是用于插入机动车辆保险单的值的实例查询4:
INSERT INTO INSURANCEPOLICY(PolicyType,MAKE,MODEL,YEAR,COLOR,VALUE)VALUES('M','FORD',T,'1966','BLACK','15000')
图8以流程图示出根据某些实施例的用于处理存储在数据库表160的列中的大对象(LOB)数据内的结构化内容的操作。图8由图8A和图8B组成。控制在方框800开始,结构化LOB系统120存储描述(两个或更多)结构的结构元数据140,每个结构定义结构化内容的不同格式。在某些实施例中,数据库管理员/创建者将描述(两个或更多)LOB数据结构的信息合并为结构元数据140。在方框802,结构化LOB系统120接收对数据库表160中的数据的请求。对于数据库表160中的至少一个数据行,将LOB数据存储在数据库表160的列中。在方框804,结构化LOB系统120使用结构元数据140创建空结果集,该结果集具有由至少两个结构定义的列。在某些实施例中,结构化LOB系统120不会重复冗余列(例如, 保险单类型列在结构400和500中,但结果集700显示一次保险单类型列)。在某些实施例中,结构化LOB系统120将给定表的字段名称限制为是唯一的。因此,如果定义多个LOB结构(例如“Home Insurance(房屋保险)”、“Car Insurance(汽车保险)”和“Life Insurance(人寿保险)”),并且如果三个类型共享诸如“address(地址)”之类的公共字段,则数据库定义将具有NAME="HOME_ADDRESS"的字段、NAME="CAR_ADDRESS"的字段和NAME="LIFE_ADDRESS"的字段。
在方框806,结构化LOB系统120从数据库表160中的第一个数据行开始,选择包括LOB数据的下一个数据行。在方框808,结构化LOB系统120使用控制数据标识要应用于存储在该数据行中的LOB数据内的结构化内容的一个结构。从方框808,处理继续到方框810(图8B)。
在方框810,结构化LOB系统120基于标识的一个结构,将该数据行中的LOB数据内的结构化内容映射到结果集中的列。在某些实施例中,通过创建查询执行映射。例如,结构化LOB系统120使用结构元数据140创建第一查询以便从结构化内容中检索字段值,并且使用结构元数据140创建第二查询以便将该字段值插入结果集的列中。
在方框812,结构化LOB系统120判定是否已选择所有数据行。如果是,则处理继续到方框814,否则,处理循环回到方框806以便选择另一个数据行(图8A)。
在方框814,结构化LOB系统120返回结果集。在结果集的列中显示LOB数据内的结构化内容。
图9示出根据某些实施例的描述保险单表的伪代码900。“PolicyType”字段旨在用作控制数据,其采用PolicyData映射中的控制字段的形式。这通过使用DEPENDINGON=DFSMAP语句的参数来定义。每个DFSMAP语句包含一个或多个DFSCASE语句,DFSCASE语句表示控制字段PolicyType的1:N个值之一。在该实例中,具有两个实例HOUSE和MOTOR。CASEID=是预计存储在PolicyType字段中的值。当查询检查PolicyType的值时,使用适当的DFSCASE定义确定该记录的FIELD结 构。在该实例中,LOB数据由DFSMAP定义并且从偏移2跨越到46。对于保险单表,结构元数据1000、1010将PolicyType定义为DFSMAP的控制字段(DEPEDINGON)。DFSCASE元数据然后告知结构化LOB系统120如何通过提供对应于特定LOB数据的CASEID(控制数据值)来解释表中的不同行。
图10示出根据某些实施例的用于描述保险单表的伪代码900的结构元数据1000、1010的一个实例。
图10由图10A和10B组成。工具(例如,使用DBMS 110的第三方软件)可以使用元数据表示以便理解表。
用户可以查询目录130中的结构元数据140以便标识哪些记录用于哪种保险单类型。
因此,如果LOB数据具有有限数量的结构化结构,则各实施例简化LOB数据的交互和解释。各实施例存储和查询可变数据,这些数据的结构可以因记录的不同而有所变化。各实施例使用结构化LOB数据,在单个表中管理多个不同的记录类型。
结构元数据140允许数据库管理员(DBA)或其它人员定义分层并且灵活的LOB数据结构。分层可以被描述为深层嵌套的字段。使用嵌套字段,LOB数据可以包含自身包含其它LOB数据的字段。灵活可以被描述为针对这些层中的数据类型没有约束,甚至可以引入用户定义的类型(它们不需要由预先存在的DBMS类型组成)。如果给出该结构元数据140,则各实施例将结构应用于先前未结构化的原始LOB数据,并且提供能力以便利用数据库查询语言(例如,SQL)对这些LOB字段进行读取和写入,而无论如何深层地嵌套。
某些实施例处理存储在数据库的LOB列中的不同结构。存储描述在LOB数据中使用的不同结构的结构元数据。当接收对LOB数据的请求时,使用与LOB数据关联的结构元数据定义可以映射到LOB数据的查询。对于针对其返回LOB数据的每个数据行,使用控制数据标识哪些底层不同结构应用于该LOB数据,并且将该LOB数据映射到对应结果集中的列。
访问结构化内容
借助各实施例,结构化LOB系统120提供能力以便在本机搜索和索引结构化内容中的特定字段,其中这些字段在LOB数据中的已知偏移处。结构化LOB系统120允许针对这些字段的索引能力,以便使用索引162检索LOB数据。
结构化LOB系统120为DBMS 110提供能力以便在LOB数据中动态搜索或索引结构化内容,而不需要具体化LOB数据或LOB数据的各部分。LOB数据中的结构化内容在LOB数据中的已知位置(即,偏移)处。结构化LOB系统120还为DBMS 110提供能力以便针对LOB数据的这些结构化字段创建索引以检索全部LOB数据,而DBMS 110不必从LOB数据中提取和复制目标数据并在首次插入LOB数据时将目标数据存储在另一个列中,并且DBMS不必具体化LOB数据的各部分。DBMS 110可以直接访问LOB数据的任何部分或子集,而无论LOB数据是否包含结构化内容。DBMS 110不需要事先知道LOB数据具有结构化字段。动态、按需执行LOB数据的搜索。因此,不需要向DBMS 110定义其它数据库元数据。借助各实施例,结构化LOB系统120在已存储(例如,数十年)的LOB数据子集上搜索。
结构化LOB系统120为应用程序提供能力以便使用有资格用于任何LOB数据子集的搜索谓词创建查询。例如,查询可以搜索每个LOB数据,其在包含在该LOB数据中的标记中包含特定“artist(艺术家)”名称。应用程序还可以选择从LOB数据中仅检索“artist”信息。结构化LOB系统120直接从LOB数据中检索该信息,而不需要在内部具体化LOB数据以便提取所述信息。
各实施例适用于任何类型的数据,其中具有测量偏移和长度的一致方式(例如,二进制数据)。
结构化LOB系统120根据表160中的列名称搜索或检索数据。这允许结构化LOB系统120搜索列或元组的任何子集。转而,这允许搜索列 中的结构化内容而不需要首先具体化列内容以便查找数据值。
图11以框图示出根据某些实施例的LOB数据中的结构化内容。在图11中,存在包含MP3数据的LOB数据1100。LOB数据1100包括非结构化内容1110和结构化内容1120。标题、艺术家和专辑数据在已知偏移处,并且可由结构化LOB系统120搜索或检索。
图12以流程图示出根据某些实施例的用于在LOB数据中检索结构化内容的操作。控制在方框1200开始,结构化LOB系统120接收对LOB数据中的结构化内容的请求。所述请求可以采用基于结构化内容的字段的查询的形式。在方框1202,结构化LOB系统120标识LOB数据中的结构化内容的偏移和长度。在某些实施例中,如果提供列名称,则结构化LOB系统120将其解析为包含表示该列的数据的缓冲区中的偏移和长度。在某些实施例中,除了列名称之外或者甚至代替列名称,结构化LOB系统120允许提供偏移和长度。偏移可以相对于表160的开始或者表160中的列的开始。在方框1204,结构化LOB系统120在所标识的偏移处检索所标识的长度的结构化内容。结构化LOB系统120转到表中存储LOB数据的列,并且根据查询搜索结构化内容。在方框1206,结构化LOB系统120返回所检索的结构化内容。
图13以流程图示出根据某些实施例的用于在LOB数据中索引和搜索结构化内容的操作。控制在方框1300开始,结构化LOB系统120存储用于LOB数据中的结构化内容中的字段的索引162。在方框1302,结构化LOB系统120接收在结构化内容中搜索特定字段的请求。所述请求可以采用基于标识结构化内容的特定字段的字段(即,列)的查询的形式,或者可以采用标识特定字段的偏移和长度的形式。在方框1304,结构化LOB系统120使用索引162在结构化内容中定位特定字段。在方框1306,结构化LOB系统120返回所定位的特定字段。
在某些实施例中,根据偏移和长度索引结构化内容,偏移和长度由目录130中的结构元数据140提供。
各实施例提供能力以便在LOB数据中索引和搜索字段而不需要首先 具体化LOB字段以便查找字段。结构化LOB系统120提供对字段的直接访问。
在某些实施例中,除了列名称之外或者甚至代替列名称,结构化LOB系统120允许提供偏移和长度。偏移可以相对于表160的开始或者表160中的列的开始。以下是提供偏移和长度的实例查询5:
SELECT*from myTable WHERE offset:20;length:30='someValue'
用户可以检索或更新LOB数据中的特定字段。以下实例查询6、查询7和查询8访问结构化内容中字段具有已知“列名称”的结构化内容。
SELECT NumberOfRooms FROM INSURANCEPOLICY
SELECT NumberOfRooms FROM INSURANCEPOLICY WHERE POLICYTYPE='H'
UPDATE INSURANCEPOLICY SET NumberOfRooms='10'WHERE
POLICYTYPE='H'
借助各实施例,非结构化LOB数据具有结构化的数据的子集(例如,多媒体标记,其中标记部分是LOB数据的一部分,但其内部具有结构化信息)。各实施例搜索该单个列的子集,而不需要在开头开始并具体化列直到信息所在的点。此外,当插入该列时,DBMS 110不需要提取信息的该部分并且将其冗余地存储在其它位置以便实现查询能力。
具有结构化内容的可变长度二进制数据中的粒度为空性
各实施例使存在于VLOB记录结尾处并且未能放入分配给VLOB记录的物理空间的动态内容为空。各实施例维护VLOB记录的长度字段(即,大小字段),并且结构化LOB系统120使在给定VLOB记录长度之外的区域中映射的任何字段无效。在某些实施例中,长度字段在VLOB的开头定义并且标识VLOB记录的实际大小。从该长度值,结构化LOB系统120 根据结构元数据140知道该VLOB记录的哪些嵌套(或内部)字段无效,因为它们超出分配给该VLOB记录的物理大小。
VLOB可以具有在其最大可能长度内映射的多个字段。在其中VLOB记录小于VLOB的最大可能长度的记录中,在位于VLOB记录数据之外的VLOB元数据结尾具有映射的字段,从而使它们成为不存在的字段。
结构化LOB系统120在VLOB的结构化内容中提供粒度级别的为空性(nullability)。借助各实施例,元数据中对于给定VLOB记录而言不存在的特定字段被标记为无效,并且剩余字段保持有效并可以由结构化LOB系统120直接检索。结构化LOB系统120能够解释来自VLOB的任何有效结构化内容。
图14以框图示出根据某些实施例的固定长度LOB数据1400。向LOB数据1400应用结构化内容时,LOB系统120可以将LOB数据1400解释为三个不同字段:字段A、字段B和字段C。在其中VLOB的长度因记录的不同而有所变化的情况下,VLOB的字段可以长于这些字段的长度,因此可能落在特定VLOB记录之外。在这种情况下,如果在结构元数据140中针对VLOB定义的字段延伸超出特定VLOB记录的长度,则结构化LOB系统120认为该字段无效(或为空)。具体地说,在这种情况下,字段的物理存储区域不存在(即,VLOB具有太多字段而不能放入分配给VLOB记录的物理空间)。
图15以框图示出根据某些实施例的具有一个空字段的VLOB 1500。在图15中,VLOB1记录1510是其长度包含字段A和字段B的VLOB 1500的记录。在VLOB1记录1510中,落在VLOB1记录1510的长度之外的字段C被视为空。图16以框图示出根据某些实施例的具有多个空字段的VLOB 1600。在图16中,VLOB2记录1610是其长度包含字段A的VLOB1600的记录。落在VLOB2记录1610的长度之外的字段B和字段C被视为空。
假设将结构化VLOB定义为包括四个字段:F1、F2、F3、F4,并且将每个字段定义为具有10字节的长度。然后,如果插入30字节的VLOB, 则结构化LOB系统120确定字段F4为空。同样,如果插入20字节的VLOB,则结构化LOB系统120确定字段F3和字段F4为空。
作为另一个实例,如果VLOB具有字段F1、F2、F3、F4和F5,并且针对VLOB定义仅最多覆盖字段F1的长度字段,则结构化LOB系统120使字段F2、F3、F4和F5为空。单独地,如果F1已经为空(即,是没有数据的可为空字段),则字段F1继续被视为空。
用户可以根据在VLOB中定义的字段有效还是无效来限定查询。结构化LOB系统120查看特定VLOB记录的长度,以便了解字段是否在VLOB区域内,以判定字段是否存在于物理数据库中。
例如,以下是实例查询9:
SELECT B FROM TBL WHERE B ISNOTNULL
结构化LOB系统120通过执行查找其中VLOB长度足够大以包含字段B的记录,处理查询9。这样,各实施例提供一种用于以粒度方式处理VLOB中的结构化内容的为空性的解决方案。此外,各实施例允许数据库查询语言限定VLOB中的嵌套字段为空还是不为空。
图17以流程图示出根据某些实施例的用于处理VLOB的操作。控制在方框1700开始,结构化LOB系统120使用结构元数据140检查VLOB的长度。在方框1702,结构化LOB系统120根据VLOB的长度,将VLOB记录的一个或多个空字段标识为空。在方框1704,结构化LOB系统120对照VLOB记录处理查询。
图18以框图示出根据某些实施例的表1800。在图18中,具有包含VLOB记录的长度的VLOB,以及内部字段NAME(姓名)、ADDRESS(地址)和EMAIL(电子邮件)。根据定义的最小和最大VLOB长度,可以看到内部字段EMAIL位于VLOB的可变部分中。在针对RICHARD(理查德)的第一记录中,可以看到长度112定义整个VLOB记录,从而使电子邮件成为有效字段。在针对KEVIN(凯文)的第二记录中,长度82覆盖为其定义EMAIL的区域,从而使字段EMAIL为空。
图19示出根据某些实施例的VLOB的定义。具体地说,图19示出如 何在数据库150中定义图18中的VLOB结构。
结构化LOB系统120对针对VLOB发出的CREATE(创建)、READ(读取)和UPDATE(更新)操作敏感。对于这些操作中的每个操作,结构化LOB系统120检查和/或更新VLOB记录的长度字段的值。DELETE(删除)操作保持不变,因为这仅删除整个VLOB记录。
对于CREATE(INSERT(插入))操作,结构化LOB系统120确定INSERT语句在VLOB中定义的最后一个字段,并且将长度字段设置为适当的值以便包含该字段。例如,根据图18中的元数据,为了插入图18的第一记录,用户可以发出以下实例查询10:
INSERT INTO PERSONAL_INFO(NAME,ADDRESS,EMAIL)VALUES
('RICHARD','555 Bailey Ave','tran@abcl23.com')
结构化LOB系统120确定EMAIL是插入的最后一个字段,并且包含字段EMAIL所需的长度大小是112字节。然后,结构化LOB系统120插入为112的LENGTH(长度)值。
为了插入图18的第二记录,用户可以发出以下实例查询11:
INSERT INTO PERSONAL_INFO(NAME,ADDRESS)VALUES(’KEVIN’,'555 Bailey Ave’)
结构化LOB系统120确定ADDRESS是插入的最后一个字段,并且包含字段ADDRESS所需的长度大小是82字节。然后,结构化LOB系统120插入为82的LENGTH值。
对于UPDATE操作,结构化LOB系统120确定UPDATE语句定义的最后一个已更新字段,并且根据需要增加VLOB记录的长度以便容纳较新的大小。如果VLOB记录已经具有可以容纳已更新字段的长度,则不对长度字段进行更改。这防止对VLOB记录大小进行不需要的截断以及使有效数据意外无效。
对于READ(SELECT(选择))操作,结构化LOB系统120检查长度字段的大小,并且判定正在被检索的字段是否落入定义的VLOB记录 长度内。对于在VLOB记录长度之外的字段,返回空值。以下是实例查询12:
SELECT EMAIL FROM PERSONAL_INFO WHERE EMAIL ISNULL
结构化LOB系统120在内部意识到EMAIL是VLOB的一部分,并且将查询12转换为可以容易处理的等效查询13:
SELECT LENGTH FROM PERSONAL_INFO WHERE LENGTH<112
这为结构化LOB系统120提供一种解决方案以便以粒度方式处理VLOB中的结构化内容的为空性,以及为数据查询语言提供一种方式,以便限定VLOB中的嵌套字段为空还是不为空。
各实施例依赖于结构元数据140为VLOB列提供结构。VLOB中的结构化字段不存在空指示符,相反在VLOB的头处具有单个长度字段,该字段指示VLOB记录的整体长度。各实施例为结构化LOB系统120提供能力以便检测VLOB中的区域不存在,因此将它们表示为空实体。在内部,结构化LOB系统120管理该长度字段,并且当经由数据库查询语言插入或更新VLOB记录时相应地更新该长度字段。
借助各实施例,将VLOB分解成定义明确的字段,并且结构化LOB系统120基于这些字段是否存在(其基于VLOB的长度),向它们正确地应用为空性的概念。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可 以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、固态存储器、磁带、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。Java以及所有基于Java的商标和徽标是Oracle和/ 或其子公司的商标或注册商标。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作处理(例如,操作或步骤),以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
实现所述操作的代码还可以在硬件逻辑或电路(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)中实现。所述硬件逻辑可以耦合到处理器以便执行操作。
相互通信的设备不必持续地相互通信,除非另外明确指出。此外,相互通信的设备可以直接或通过一个或多个媒介间接地通信。具有若干相互通信的组件的实施例的描述并非暗示所有此类组件都是必需的。相反,描述了多种可选的组件以例示本发明的多种可能的实施例。此外,尽管可以按照连续的顺序来描述处理步骤、方法步骤、算法或类似步骤,但是此类处理、方法和算法可以被配置为以替代顺序工作。换句话说,所描述的步骤的任何序列或顺序并不一定指示要求按此顺序执行步骤。实际可以按任 何顺序执行在此描述的处理的步骤。此外,可以同时执行某些步骤。
当在此描述单个设备或物品时,将显而易见的是,可以使用多个设备/物品(无论它们是否协作)来代替单个设备/物品。同样,当在此描述了多个设备或物品(无论它们是否协作)的情况下,将显而易见的是,可以使用单个设备/物品来代替多个设备或物品,或者可以使用不同数量的设备/物品代替所示数量的设备或程序。设备的功能和/或特性可以替代地由一个或多个其它未明确描述为具有此类功能/特性的设备来体现。因此,本发明的其它实施例不必包括设备本身。流程图的所示操作显示某些事件以特定的顺序发生。在替代实施例中,某些操作可以以不同的顺序被执行、修改或删除。此外,可以向上述逻辑添加步骤并仍然与所描述的实施例一致。进而,此处所述的操作可以顺序地发生或者某些操作可以被并行地处理。更进一步,操作可以由单个处理单元或由分布式处理单元来执行。
在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如在此使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特性、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其它特性、整数、步骤、操作、元素、组件和/或其组合的存在或增加。
术语“一个实施例”、“实施例”、“多个实施例”、“所述实施例”、“所述多个实施例”、“一个或多个实施例”、“某些实施例”和“某一实施例”指“本发明(多个)的一个或多个(但不是所有)实施例”,除非另外明确指出。术语“包含”、“包括”、“具有”及其变型指“包括但不限于”,除非另外明确指出。
列举的项目的列表并非暗示任何或所有的项目互相排斥,除非另外明确指出。
下面权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它元件相组合地执行该功能的结构、材料或操作。出于示例和说明目的给出了 对本发明实施例的描述,但所述描述并非旨在是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,对于所属技术领域的普通技术人员来说许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理和实际应用,并且当适合于所构想的特定使用时,使得所属技术领域的其它普通技术人员能够理解本发明的具有各种修改的各种实施例。
图20示出根据某些实施例的可以使用的计算机体系架构2000。计算设备100可以实现计算机体系架构2000。计算机体系架构2000适合存储和/或执行程序代码,并且包括通过系统总线2020直接或间接耦合到存储元件2004的至少一个处理器2002。存储元件2004可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。存储元件2004包括操作系统2005以及一个或多个计算机程序2006。
输入/输出(I/O)设备2012、2014(包括但不限于键盘、显示器、指点设备等)可以直接或通过中间I/O控制器2010与系统相连。
网络适配器2008也可以被连接到系统以使所述数据处理系统能够通过中间专用或公共网络变得与其它数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器和以太网卡只是当前可用的网络适配器2008类型中的少数几种。
计算机体系架构2000可以耦合到存储装置2016(例如,任何类型的存储设备;非易失性存储区域,例如磁盘驱动器、光盘驱动器、磁带驱动器等)。存储装置2016可以包括内部存储设备或附加的或网络可访问存储装置。存储装置2016中的计算机程序2006可以载入存储元件2004,并且由处理器2002以所属技术领域已知的方式执行。
计算机体系架构2000可以包括少于所示的组件、未在此示出的其它组件,或者所示组件和其它组件的某种组合。计算机体系架构2000可以包括所属技术领域已知的任何计算设备,例如大型机、服务器、个人计算机、 工作站、膝上型计算机、手持式计算机、电话设备、网络设备、虚拟化设备、存储控制器等。
附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
出于示例和说明目的给出了本发明实施例的上述说明。其并非旨在是穷举的或将实施例限于所公开的精确形式。根据上述教导,许多修改和变化都是可能的。其旨在各实施例的范围并非由此详细说明来限制,而是由此后所附的权利要求来限制。以上说明书、实例和数据提供了对实施例的组成部分的制造和使用的完整说明。由于可以在不偏离本发明的范围的情况下做出许多实施例,所以各实施例存在于此后所附的权利要求或随后提交的任何权利要求或其等效物之内。

结构化大对象LOB数据.pdf_第1页
第1页 / 共34页
结构化大对象LOB数据.pdf_第2页
第2页 / 共34页
结构化大对象LOB数据.pdf_第3页
第3页 / 共34页
点击查看更多>>
资源描述

《结构化大对象LOB数据.pdf》由会员分享,可在线阅读,更多相关《结构化大对象LOB数据.pdf(34页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 104160398 A (43)申请公布日 2014.11.19 CN 104160398 A (21)申请号 201380012712.9 (22)申请日 2013.02.08 13/418,771 2012.03.13 US G06F 17/30(2006.01) (71)申请人 国际商业机器公司 地址 美国纽约 (72)发明人 KD海特 KJ夏勒特 ND丘奇 RV特兰 C霍尔茨 (74)专利代理机构 北京市中咨律师事务所 11247 代理人 于静 张亚非 (54) 发明名称 结构化大对象 (LOB) 数据 (57) 摘要 提供用于处理存储在数据库表的列中的大对 。

2、象 (LOB) 数据内的结构化内容的技术。存储描述 结构的结构元数据, 每个所述结构定义所述结构 化内容的不同格式。接收对所述数据库表中的数 据的请求。 使用所述结构元数据创建空结果集, 所 述结果集具有由至少两个所述结构定义的列。对 于所述数据库表中包括 LOB 数据的每个数据行, 使用控制数据标识要应用于存储在该数据行中的 所述 LOB 数据内的所述结构化内容的一个所述结 构, 以及基于所标识的一个所述结构, 将该数据行 中的所述 LOB 数据内的所述结构化内容映射到所 述结果集中的所述列。返回所述结果集。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2014.09.05 (。

3、86)PCT国际申请的申请数据 PCT/IB2013/051055 2013.02.08 (87)PCT国际申请的公布数据 WO2013/136199 EN 2013.09.19 (51)Int.Cl. 权利要求书 3 页 说明书 14 页 附图 16 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书14页 附图16页 (10)申请公布号 CN 104160398 A CN 104160398 A 1/3 页 2 1. 一种用于大对象 (LOB) 数据内的结构化内容的方法, 所述 LOB 数据存储在数据库表 的列中, 所述方法包括以下步骤 : 存储描述结构。

4、的结构元数据, 每个所述结构定义所述结构化内容的不同格式 ; 接收对所述数据库表中的数据的请求 ; 使用所述结构元数据创建空结果集, 所述结果集具有由至少两个所述结构定义的列 ; 对于所述数据库表中包括 LOB 数据的每个数据行, 使用控制数据标识要应用于存储在 该数据行中的所述 LOB 数据内的所述结构化内容的一个所述结构 ; 以及 基于所标识的一个所述结构, 将该数据行中的所述 LOB 数据内的所述结构化内容映射 到所述结果集中的所述列 ; 以及 返回所述结果集。 2. 根据权利要求 1 的方法, 其中所述结构化内容包括字段, 并且其中当由所述计算机 的所述处理器执行时, 所述计算机可读程。

5、序代码被配置为执行 : 响应于接收所述请求, 使用所述结构元数据创建第一查询以便从所述结构化内容中检 索字段值 ; 以及 使用所述结构元数据创建第二查询以便将所述字段值插入所述结果集的列中。 3. 根据任一上述权利要求的方法, 其中所述结构元数据包括所述 LOB 数据中的结构化 内容的偏移和长度。 4. 根据任一上述权利要求的方法, 其中所述控制数据是所述 LOB 数据的一部分。 5. 根据任一上述权利要求的方法, 其中将所述控制数据存储为单独列。 6. 根据任一上述权利要求的方法, 其中所述 LOB 数据包括结构化内容和非结构化内 容, 并且其中所述方法还包括 : 接收检索所述 LOB 数据。

6、中的所述结构化内容的请求 ; 标识所述 LOB 数据中的所述结构化内容的偏移和长度 ; 在所标识的偏移处检索所标识的长度的所述结构化内容 ; 以及 返回所检索的结构化内容。 7. 根据任一上述权利要求的方法, 其中所述 LOB 数据包括结构化内容和非结构化内 容, 并且其中所述方法还包括 : 存储对所述结构化内容中的元素的索引 ; 接收在所述 LOB 数据中的所述结构化内容中搜索特定元素的请求 ; 使用所述索引在所述结构化内容中定位所述特定元素 ; 以及 返回所定位的特定元素。 8. 根据任一上述权利要求的方法, 其中所述方法还包括 : 接收具有多个字段的可变长度 LOB(VLOB) 记录 ;。

7、 响应于确定所述 VLOB 记录中的字段延伸到分配给所述 VLOB 记录的物理空间之外, 将 该字段作为空字段处理。 9. 根据权利要求 8 的方法, 其中所述方法还包括 : 处理引用所述 VLOB 记录中的空字段的查询。 10.一种用于处理大对象(LOB)数据中的结构化内容的计算机系统, 所述LOB数据存储 在数据库表的列中, 所述计算机系统包括 : 权 利 要 求 书 CN 104160398 A 2 2/3 页 3 处理器 ; 存储设备, 其耦合到所述处理器 ; 以及 存储装置, 其用于存储描述结构的结构元数据, 每个所述结构定义所述结构化内容的 不同格式 ; 接收装置, 其用于接收对所。

8、述数据库表中的数据的请求 ; 使用装置, 其用于使用所述结构元数据创建空结果集, 所述结果集具有由至少两个所 述结构定义的列 ; 对于所述数据库表中包括 LOB 数据的每个数据行, 使用装置还可操作以使用控制数据 标识要应用于存储在该数据行中的所述 LOB 数据内的所述结构化内容的一个所述结构 ; 以 及 映射装置, 其用于基于所标识的一个所述结构, 将该数据行中的所述 LOB 数据内的所 述结构化内容映射到所述结果集中的所述列 ; 以及 返回装置, 其用于返回所述结果集。 11. 根据权利要求 10 的计算机系统, 其中所述结构化内容包括字段, 并且其中所述操 作还包括 : 响应于接收所述请。

9、求, 创建装置使用所述结构元数据创建第一查询以便从所述结构化 内容中检索字段值 ; 以及 创建装置还可操作以使用所述结构元数据创建第二查询以便将所述字段值插入所述 结果集的列中。 12.根据权利要求10或11的计算机系统, 其中所述结构元数据包括所述LOB数据中的 结构化内容的偏移和长度。 13.根据权利要求10至12中的任一权利要求的计算机系统, 其中所述控制数据是所述 LOB 数据的一部分。 14.根据权利要求10至13中的任一权利要求的计算机系统, 其中可将所述控制数据存 储为单独列。 15.根据权利要求10至14中的任一权利要求的计算机系统, 其中所述LOB数据包括结 构化内容和非结构。

10、化内容, 并且其中所述系统还包括 : 接收装置, 其还可操作以接收检索所述 LOB 数据中的所述结构化内容的请求 ; 标识装置, 其用于标识所述 LOB 数据中的所述结构化内容的偏移和长度 ; 检索装置, 其用于在所标识的偏移处检索所标识的长度的所述结构化内容 ; 以及 返回装置, 其用于返回所检索的结构化内容。 16.根据权利要求10至15中的任一权利要求的计算机系统, 其中所述LOB数据包括结 构化内容和非结构化内容, 并且其中所述系统还包括 : 存储装置, 其用于存储对所述结构化内容中的元素的索引 ; 接收装置, 其用于接收在所述 LOB 数据中的所述结构化内容中搜索特定元素的请求 ; 。

11、定位装置, 其用于使用所述索引在所述结构化内容中定位所述特定元素 ; 以及 返回装置, 其用于返回所定位的特定元素。 17. 根据权利要求 10 至 16 中的任一权利要求的计算机系统, 其中所述系统还包括 : 接收装置, 其用于接收具有多个字段的可变长度 LOB(VLOB) 记录 ; 权 利 要 求 书 CN 104160398 A 3 3/3 页 4 处理装置, 其用于响应于确定所述 VLOB 记录中的字段延伸到分配给所述 VLOB 记录的 物理空间之外, 将该字段作为空字段处理。 18. 根据权利要求 17 的计算机系统, 其中所述系统还包括 : 处理装置, 其用于处理引用所述 VLOB。

12、 记录中的空字段的查询。 19.一种用于大对象(LOB)数据内的结构化内容的计算机程序产品, 所述LOB数据存储 在数据库表的列中, 所述计算机程序产品包括 : 计算机可读存储介质, 其可由处理电路读取并且存储指令以便由所述处理电路执行, 以执行根据权利要求 1 至 9 中的任一权利要求的方法。 20. 一种存储在计算机可读介质上并可加载到数字计算机的内部存储器中的计算机程 序, 所述计算机程序包括软件代码部分, 当所述程序在计算机上运行时, 所述软件代码部分 用于执行根据权利要求 1 至 9 中的任一权利要求的方法。 权 利 要 求 书 CN 104160398 A 4 1/14 页 5 结。

13、构化大对象 (LOB) 数据 技术领域 0001 本发明的各实施例涉及创建、 搜索、 检索结构化 LOB 数据以及使其无效。 背景技术 0002 数据库管理系统 (DBMS) 软件可以使用数据库查询语言以便在数据库中存储和检 索数据。数据库查询语言可以是但不限于结构化查询语言 (SQL) 接口。将数据库组织成包 括数据行和列的表。行可以称为元组或记录或行。 0003 可以使用索引访问数据库中的表。索引是对表中的记录的一组有序引用 ( 例如, 指针)。 索引用于使用键(即, 记录的一个字段或属性, 其对应于列)访问表中的每个记录。 术语 “键” 还可以称为 “索引键” 。索引基于表的一个或多个列。

14、。 0004 查询可以被描述为基于特定条件的对数据库中的信息的请求。 查询通常包括一个 或多个谓词。谓词可以被描述为表达或暗示比较运算 ( 例如, A 3) 的搜索条件的元素。 0005 大对象 (LOB) 数据可以被描述为存储在 DBMS 中的表中的单个列或字段中的二进 制数据集合。 0006 在 DBMS 和数据库应用编程接口 (API) 中, 在检索 LOB 数据之后, 将大对象 (LOB) 数据列的解释留给数据库应用。数据库应用从数据库中检索原始 LOB 数据, 并且使用应用 逻辑对 LOB 数据进行后处理。 0007 通常, LOB 数据包含非结构化的多媒体、 音频或图像数据。但是,。

15、 有时, LOB 数据还 可以包含结构化内容 ( 即, 采用字段形式 )。例如, 结构化内容可以包括嵌入在多媒体 LOB 数据中的字段 ( 例如 “artist( 艺术家 )” 和 “title( 标题 )” 字段 ) 的标记。为了在 LOB 数据中搜索特定字段, DBMS 具体化 LOB 数据并且将 LOB 数据发回到发出请求的应用。发出 请求的应用以编程方式检查 LOB 数据的内容, 从而查找特定字段的特定值。某些 DBMS 可以 允许在 LOB 数据的子集上搜索, 但它们首先在内部具体化 LOB 数据以便实现该操作。具体 化 LOB 数据可以被描述为通过输入 / 输出 (I/O) 操作将。

16、 LOB 数据加载到存储器中。 0008 可变长度 LOB(VLOB) 是一种类型的 LOB, 并且可以被定义为具有某一数量的字段, 但 VLOB 的不同记录 ( 即, 实例 ) 可以具有有效或为空 ( 即, 无效 ) 的不同字段。因此, VLOB 可以被描述为具有可变数量的有效字段。 0009 当今应用从数据库中检索这些原始 LOB, 然后使用应用逻辑对 LOB 数据进行后处 理。但是, 如果 LOB 具有有限数量的结构化格式, 则 LOB 数据的交互和解释可以很复杂。 0010 因此, 所属技术领域需要解决上述问题。 发明内容 0011 提供一种用于处理存储在数据库表的列中的大对象 (LO。

17、B) 数据内的结构化内容 的计算机实现的方法、 计算机程序产品和系统。 存储描述结构的结构元数据, 每个所述结构 定义所述结构化内容的不同格式。接收对所述数据库表中的数据的请求。使用所述结构元 数据创建空结果集, 所述结果集具有由至少两个所述结构定义的列。对于所述数据库表中 说 明 书 CN 104160398 A 5 2/14 页 6 包括 LOB 数据的每个数据行, 使用控制数据标识要应用于存储在该数据行中的所述 LOB 数 据内的所述结构化内容的一个所述结构, 以及基于所标识的一个所述结构, 将该数据行中 的所述 LOB 数据内的所述结构化内容映射到所述结果集中的所述列。返回所述结果集。。

18、 0012 从第一方面看, 本发明提供一种用于大对象 (LOB) 数据内的结构化内容的方法, 所述 LOB 数据存储在数据库表的列中, 所述方法包括以下步骤 : 存储描述结构的结构元数 据, 每个所述结构定义所述结构化内容的不同格式 ; 接收对所述数据库表中的数据的请求 ; 使用所述结构元数据创建空结果集, 所述结果集具有由至少两个所述结构定义的列 ; 对于 所述数据库表中包括 LOB 数据的每个数据行, 使用控制数据标识要应用于存储在该数据行 中的所述 LOB 数据内的所述结构化内容的一个所述结构 ; 以及基于所标识的一个所述结 构, 将该数据行中的所述 LOB 数据内的所述结构化内容映射到。

19、所述结果集中的所述列 ; 以 及返回所述结果集。 0013 从另一方面看, 本发明提供一种用于处理大对象 (LOB) 数据中的结构化内容的计 算机系统, 所述 LOB 数据存储在数据库表的列中, 所述计算机系统包括 : 处理器 ; 存储设备, 其耦合到所述处理器 ; 以及存储装置, 其用于存储描述结构的结构元数据, 每个所述结构定 义所述结构化内容的不同格式 ; 接收装置, 其用于接收对所述数据库表中的数据的请求 ; 使用装置, 其用于使用所述结构元数据创建空结果集, 所述结果集具有由至少两个所述结 构定义的列 ; 对于所述数据库表中包括 LOB 数据的每个数据行, 使用装置还可操作以使用 控。

20、制数据标识要应用于存储在该数据行中的所述 LOB 数据内的所述结构化内容的一个所 述结构 ; 以及映射装置, 其用于基于所标识的一个所述结构, 将该数据行中的所述 LOB 数据 内的所述结构化内容映射到所述结果集中的所述列 ; 以及返回装置, 其用于返回所述结果 集。 0014 从另一方面看, 本发明提供一种用于大对象 (LOB) 数据内的结构化内容的计算机 程序产品, 所述 LOB 数据存储在数据库表的列中, 所述计算机程序产品包括 : 其中包含计算 机可读程序代码的计算机可读存储介质, 当由计算机的处理器执行时, 所述计算机可读程 序代码被配置为执行 : 存储描述结构的结构元数据, 每个所。

21、述结构定义所述结构化内容的 不同格式 ; 接收对所述数据库表中的数据的请求 ; 使用所述结构元数据创建空结果集, 所 述结果集具有由至少两个所述结构定义的列 ; 对于所述数据库表中包括 LOB 数据的每个数 据行, 使用控制数据标识要应用于存储在该数据行中的所述 LOB 数据内的所述结构化内容 的一个所述结构 ; 以及基于所标识的一个所述结构, 将该数据行中的所述 LOB 数据内的所 述结构化内容映射到所述结果集中的所述列 ; 以及返回所述结果集。 0015 从另一方面看, 本发明提供一种用于处理大对象 (LOB) 数据内的结构化内容的计 算机系统, 所述 LOB 数据存储在数据库表的列中, 。

22、所述计算机系统包括 : 处理器 ; 以及存储 设备, 其耦合到所述处理器, 其中所述存储设备在其上存储程序, 并且其中所述处理器被配 置为执行所述程序的指令以便执行操作, 其中所述操作包括 : 存储描述结构的结构元数据, 每个所述结构定义所述结构化内容的不同格式 ; 接收对所述数据库表中的数据的请求 ; 使 用所述结构元数据创建空结果集, 所述结果集具有由至少两个所述结构定义的列 ; 对于所 述数据库表中包括 LOB 数据的每个数据行, 使用控制数据标识要应用于存储在该数据行中 的所述 LOB 数据内的所述结构化内容的一个所述结构 ; 以及基于所标识的一个所述结构, 将该数据行中的所述 LOB。

23、 数据内的所述结构化内容映射到所述结果集中的所述列 ; 以及返 说 明 书 CN 104160398 A 6 3/14 页 7 回所述结果集。 0016 从另一方面看, 本发明提供一种用于大对象 (LOB) 数据内的结构化内容的计算 机程序产品, 所述 LOB 数据存储在数据库表的列中, 所述计算机程序产品包括计算机可读 存储介质, 所述计算机可读存储介质可由处理电路读取并存储指令以便由所述处理电路执 行, 以执行一种用于执行本发明的步骤的方法。 0017 从另一方面看, 本发明提供一种存储在计算机可读介质上并可载入数字计算机的 内部存储器的计算机程序, 所述计算机程序包括软件代码部分, 当所。

24、述程序在计算机上运 行时, 所述软件代码部分用于执行本发明的步骤。 附图说明 0018 现在仅通过实例的方式参考以下附图中所示的优选实施例描述本发明, 这些附图 是 : 0019 图 1 以框图示出根据本发明的一个优选实施例的计算环境 ; 0020 图 2 以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的数 据库表 ; 0021 图 3 以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的用 于存储保险数据的数据库表 ; 0022 图 4 以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的用 于房主保险单的 LOB 数据的结构 ; 0023 图 5 以框图示。

25、出根据现有技术并且其中可以实现本发明的一个优选实施例的用 于机动车辆保险单的 LOB 数据的结构 ; 0024 图 6 以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的显 示未解释的 ( 原始 ) 二进制数据的结果集 ; 0025 图7以框图示出根据本发明的一个优选实施例的具有基于底层LOB数据格式的格 式的保险单结果集 ; 0026 图 8 以流程图示出根据本发明的一个优选实施例的用于处理存储在数据库表的 列中的大对象 (LOB) 数据内的结构化内容的操作 ; 图 8 由图 8A 和图 8B 组成。 0027 图 9 示出根据本发明的一个优选实施例的描述保险单表的伪代码 ; 0。

26、028 图 10 示出根据本发明的一个优选实施例的用于描述保险单表的伪代码的结构元 数据的一个实例 ; 图 10 由图 10A 和 10B 组成。 0029 图 11 以框图示出根据本发明的一个优选实施例的 LOB 数据内的结构化内容 ; 0030 图 12 以流程图示出根据本发明的一个优选实施例的用于在 LOB 数据中检索结构 化内容的操作 ; 0031 图 13 以流程图示出根据本发明的一个优选实施例的用于在 LOB 数据中索引和搜 索结构化内容的操作 ; 0032 图 14 以框图示出根据本发明的一个优选实施例的固定长度 LOB 数据 ; 0033 图 15 以框图示出根据本发明的一个优。

27、选实施例的具有一个空字段的 VLOB 数据 ; 0034 图 16 以框图示出根据本发明的一个优选实施例的具有多个空字段的 VLOB 数据 ; 0035 图 17 以流程图示出根据本发明的一个优选实施例的用于处理 VLOB 的操作 ; 说 明 书 CN 104160398 A 7 4/14 页 8 0036 图 18 以框图示出根据本发明的一个优选实施例的表 ; 0037 图 19 示出根据本发明的一个优选实施例的 VLOB 的定义 ; 以及 0038 图 20 以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的计 算机体系架构。 具体实施方式 0039 出于示例目的给出了对本发明。

28、的不同实施例的描述, 但所述描述并非旨在是穷举 的或是限于所公开的实施例。在不偏离所述实施例的范围的情况下, 对于所属技术领域的 普通技术人员来说许多修改和变化都是显而易见的。本文中所用术语的选择, 旨在最好地 解释实施例的原理、 实际应用或对市场中的技术的技术改进, 或者使所属技术领域的其它 普通技术人员能理解本文公开的实施例。 0040 图 1 以框图示出根据某些实施例的计算环境。计算设备包括 DBMS110, 并且 DBMS 110 包括结构化 LOB 系统 120 和目录 130。目录 130 包括结构元数据 140。在某些实施例 中, 结构元数据 140 包括 LOB 数据中的结构化。

29、内容 ( 例如, 字段 ) 的偏移和长度, 以及用于 访问 LOB 数据的映射信息。DBMS 110 耦合到数据库 150。数据库 150 存储一个或多个数据 库表 160 和一个或多个索引 162。一个或多个数据库表 160 可以存储 LOB 数据、 二进制大对 象 (BLOB) 数据、 VLOB 数据和其它数据。 0041 创建结构化 LOB 数据 0042 结构化 LOB 系统 120 提供二进制数据与例如数据库管理系统 (DBMS) 中所应用的 结构化内容的动态运行时映射, 以便生成结构化 LOB 数据。 0043 图 2 以框图示出根据某些实施例的数据库表 200。数据库表 200 。

30、包括用于二进制 大对象 (BLOB)( 其为一种类型的 LOB) 的列。术语二进制大对象 (BLOB) 用于描述作为单个 实体存储在 DBMS 中的二进制数据集合。图 2 中的省略号指示可以具有其它数据行。此外, 可以具有其它列。 0044 图 3 以框图示出根据某些实施例的用于存储保险单数据的数据库表 300。数据库 表 300 用于保险单, 并且将保险单数据 ( 在图 3 中名为 “PolicyData” ) 存储为 LOB 数据或 BLOB数据。 保险单数据可以存储用于机动车辆保险单或房主保险单的数据。 保险单数据存 储两个不同结构之一 ( 即, 布局或格式 ), 具体取决于保险单类型。。

31、图 4 以框图示出根据某 些实施例的用于房主保险单的LOB数据的结构400。 结构400包括用于保险单类型、 房屋类 型、 房间数量、 房屋价值和地址的列。 0045 图 5 以框图示出根据某些实施例的用于机动车辆保险单的 LOB 数据的结构 500。 结构 500 包括用于保险单类型、 制造商、 型号、 年份、 颜色和价值的列。 0046 因为存储在数据库表 300 中的每个行可以是两个结构 400、 500 之一, 所以结构化 LOB 系统 120 存储结构元数据 140, 结构元数据 140 描述与 LOB 数据关联的每个结构以便有 助于处理 LOB 数据。结构元数据 140 描述 LO。

32、B 数据与特定结构 ( 例如结构 400 或 500) 之 间的映射, 以便能够将 LOB 数据映射到该特定结构的列。 0047 除了存储有关 LOB 数据结构的结构元数据 140 之外, 结构化 LOB 系统 120 针对插 入到数据库 150 中的每个行存储控制数据 ( 例如, 控制标志或控制字段 )。该控制数据可 以直接存储在 LOB 数据中, 或者作为单独列存储在 LOB 数据外部。在图 4 和 5 中, 保险单类 说 明 书 CN 104160398 A 8 5/14 页 9 型存储在结构化LOB数据的第一部分中, 并且保险单类型是控制数据, 其用于指示LOB数据 用于哪种类型的保险。

33、单。结构化 LOB 系统 120 使用该信息确定如何根据对应结构有效传送 LOB 数据。具体地说, 结构化 LOB 系统 120 基于控制数据, 使用结构元数据 140 将 LOB 数据 映射到特定结构。 0048 以下是实例查询 1 : 0049 SELECT*FROM InsurancePolicy 0050 当发出查询 1 时, ( 例如向最终用户 ) 返回结果集, 其包含 PolicyData BLOB 作为 原始二进制数据。查询 1 可以使用索引。图 6 以框图示出根据某些实施例的显示未解释的 ( 原始 ) 二进制数据的结果集 600。在这些情况下, 使用 BLOB 外部的索引。因为。

34、结果集 600 仅包含 BLOB 数据, 所以 BLOB 作为整体进行索引。在这些情况下, 应用将 BLOB 解析为子字 段。 0051 当接收对存储在数据库表 160 的列中的 LOB 数据的请求时, 结构化 LOB 系统 120 使用结构元数据 140 生成查询以便检索 LOB 数据并且将 LOB 数据插入到结果集中, 该结果 集是另一个数据库表 160。例如, 结构化 LOB 系统使用结构元数据 140 生成下面的查询 2、 查询 3、 查询 4、 查询 6、 查询 7 和查询 8。 0052 以下是标识保险单类型的实例查询 2 : 0053 SELECT NumberOfRooms F。

35、ROM INSURANCEPOLICY 0054 WHERE POLICYTYPE H 0055 结构元数据 140 和控制数据的组合允许结构化 LOB 系统 120 为最终用户提供结构 化 LOB 数据。在某些实施例中, 结构化 LOB 系统 120 生成具有列的结果集, 这些列的格式为 可以包括在结果集中的每种类型的 LOB 数据。在某些实施例中, 结构化 LOB 系统 120 使用 控制数据的值 ( 即, 图 4 和 5 中的保险单类型的值 ) 针对每行确定结果集中的哪些列可能 具有数据以及哪些列可能没有数据。 0056 图7以框图示出根据某些实施例的具有基于底层LOB数据格式的格式的保。

36、险单结 果集700。 例如, 结构化LOB系统120在结果集700中提供其它列信息, 包括 : 保险单类型、 房 屋类型、 房间数量、 房屋价值、 地址、 制造商、 型号、 年份、 颜色和价值。图 7 示出结果集 700, 其包含一行机动车辆保险单数据以及一行房主保险单数据。在结果集 700 中, 当 LOB 数据 具有值为 “M” 的控制数据 ( 即, 保险单类型 ) 时, 结构化 LOB 系统 120 根据存储在 DBMS 110 中的结构元数据 140, 显示机动车辆保险单的列数据, 其包括 : 保险单类型、 制造商、 型号、 年份、 颜色和价值。同样, 当 LOB 数据具有值为 “H”。

37、 的控制数据时, 结构化 LOB 系统 120 根 据存储在 DBMS 110 中的结构元数据 140, 显示房主保险单的列数据, 其包括 : 保险单类型、 房屋类型、 房间数量、 房屋价值和地址。 0057 当结构化LOB系统120在结果集的行中显示一种类型LOB数据(例如, 机动车辆保 险单 ) 的值时, 结构化 LOB 系统 120 填充特定于该类型 LOB 数据的列的值, 并且结构化 LOB 系统 120 针对当前数据行将特定于其它类型 LOB 数据 ( 例如, 房主保险单 ) 的列显示为空 或无效。 0058 使用结构化 LOB 系统 110, DBMS 110 能够直接处理有限结构。

38、化 LOB 数据。这使得 LOB 数据处理对于最终用户而言透明, 并且提供可扩展机制以便访问结构化 LOB 数据中的 数据, 包括对有限结构化 LOB 数据进行读取、 插入、 更新和索引。 说 明 书 CN 104160398 A 9 6/14 页 10 0059 以下是用于插入房主保险单的值的实例查询 3 : 0060 INSERT INTO INSURANCEPOLICY(PolicyType,PropertyType, 0061 NumberOfRooms,HomeValue,ADDRESS)VALUES(H,SINGLE FAMILY,5,500000,555 BAILEY AVE) 。

39、0062 以下是用于插入机动车辆保险单的值的实例查询 4 : 0063 INSERT INTO INSURANCEPOLICY(PolicyType,MAKE,MODEL,YEAR,COLOR,VALUE)VA LUES(M,FORD,T,1966,BLACK,15000) 0064 图8以流程图示出根据某些实施例的用于处理存储在数据库表160的列中的大对 象 (LOB) 数据内的结构化内容的操作。图 8 由图 8A 和图 8B 组成。控制在方框 800 开始, 结构化LOB系统120存储描述(两个或更多)结构的结构元数据140, 每个结构定义结构化 内容的不同格式。在某些实施例中, 数据库管。

40、理员 / 创建者将描述 ( 两个或更多 )LOB 数据 结构的信息合并为结构元数据 140。在方框 802, 结构化 LOB 系统 120 接收对数据库表 160 中的数据的请求。 对于数据库表160中的至少一个数据行, 将LOB数据存储在数据库表160 的列中。在方框 804, 结构化 LOB 系统 120 使用结构元数据 140 创建空结果集, 该结果集具 有由至少两个结构定义的列。在某些实施例中, 结构化 LOB 系统 120 不会重复冗余列 ( 例 如, 保险单类型列在结构 400 和 500 中, 但结果集 700 显示一次保险单类型列 )。在某些实 施例中, 结构化 LOB 系统 。

41、120 将给定表的字段名称限制为是唯一的。因此, 如果定义多个 LOB 结构 ( 例如 “Home Insurance( 房屋保险 )” 、“Car Insurance( 汽车保险 )” 和 “Life Insurance( 人寿保险 )” ), 并且如果三个类型共享诸如 “address( 地址 )” 之类的公共字 段, 则数据库定义将具有 NAME “HOME_ADDRESS“ 的字段、 NAME “CAR_ADDRESS“ 的字段 和 NAME “LIFE_ADDRESS“ 的字段。 0065 在方框 806, 结构化 LOB 系统 120 从数据库表 160 中的第一个数据行开始, 选。

42、择包 括 LOB 数据的下一个数据行。在方框 808, 结构化 LOB 系统 120 使用控制数据标识要应用于 存储在该数据行中的 LOB 数据内的结构化内容的一个结构。从方框 808, 处理继续到方框 810( 图 8B)。 0066 在方框 810, 结构化 LOB 系统 120 基于标识的一个结构, 将该数据行中的 LOB 数据 内的结构化内容映射到结果集中的列。在某些实施例中, 通过创建查询执行映射。例如, 结 构化 LOB 系统 120 使用结构元数据 140 创建第一查询以便从结构化内容中检索字段值, 并 且使用结构元数据 140 创建第二查询以便将该字段值插入结果集的列中。 00。

43、67 在方框 812, 结构化 LOB 系统 120 判定是否已选择所有数据行。如果是, 则处理继 续到方框 814, 否则, 处理循环回到方框 806 以便选择另一个数据行 ( 图 8A)。 0068 在方框 814, 结构化 LOB 系统 120 返回结果集。在结果集的列中显示 LOB 数据内的 结构化内容。 0069 图 9 示出根据某些实施例的描述保险单表的伪代码 900。 “PolicyType” 字段旨在 用作控制数据, 其采用 PolicyData 映射中的控制字段的形式。这通过使用 DEPENDINGON DFSMAP 语句的参数来定义。每个 DFSMAP 语句包含一个或多个 。

44、DFSCASE 语句, DFSCASE 语句 表示控制字段 PolicyType 的 1:N 个值之一。在该实例中, 具有两个实例 HOUSE 和 MOTOR。 CASEID 是预计存储在 PolicyType 字段中的值。当查询检查 PolicyType 的值时, 使用适 当的 DFSCASE 定义确定该记录的 FIELD 结构。在该实例中, LOB 数据由 DFSMAP 定义并且从 说 明 书 CN 104160398 A 10 7/14 页 11 偏移 2 跨越到 46。对于保险单表, 结构元数据 1000、 1010 将 PolicyType 定义为 DFSMAP 的 控制字段 (DE。

45、PEDINGON)。DFSCASE 元数据然后告知结构化 LOB 系统 120 如何通过提供对应 于特定 LOB 数据的 CASEID( 控制数据值 ) 来解释表中的不同行。 0070 图10示出根据某些实施例的用于描述保险单表的伪代码900的结构元数据1000、 1010 的一个实例。 0071 图 10 由图 10A 和 10B 组成。工具 ( 例如, 使用 DBMS 110 的第三方软件 ) 可以使 用元数据表示以便理解表。 0072 用户可以查询目录130中的结构元数据140以便标识哪些记录用于哪种保险单类 型。 0073 因此, 如果LOB数据具有有限数量的结构化结构, 则各实施例简。

46、化LOB数据的交互 和解释。 各实施例存储和查询可变数据, 这些数据的结构可以因记录的不同而有所变化。 各 实施例使用结构化 LOB 数据, 在单个表中管理多个不同的记录类型。 0074 结构元数据 140 允许数据库管理员 (DBA) 或其它人员定义分层并且灵活的 LOB 数 据结构。分层可以被描述为深层嵌套的字段。使用嵌套字段, LOB 数据可以包含自身包含 其它 LOB 数据的字段。灵活可以被描述为针对这些层中的数据类型没有约束, 甚至可以引 入用户定义的类型 ( 它们不需要由预先存在的 DBMS 类型组成 )。如果给出该结构元数据 140, 则各实施例将结构应用于先前未结构化的原始 L。

47、OB 数据, 并且提供能力以便利用数据 库查询语言 ( 例如, SQL) 对这些 LOB 字段进行读取和写入, 而无论如何深层地嵌套。 0075 某些实施例处理存储在数据库的 LOB 列中的不同结构。存储描述在 LOB 数据中使 用的不同结构的结构元数据。当接收对 LOB 数据的请求时, 使用与 LOB 数据关联的结构元 数据定义可以映射到 LOB 数据的查询。对于针对其返回 LOB 数据的每个数据行, 使用控制 数据标识哪些底层不同结构应用于该 LOB 数据, 并且将该 LOB 数据映射到对应结果集中的 列。 0076 访问结构化内容 0077 借助各实施例, 结构化 LOB 系统 120 。

48、提供能力以便在本机搜索和索引结构化内容 中的特定字段, 其中这些字段在 LOB 数据中的已知偏移处。结构化 LOB 系统 120 允许针对 这些字段的索引能力, 以便使用索引 162 检索 LOB 数据。 0078 结构化 LOB 系统 120 为 DBMS 110 提供能力以便在 LOB 数据中动态搜索或索引结 构化内容, 而不需要具体化 LOB 数据或 LOB 数据的各部分。LOB 数据中的结构化内容在 LOB 数据中的已知位置 ( 即, 偏移 ) 处。结构化 LOB 系统 120 还为 DBMS 110 提供能力以便针对 LOB 数据的这些结构化字段创建索引以检索全部 LOB 数据, 而。

49、 DBMS 110 不必从 LOB 数据中 提取和复制目标数据并在首次插入LOB数据时将目标数据存储在另一个列中, 并且DBMS不 必具体化 LOB 数据的各部分。DBMS 110 可以直接访问 LOB 数据的任何部分或子集, 而无论 LOB数据是否包含结构化内容。 DBMS 110不需要事先知道LOB数据具有结构化字段。 动态、 按需执行 LOB 数据的搜索。因此, 不需要向 DBMS 110 定义其它数据库元数据。借助各实施 例, 结构化 LOB 系统 120 在已存储 ( 例如, 数十年 ) 的 LOB 数据子集上搜索。 0079 结构化 LOB 系统 120 为应用程序提供能力以便使用有资格用于任何 LOB 数据子集 的搜索谓词创建查询。例如, 查询可以搜索每个 LOB 数据, 其在包含在该 LOB 数据中的标记 中包含特定 “artist( 艺术家 )” 名称。应用程序还可以。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1