结构化大对象(lob)数据的制作方法

文档序号:6533225阅读:327来源:国知局
结构化大对象(lob)数据的制作方法
【专利摘要】提供用于处理存储在数据库表的列中的大对象(LOB)数据内的结构化内容的技术。存储描述结构的结构元数据,每个所述结构定义所述结构化内容的不同格式。接收对所述数据库表中的数据的请求。使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列。对于所述数据库表中包括LOB数据的每个数据行,使用控制数据标识要应用于存储在该数据行中的所述LOB数据内的所述结构化内容的一个所述结构,以及基于所标识的一个所述结构,将该数据行中的所述LOB数据内的所述结构化内容映射到所述结果集中的所述列。返回所述结果集。
【专利说明】结构化大对象(LOB)数据

【技术领域】
[0001] 本发明的各实施例涉及创建、搜索、检索结构化L0B数据以及使其无效。

【背景技术】
[0002] 数据库管理系统(DBMS)软件可以使用数据库查询语言以便在数据库中存储和检 索数据。数据库查询语言可以是但不限于结构化查询语言(SQL)接口。将数据库组织成包 括数据行和列的表。行可以称为元组或记录或行。
[0003] 可以使用索引访问数据库中的表。索引是对表中的记录的一组有序引用(例如, 指针)。索引用于使用键(即,记录的一个字段或属性,其对应于列)访问表中的每个记录。 术语"键"还可以称为"索引键"。索引基于表的一个或多个列。
[0004] 查询可以被描述为基于特定条件的对数据库中的信息的请求。查询通常包括一个 或多个谓词。谓词可以被描述为表达或暗示比较运算(例如,A = 3)的搜索条件的元素。
[0005] 大对象(L0B)数据可以被描述为存储在DBMS中的表中的单个列或字段中的二进 制数据集合。
[0006] 在DBMS和数据库应用编程接口(API)中,在检索L0B数据之后,将大对象(L0B) 数据列的解释留给数据库应用。数据库应用从数据库中检索原始L0B数据,并且使用应用 逻辑对L0B数据进行后处理。
[0007] 通常,L0B数据包含非结构化的多媒体、音频或图像数据。但是,有时,L0B数据还 可以包含结构化内容(即,采用字段形式)。例如,结构化内容可以包括嵌入在多媒体L0B 数据中的字段(例如"artist(艺术家)"和"title(标题)"字段)的标记。为了在L0B 数据中搜索特定字段,DBMS具体化L0B数据并且将L0B数据发回到发出请求的应用。发出 请求的应用以编程方式检查L0B数据的内容,从而查找特定字段的特定值。某些DBMS可以 允许在L0B数据的子集上搜索,但它们首先在内部具体化L0B数据以便实现该操作。具体 化L0B数据可以被描述为通过输入/输出(I/O)操作将L0B数据加载到存储器中。
[0008] 可变长度LOB (VL0B)是一种类型的L0B,并且可以被定义为具有某一数量的字段, 但VL0B的不同记录(S卩,实例)可以具有有效或为空(即,无效)的不同字段。因此,VL0B 可以被描述为具有可变数量的有效字段。
[0009] 当今应用从数据库中检索这些原始L0B,然后使用应用逻辑对L0B数据进行后处 理。但是,如果L0B具有有限数量的结构化格式,则L0B数据的交互和解释可以很复杂。 [0010] 因此,所属【技术领域】需要解决上述问题。


【发明内容】

[0011] 提供一种用于处理存储在数据库表的列中的大对象(L0B)数据内的结构化内容 的计算机实现的方法、计算机程序产品和系统。存储描述结构的结构元数据,每个所述结构 定义所述结构化内容的不同格式。接收对所述数据库表中的数据的请求。使用所述结构元 数据创建空结果集,所述结果集具有由至少两个所述结构定义的列。对于所述数据库表中 包括LOB数据的每个数据行,使用控制数据标识要应用于存储在该数据行中的所述LOB数 据内的所述结构化内容的一个所述结构,以及基于所标识的一个所述结构,将该数据行中 的所述L0B数据内的所述结构化内容映射到所述结果集中的所述列。返回所述结果集。
[0012] 从第一方面看,本发明提供一种用于大对象(L0B)数据内的结构化内容的方法, 所述L0B数据存储在数据库表的列中,所述方法包括以下步骤:存储描述结构的结构元数 据,每个所述结构定义所述结构化内容的不同格式;接收对所述数据库表中的数据的请求; 使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列;对于 所述数据库表中包括L0B数据的每个数据行,使用控制数据标识要应用于存储在该数据行 中的所述L0B数据内的所述结构化内容的一个所述结构;以及基于所标识的一个所述结 构,将该数据行中的所述L0B数据内的所述结构化内容映射到所述结果集中的所述列;以 及返回所述结果集。
[0013] 从另一方面看,本发明提供一种用于处理大对象(L0B)数据中的结构化内容的计 算机系统,所述L0B数据存储在数据库表的列中,所述计算机系统包括:处理器;存储设备, 其耦合到所述处理器;以及存储装置,其用于存储描述结构的结构元数据,每个所述结构定 义所述结构化内容的不同格式;接收装置,其用于接收对所述数据库表中的数据的请求; 使用装置,其用于使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结 构定义的列;对于所述数据库表中包括L0B数据的每个数据行,使用装置还可操作以使用 控制数据标识要应用于存储在该数据行中的所述L0B数据内的所述结构化内容的一个所 述结构;以及映射装置,其用于基于所标识的一个所述结构,将该数据行中的所述L0B数据 内的所述结构化内容映射到所述结果集中的所述列;以及返回装置,其用于返回所述结果 集。
[0014] 从另一方面看,本发明提供一种用于大对象(L0B)数据内的结构化内容的计算机 程序产品,所述L0B数据存储在数据库表的列中,所述计算机程序产品包括:其中包含计算 机可读程序代码的计算机可读存储介质,当由计算机的处理器执行时,所述计算机可读程 序代码被配置为执行:存储描述结构的结构元数据,每个所述结构定义所述结构化内容的 不同格式;接收对所述数据库表中的数据的请求;使用所述结构元数据创建空结果集,所 述结果集具有由至少两个所述结构定义的列;对于所述数据库表中包括L0B数据的每个数 据行,使用控制数据标识要应用于存储在该数据行中的所述L0B数据内的所述结构化内容 的一个所述结构;以及基于所标识的一个所述结构,将该数据行中的所述L0B数据内的所 述结构化内容映射到所述结果集中的所述列;以及返回所述结果集。
[0015] 从另一方面看,本发明提供一种用于处理大对象(L0B)数据内的结构化内容的计 算机系统,所述L0B数据存储在数据库表的列中,所述计算机系统包括:处理器;以及存储 设备,其耦合到所述处理器,其中所述存储设备在其上存储程序,并且其中所述处理器被配 置为执行所述程序的指令以便执行操作,其中所述操作包括:存储描述结构的结构元数据, 每个所述结构定义所述结构化内容的不同格式;接收对所述数据库表中的数据的请求;使 用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列;对于所 述数据库表中包括L0B数据的每个数据行,使用控制数据标识要应用于存储在该数据行中 的所述L0B数据内的所述结构化内容的一个所述结构;以及基于所标识的一个所述结构, 将该数据行中的所述L0B数据内的所述结构化内容映射到所述结果集中的所述列;以及返 回所述结果集。
[0016] 从另一方面看,本发明提供一种用于大对象(L0B)数据内的结构化内容的计算 机程序产品,所述L0B数据存储在数据库表的列中,所述计算机程序产品包括计算机可读 存储介质,所述计算机可读存储介质可由处理电路读取并存储指令以便由所述处理电路执 行,以执行一种用于执行本发明的步骤的方法。
[0017] 从另一方面看,本发明提供一种存储在计算机可读介质上并可载入数字计算机的 内部存储器的计算机程序,所述计算机程序包括软件代码部分,当所述程序在计算机上运 行时,所述软件代码部分用于执行本发明的步骤。

【专利附图】

【附图说明】
[0018] 现在仅通过实例的方式参考以下附图中所示的优选实施例描述本发明,这些附图 是:
[0019] 图1以框图示出根据本发明的一个优选实施例的计算环境;
[0020] 图2以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的数 据库表;
[0021] 图3以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的用 于存储保险数据的数据库表;
[0022] 图4以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的用 于房主保险单的L0B数据的结构;
[0023] 图5以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的用 于机动车辆保险单的L0B数据的结构;
[0024] 图6以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的显 示未解释的(原始)二进制数据的结果集;
[0025] 图7以框图示出根据本发明的一个优选实施例的具有基于底层L0B数据格式的格 式的保险单结果集;
[0026] 图8以流程图示出根据本发明的一个优选实施例的用于处理存储在数据库表的 列中的大对象(L0B)数据内的结构化内容的操作;图8由图8A和图8B组成。
[0027] 图9示出根据本发明的一个优选实施例的描述保险单表的伪代码;
[0028] 图10示出根据本发明的一个优选实施例的用于描述保险单表的伪代码的结构元 数据的一个实例;图10由图10A和10B组成。
[0029] 图11以框图示出根据本发明的一个优选实施例的L0B数据内的结构化内容;
[0030] 图12以流程图示出根据本发明的一个优选实施例的用于在L0B数据中检索结构 化内容的操作;
[0031] 图13以流程图示出根据本发明的一个优选实施例的用于在L0B数据中索引和搜 索结构化内容的操作;
[0032] 图14以框图示出根据本发明的一个优选实施例的固定长度L0B数据;
[0033] 图15以框图示出根据本发明的一个优选实施例的具有一个空字段的VL0B数据;
[0034] 图16以框图示出根据本发明的一个优选实施例的具有多个空字段的VL0B数据;
[0035] 图17以流程图示出根据本发明的一个优选实施例的用于处理VL0B的操作;
[0036] 图18以框图示出根据本发明的一个优选实施例的表;
[0037] 图19示出根据本发明的一个优选实施例的VL0B的定义;以及
[0038] 图20以框图示出根据现有技术并且其中可以实现本发明的一个优选实施例的计 算机体系架构。

【具体实施方式】
[0039] 出于示例目的给出了对本发明的不同实施例的描述,但所述描述并非旨在是穷举 的或是限于所公开的实施例。在不偏离所述实施例的范围的情况下,对于所属【技术领域】的 普通技术人员来说许多修改和变化都是显而易见的。本文中所用术语的选择,旨在最好地 解释实施例的原理、实际应用或对市场中的技术的技术改进,或者使所属【技术领域】的其它 普通技术人员能理解本文公开的实施例。
[0040] 图1以框图示出根据某些实施例的计算环境。计算设备包括DBMS110,并且DBMS 110包括结构化LOB系统120和目录130。目录130包括结构元数据140。在某些实施例 中,结构元数据140包括L0B数据中的结构化内容(例如,字段)的偏移和长度,以及用于 访问L0B数据的映射信息。DBMS 110耦合到数据库150。数据库150存储一个或多个数据 库表160和一个或多个索引162。一个或多个数据库表160可以存储L0B数据、二进制大对 象(BLOB)数据、VL0B数据和其它数据。
[0041] 创建结构化L0B数据
[0042] 结构化L0B系统120提供二进制数据与例如数据库管理系统(DBMS)中所应用的 结构化内容的动态运行时映射,以便生成结构化L0B数据。
[0043] 图2以框图示出根据某些实施例的数据库表200。数据库表200包括用于二进制 大对象(BLOB)(其为一种类型的L0B)的列。术语二进制大对象(BLOB)用于描述作为单个 实体存储在DBMS中的二进制数据集合。图2中的省略号指示可以具有其它数据行。此外, 可以具有其它列。
[0044] 图3以框图示出根据某些实施例的用于存储保险单数据的数据库表300。数据库 表300用于保险单,并且将保险单数据(在图3中名为"PolicyData")存储为L0B数据或 BLOB数据。保险单数据可以存储用于机动车辆保险单或房主保险单的数据。保险单数据存 储两个不同结构之一(即,布局或格式),具体取决于保险单类型。图4以框图示出根据某 些实施例的用于房主保险单的L0B数据的结构400。结构400包括用于保险单类型、房屋类 型、房间数量、房屋价值和地址的列。
[0045] 图5以框图示出根据某些实施例的用于机动车辆保险单的L0B数据的结构500。 结构500包括用于保险单类型、制造商、型号、年份、颜色和价值的列。
[0046] 因为存储在数据库表300中的每个行可以是两个结构400、500之一,所以结构化 L0B系统120存储结构元数据140,结构元数据140描述与L0B数据关联的每个结构以便有 助于处理L0B数据。结构元数据140描述L0B数据与特定结构(例如结构400或500)之 间的映射,以便能够将L0B数据映射到该特定结构的列。
[0047] 除了存储有关L0B数据结构的结构元数据140之外,结构化L0B系统120针对插 入到数据库150中的每个行存储控制数据(例如,控制标志或控制字段)。该控制数据可 以直接存储在L0B数据中,或者作为单独列存储在L0B数据外部。在图4和5中,保险单类 型存储在结构化LOB数据的第一部分中,并且保险单类型是控制数据,其用于指示LOB数据 用于哪种类型的保险单。结构化L0B系统120使用该信息确定如何根据对应结构有效传送 L0B数据。具体地说,结构化L0B系统120基于控制数据,使用结构元数据140将L0B数据 映射到特定结构。
[0048] 以下是实例查询1 :
[0049] SELECT*FR0M InsurancePolicy
[0050] 当发出查询1时,(例如向最终用户)返回结果集,其包含PolicyData BLOB作为 原始二进制数据。查询1可以使用索引。图6以框图示出根据某些实施例的显示未解释的 (原始)二进制数据的结果集600。在这些情况下,使用BLOB外部的索引。因为结果集600 仅包含BLOB数据,所以BLOB作为整体进行索引。在这些情况下,应用将BLOB解析为子字 段。
[0051] 当接收对存储在数据库表160的列中的L0B数据的请求时,结构化L0B系统120 使用结构元数据140生成查询以便检索L0B数据并且将L0B数据插入到结果集中,该结果 集是另一个数据库表160。例如,结构化L0B系统使用结构元数据140生成下面的查询2、 查询3、查询4、查询6、查询7和查询8。
[0052] 以下是标识保险单类型的实例查询2 :
[0053] SELECT NumberOfRooms FROM INSURANCEPOLICY
[0054] WHERE POLICYTYPE = ' Η'
[0055] 结构元数据140和控制数据的组合允许结构化LOB系统120为最终用户提供结构 化L0B数据。在某些实施例中,结构化L0B系统120生成具有列的结果集,这些列的格式为 可以包括在结果集中的每种类型的L0B数据。在某些实施例中,结构化L0B系统120使用 控制数据的值(即,图4和5中的保险单类型的值)针对每行确定结果集中的哪些列可能 具有数据以及哪些列可能没有数据。
[0056] 图7以框图示出根据某些实施例的具有基于底层L0B数据格式的格式的保险单结 果集700。例如,结构化L0B系统120在结果集700中提供其它列信息,包括:保险单类型、房 屋类型、房间数量、房屋价值、地址、制造商、型号、年份、颜色和价值。图7示出结果集700, 其包含一行机动车辆保险单数据以及一行房主保险单数据。在结果集700中,当L0B数据 具有值为"M"的控制数据(即,保险单类型)时,结构化L0B系统120根据存储在DBMS 110 中的结构元数据140,显示机动车辆保险单的列数据,其包括:保险单类型、制造商、型号、 年份、颜色和价值。同样,当L0B数据具有值为"H"的控制数据时,结构化L0B系统120根 据存储在DBMS 110中的结构元数据140,显示房主保险单的列数据,其包括:保险单类型、 房屋类型、房间数量、房屋价值和地址。
[0057] 当结构化L0B系统120在结果集的行中显示一种类型L0B数据(例如,机动车辆保 险单)的值时,结构化L0B系统120填充特定于该类型L0B数据的列的值,并且结构化L0B 系统120针对当前数据行将特定于其它类型L0B数据(例如,房主保险单)的列显示为空 或无效。
[0058] 使用结构化L0B系统110, DBMS 110能够直接处理有限结构化L0B数据。这使得 L0B数据处理对于最终用户而言透明,并且提供可扩展机制以便访问结构化L0B数据中的 数据,包括对有限结构化L0B数据进行读取、插入、更新和索引。
[0059] 以下是用于插入房主保险单的值的实例查询3 :
[0060] INSERT INTO INSURANCEPOLICY(PolicyType, PropertyType,
[0061] NumberOfRooms, HomeValue, ADDRESS) VALUES ('H',' SINGLE FAMILY',' 5',' 500000',' 555 BAILEY AVE')
[0062] 以下是用于插入机动车辆保险单的值的实例查询4 :
[0063] INSERT INTO INSURANCEPOLICY(PolicyType, MAKE, MODEL, YEAR, COLOR, VALUE)VA LUES (' M',' FORD',T,' 1966',' BLACK',' 15000')
[0064] 图8以流程图示出根据某些实施例的用于处理存储在数据库表160的列中的大对 象(L0B)数据内的结构化内容的操作。图8由图8A和图8B组成。控制在方框800开始, 结构化L0B系统120存储描述(两个或更多)结构的结构元数据140,每个结构定义结构化 内容的不同格式。在某些实施例中,数据库管理员/创建者将描述(两个或更多)L0B数据 结构的信息合并为结构元数据140。在方框802,结构化L0B系统120接收对数据库表160 中的数据的请求。对于数据库表160中的至少一个数据行,将L0B数据存储在数据库表160 的列中。在方框804,结构化L0B系统120使用结构元数据140创建空结果集,该结果集具 有由至少两个结构定义的列。在某些实施例中,结构化L0B系统120不会重复冗余列(例 如,保险单类型列在结构400和500中,但结果集700显示一次保险单类型列)。在某些实 施例中,结构化L0B系统120将给定表的字段名称限制为是唯一的。因此,如果定义多个 L0B 结构(例如 "Home Insurance (房屋保险)"、"Car Insurance (汽车保险)"和 "Life Insurance (人寿保险)"),并且如果三个类型共享诸如"address (地址)"之类的公共字 段,则数据库定义将具有NAME = 〃H0ME_ADDRESS〃的字段、NAME = 〃CAR_ADDRESS〃的字段 和 NAME = 〃LIFE_ADDRESS〃的字段。
[0065] 在方框806,结构化L0B系统120从数据库表160中的第一个数据行开始,选择包 括L0B数据的下一个数据行。在方框808,结构化L0B系统120使用控制数据标识要应用于 存储在该数据行中的L0B数据内的结构化内容的一个结构。从方框808,处理继续到方框 810(图 8B)。
[0066] 在方框810,结构化L0B系统120基于标识的一个结构,将该数据行中的L0B数据 内的结构化内容映射到结果集中的列。在某些实施例中,通过创建查询执行映射。例如,结 构化L0B系统120使用结构元数据140创建第一查询以便从结构化内容中检索字段值,并 且使用结构元数据140创建第二查询以便将该字段值插入结果集的列中。
[0067] 在方框812,结构化L0B系统120判定是否已选择所有数据行。如果是,则处理继 续到方框814,否则,处理循环回到方框806以便选择另一个数据行(图8A)。
[0068] 在方框814,结构化L0B系统120返回结果集。在结果集的列中显示L0B数据内的 结构化内容。
[0069] 图9示出根据某些实施例的描述保险单表的伪代码900。"PolicyType"字段旨在 用作控制数据,其采用PolicyData映射中的控制字段的形式。这通过使用DEPENDING0N = DFSMAP语句的参数来定义。每个DFSMAP语句包含一个或多个DFSCASE语句,DFSCASE语句 表示控制字段PolicyType的1:N个值之一。在该实例中,具有两个实例HOUSE和MOTOR。 CASEID =是预计存储在PolicyType字段中的值。当查询检查PolicyType的值时,使用适 当的DFSCASE定义确定该记录的FIELD结构。在该实例中,L0B数据由DFSMAP定义并且从 偏移2跨越到46。对于保险单表,结构元数据1000、1010将PolicyType定义为DFSMAP的 控制字段(DEPEDINGON)。DFSCASE元数据然后告知结构化L0B系统120如何通过提供对应 于特定L0B数据的CASEID (控制数据值)来解释表中的不同行。
[0070] 图10示出根据某些实施例的用于描述保险单表的伪代码900的结构元数据1000、 1010的一个实例。
[0071] 图10由图10A和10B组成。工具(例如,使用DBMS 110的第三方软件)可以使 用元数据表示以便理解表。
[0072] 用户可以查询目录130中的结构元数据140以便标识哪些记录用于哪种保险单类 型。
[0073] 因此,如果L0B数据具有有限数量的结构化结构,则各实施例简化L0B数据的交互 和解释。各实施例存储和查询可变数据,这些数据的结构可以因记录的不同而有所变化。各 实施例使用结构化L0B数据,在单个表中管理多个不同的记录类型。
[0074] 结构元数据140允许数据库管理员(DBA)或其它人员定义分层并且灵活的L0B数 据结构。分层可以被描述为深层嵌套的字段。使用嵌套字段,L0B数据可以包含自身包含 其它L0B数据的字段。灵活可以被描述为针对这些层中的数据类型没有约束,甚至可以引 入用户定义的类型(它们不需要由预先存在的DBMS类型组成)。如果给出该结构元数据 140,则各实施例将结构应用于先前未结构化的原始L0B数据,并且提供能力以便利用数据 库查询语言(例如,SQL)对这些L0B字段进行读取和写入,而无论如何深层地嵌套。
[0075] 某些实施例处理存储在数据库的L0B列中的不同结构。存储描述在L0B数据中使 用的不同结构的结构元数据。当接收对L0B数据的请求时,使用与L0B数据关联的结构元 数据定义可以映射到L0B数据的查询。对于针对其返回L0B数据的每个数据行,使用控制 数据标识哪些底层不同结构应用于该L0B数据,并且将该L0B数据映射到对应结果集中的 列。
[0076] 访问结构化内容
[0077] 借助各实施例,结构化L0B系统120提供能力以便在本机搜索和索引结构化内容 中的特定字段,其中这些字段在L0B数据中的已知偏移处。结构化L0B系统120允许针对 这些字段的索引能力,以便使用索引162检索L0B数据。
[0078] 结构化L0B系统120为DBMS 110提供能力以便在L0B数据中动态搜索或索引结 构化内容,而不需要具体化L0B数据或L0B数据的各部分。L0B数据中的结构化内容在L0B 数据中的已知位置(即,偏移)处。结构化L0B系统120还为DBMS 110提供能力以便针对 L0B数据的这些结构化字段创建索引以检索全部L0B数据,而DBMS 110不必从L0B数据中 提取和复制目标数据并在首次插入L0B数据时将目标数据存储在另一个列中,并且DBMS不 必具体化L0B数据的各部分。DBMS 110可以直接访问L0B数据的任何部分或子集,而无论 L0B数据是否包含结构化内容。DBMS 110不需要事先知道L0B数据具有结构化字段。动态、 按需执行L0B数据的搜索。因此,不需要向DBMS 110定义其它数据库元数据。借助各实施 例,结构化L0B系统120在已存储(例如,数十年)的L0B数据子集上搜索。
[0079] 结构化L0B系统120为应用程序提供能力以便使用有资格用于任何L0B数据子集 的搜索谓词创建查询。例如,查询可以搜索每个L0B数据,其在包含在该L0B数据中的标记 中包含特定"artist (艺术家)"名称。应用程序还可以选择从L0B数据中仅检索"artist" 信息。结构化LOB系统120直接从LOB数据中检索该信息,而不需要在内部具体化LOB数 据以便提取所述信息。
[0080] 各实施例适用于任何类型的数据,其中具有测量偏移和长度的一致方式(例如, 二进制数据)。
[0081] 结构化L0B系统120根据表160中的列名称搜索或检索数据。这允许结构化L0B 系统120搜索列或元组的任何子集。转而,这允许搜索列中的结构化内容而不需要首先具 体化列内容以便查找数据值。
[0082] 图11以框图示出根据某些实施例的L0B数据中的结构化内容。在图11中,存在包 含MP3数据的L0B数据1100。L0B数据1100包括非结构化内容1110和结构化内容1120。 标题、艺术家和专辑数据在已知偏移处,并且可由结构化L0B系统120搜索或检索。
[0083] 图12以流程图示出根据某些实施例的用于在L0B数据中检索结构化内容的操作。 控制在方框1200开始,结构化L0B系统120接收对L0B数据中的结构化内容的请求。所述 请求可以采用基于结构化内容的字段的查询的形式。在方框1202,结构化L0B系统120标 识L0B数据中的结构化内容的偏移和长度。在某些实施例中,如果提供列名称,则结构化 L0B系统120将其解析为包含表示该列的数据的缓冲区中的偏移和长度。在某些实施例中, 除了列名称之外或者甚至代替列名称,结构化L0B系统120允许提供偏移和长度。偏移可 以相对于表160的开始或者表160中的列的开始。在方框1204,结构化L0B系统120在所 标识的偏移处检索所标识的长度的结构化内容。结构化L0B系统120转到表中存储L0B数 据的列,并且根据查询搜索结构化内容。在方框1206,结构化L0B系统120返回所检索的结 构化内容。
[0084] 图13以流程图示出根据某些实施例的用于在L0B数据中索引和搜索结构化内容 的操作。控制在方框1300开始,结构化L0B系统120存储用于L0B数据中的结构化内容中 的字段的索引162。在方框1302,结构化L0B系统120接收在结构化内容中搜索特定字段 的请求。所述请求可以采用基于标识结构化内容的特定字段的字段(即,列)的查询的形 式,或者可以采用标识特定字段的偏移和长度的形式。在方框1304,结构化L0B系统120使 用索引162在结构化内容中定位特定字段。在方框1306,结构化L0B系统120返回所定位 的特定字段。
[0085] 在某些实施例中,根据偏移和长度索引结构化内容,偏移和长度由目录130中的 结构元数据140提供。
[0086] 各实施例提供能力以便在L0B数据中索引和搜索字段而不需要首先具体化L0B字 段以便查找字段。结构化L0B系统120提供对字段的直接访问。
[0087] 在某些实施例中,除了列名称之外或者甚至代替列名称,结构化L0B系统120允许 提供偏移和长度。偏移可以相对于表160的开始或者表160中的列的开始。以下是提供偏 移和长度的实例查询5 :
[0088] SELECT^from myTable WHERE offset:20 ;length:30 = J someValue'
[0089] 用户可以检索或更新LOB数据中的特定字段。以下实例查询6、查询7和查询8访 问结构化内容中字段具有已知"列名称"的结构化内容。
[0090] SELECT NumberOfRooms FROM INSURANCEPOLICY
[0091] SELECT NumberOfRooms FROM INSURANCEPOLICY WHERE POLICYTYPE = ' H'
[0092] UPDATE INSURANCEPOLICY SET NumberOfRooms = ' 10' WHERE
[0093] POLICYTYPE = ' H'
[0094] 借助各实施例,非结构化LOB数据具有结构化的数据的子集(例如,多媒体标记, 其中标记部分是L0B数据的一部分,但其内部具有结构化信息)。各实施例搜索该单个列的 子集,而不需要在开头开始并具体化列直到信息所在的点。此外,当插入该列时,DBMS 110 不需要提取信息的该部分并且将其冗余地存储在其它位置以便实现查询能力。
[0095] 具有结构化内容的可变长度二进制数据中的粒度为空性
[0096] 各实施例使存在于VL0B记录结尾处并且未能放入分配给VL0B记录的物理空间的 动态内容为空。各实施例维护VL0B记录的长度字段(S卩,大小字段),并且结构化L0B系统 120使在给定VL0B记录长度之外的区域中映射的任何字段无效。在某些实施例中,长度字 段在VL0B的开头定义并且标识VL0B记录的实际大小。从该长度值,结构化L0B系统120 根据结构元数据140知道该VL0B记录的哪些嵌套(或内部)字段无效,因为它们超出分配 给该VL0B记录的物理大小。
[0097] VL0B可以具有在其最大可能长度内映射的多个字段。在其中VL0B记录小于VL0B 的最大可能长度的记录中,在位于VL0B记录数据之外的VL0B元数据结尾具有映射的字段, 从而使它们成为不存在的字段。
[0098] 结构化L0B系统120在VL0B的结构化内容中提供粒度级别的为空性 (nullability)。借助各实施例,元数据中对于给定VL0B记录而言不存在的特定字段被标 记为无效,并且剩余字段保持有效并可以由结构化L0B系统120直接检索。结构化L0B系 统120能够解释来自VL0B的任何有效结构化内容。
[0099] 图14以框图示出根据某些实施例的固定长度L0B数据1400。向L0B数据1400应 用结构化内容时,L0B系统120可以将L0B数据1400解释为三个不同字段:字段A、字段B 和字段C。在其中VL0B的长度因记录的不同而有所变化的情况下,VL0B的字段可以长于这 些字段的长度,因此可能落在特定VL0B记录之外。在这种情况下,如果在结构元数据140 中针对VL0B定义的字段延伸超出特定VL0B记录的长度,则结构化L0B系统120认为该字 段无效(或为空)。具体地说,在这种情况下,字段的物理存储区域不存在(即,VL0B具有 太多字段而不能放入分配给VL0B记录的物理空间)。
[0100] 图15以框图示出根据某些实施例的具有一个空字段的VL0B 1500。在图15中, VL0B1记录1510是其长度包含字段A和字段B的VL0B 1500的记录。在VL0B1记录1510 中,落在VL0B1记录1510的长度之外的字段C被视为空。图16以框图示出根据某些实施 例的具有多个空字段的VL0B 1600。在图16中,VL0B2记录1610是其长度包含字段A的 VL0B1600的记录。落在VL0B2记录1610的长度之外的字段B和字段C被视为空。
[0101] 假设将结构化VL0B定义为包括四个字段:F1、F2、F3、F4,并且将每个字段定义为 具有10字节的长度。然后,如果插入30字节的VL0B,则结构化L0B系统120确定字段F4 为空。同样,如果插入20字节的VL0B,则结构化L0B系统120确定字段F3和字段F4为空。
[0102] 作为另一个实例,如果VL0B具有字段FI、F2、F3、F4和F5,并且针对VL0B定义仅 最多覆盖字段F1的长度字段,则结构化L0B系统120使字段F2、F3、F4和F5为空。单独 地,如果F1已经为空(即,是没有数据的可为空字段),则字段F1继续被视为空。
[0103] 用户可以根据在VL0B中定义的字段有效还是无效来限定查询。结构化L0B系统 120查看特定VLOB记录的长度,以便了解字段是否在VLOB区域内,以判定字段是否存在于 物理数据库中。
[0104] 例如,以下是实例查询9 :
[0105] SELECT B FROM TBL WHERE B ISNOTNULL
[0106] 结构化LOB系统120通过执行查找其中VLOB长度足够大以包含字段B的记录,处 理查询9。这样,各实施例提供一种用于以粒度方式处理VL0B中的结构化内容的为空性的 解决方案。此外,各实施例允许数据库查询语言限定VL0B中的嵌套字段为空还是不为空。
[0107] 图17以流程图示出根据某些实施例的用于处理VL0B的操作。控制在方框1700开 始,结构化L0B系统120使用结构元数据140检查VL0B的长度。在方框1702,结构化L0B 系统120根据VL0B的长度,将VL0B记录的一个或多个空字段标识为空。在方框1704,结构 化L0B系统120对照VL0B记录处理查询。
[0108] 图18以框图示出根据某些实施例的表1800。在图18中,具有包含VL0B记录的 长度的VL0B,以及内部字段NAME (姓名)、ADDRESS (地址)和EMAIL(电子邮件)。根据 定义的最小和最大VL0B长度,可以看到内部字段EMAIL位于VL0B的可变部分中。在针对 RICHARD(理查德)的第一记录中,可以看到长度112定义整个VL0B记录,从而使电子邮件 成为有效字段。在针对KEVIN (凯文)的第二记录中,长度82覆盖为其定义EMAIL的区域, 从而使字段EMAIL为空。
[0109] 图19示出根据某些实施例的VL0B的定义。具体地说,图19示出如何在数据库 150中定义图18中的VL0B结构。
[0110] 结构化L0B系统120对针对VL0B发出的CREATE (创建)、READ (读取)和 UPDATE (更新)操作敏感。对于这些操作中的每个操作,结构化L0B系统120检查和/或更 新VL0B记录的长度字段的值。DELETE (删除)操作保持不变,因为这仅删除整个VL0B记 录。
[0111] 对于CREATE (INSERT (插入))操作,结构化L0B系统120确定INSERT语句在VL0B 中定义的最后一个字段,并且将长度字段设置为适当的值以便包含该字段。例如,根据图18 中的元数据,为了插入图18的第一记录,用户可以发出以下实例查询10 :
[0112] INSERT INTO PERS0NAL_INF0(NAME, ADDRESS, EMAIL)VALUES
[0113] (' RICHARD',' 555 Bailey Ave',' tran@abcl23. com')
[0114] 结构化LOB系统120确定EMAIL是插入的最后一个字段,并且包含字段EMAIL所 需的长度大小是112字节。然后,结构化L0B系统120插入为112的LENGTH(长度)值。
[0115] 为了插入图18的第二记录,用户可以发出以下实例查询11 :
[0116] INSERT INTO PERS0NAL_INF0(NAME, ADDRESS)VALUES(' KEVIN','555 Bailey Ave,)
[0117] 结构化LOB系统120确定ADDRESS是插入的最后一个字段,并且包含字段ADDRESS 所需的长度大小是82字节。然后,结构化L0B系统120插入为82的LENGTH值。
[0118] 对于UPDATE操作,结构化L0B系统120确定UPDATE语句定义的最后一个已更新 字段,并且根据需要增加 VL0B记录的长度以便容纳较新的大小。如果VL0B记录已经具有 可以容纳已更新字段的长度,则不对长度字段进行更改。这防止对VL0B记录大小进行不需 要的截断以及使有效数据意外无效。
[0119] 对于READ (SELECT (选择))操作,结构化LOB系统120检查长度字段的大小,并且 判定正在被检索的字段是否落入定义的VL0B记录长度内。对于在VL0B记录长度之外的字 段,返回空值。以下是实例查询12:
[0120] SELECT EMAIL FROM PERS0NAL_INF0 WHERE EMAIL ISNULL
[0121] 结构化LOB系统120在内部意识到EMAIL是VLOB的一部分,并且将查询12转换 为可以容易处理的等效查询13 :
[0122] SELECT LENGTH FROM PERS0NAL_INF0 WHERE LENGTH<112
[0123] 这为结构化LOB系统120提供一种解决方案以便以粒度方式处理VLOB中的结构 化内容的为空性,以及为数据查询语言提供一种方式,以便限定VL0B中的嵌套字段为空还 是不为空。
[0124] 各实施例依赖于结构元数据140为VL0B列提供结构。VL0B中的结构化字段不存 在空指示符,相反在VL0B的头处具有单个长度字段,该字段指示VL0B记录的整体长度。各 实施例为结构化L0B系统120提供能力以便检测VL0B中的区域不存在,因此将它们表示为 空实体。在内部,结构化L0B系统120管理该长度字段,并且当经由数据库查询语言插入或 更新VL0B记录时相应地更新该长度字段。
[0125] 借助各实施例,将VL0B分解成定义明确的字段,并且结构化L0B系统120基于这 些字段是否存在(其基于VL0B的长度),向它们正确地应用为空性的概念。
[0126] 所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算 机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、 完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方 式,这里可以统称为"电路"、"模块"或"系统"。此外,本发明的各个方面还可以实现为在一 个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可 读的程序代码。
[0127] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机 可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于一 电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。计算 机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便 携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器 (EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、固态 存储器、磁带、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何 包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结 合使用。
[0128] 计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据 信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括一 但不限于一电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计 算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传 输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0129] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限 于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0130] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方 面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如 Java?、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如"C"语言或类似的 程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作 为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远 程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的 网络一包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算 机(例如利用因特网服务提供商来通过因特网连接)。Java以及所有基于Java的商标和 徽标是Oracle和/或其子公司的商标或注册商标。
[0131] 下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图 和/或框图描述本发明实施例的各个方面。应当理解,流程图和/或框图的每个方框以及 流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令 可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一 种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了 实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0132] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、 其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的 指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令 的制造品(article of manufacture) 〇
[0133] 也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备 上,使得在计算机、其它可编程装置或其它设备上执行一系列操作处理(例如,操作或步 骤),以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实 现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
[0134] 实现所述操作的代码还可以在硬件逻辑或电路(例如,集成电路芯片、可编程门 阵列(PGA)、专用集成电路(ASIC)等)中实现。所述硬件逻辑可以耦合到处理器以便执行 操作。
[0135] 相互通信的设备不必持续地相互通信,除非另外明确指出。此外,相互通信的设备 可以直接或通过一个或多个媒介间接地通信。具有若干相互通信的组件的实施例的描述并 非暗示所有此类组件都是必需的。相反,描述了多种可选的组件以例示本发明的多种可能 的实施例。此外,尽管可以按照连续的顺序来描述处理步骤、方法步骤、算法或类似步骤,但 是此类处理、方法和算法可以被配置为以替代顺序工作。换句话说,所描述的步骤的任何序 列或顺序并不一定指示要求按此顺序执行步骤。实际可以按任何顺序执行在此描述的处理 的步骤。此外,可以同时执行某些步骤。
[0136] 当在此描述单个设备或物品时,将显而易见的是,可以使用多个设备/物品(无论 它们是否协作)来代替单个设备/物品。同样,当在此描述了多个设备或物品(无论它们是 否协作)的情况下,将显而易见的是,可以使用单个设备/物品来代替多个设备或物品,或 者可以使用不同数量的设备/物品代替所示数量的设备或程序。设备的功能和/或特性可 以替代地由一个或多个其它未明确描述为具有此类功能/特性的设备来体现。因此,本发 明的其它实施例不必包括设备本身。流程图的所示操作显示某些事件以特定的顺序发生。 在替代实施例中,某些操作可以以不同的顺序被执行、修改或删除。此外,可以向上述逻辑 添加步骤并仍然与所描述的实施例一致。进而,此处所述的操作可以顺序地发生或者某些 操作可以被并行地处理。更进一步,操作可以由单个处理单元或由分布式处理单元来执行。
[0137] 在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如 在此使用的,单数形式"一"、"一个"和"该"旨在同样包括复数形式,除非上下文明确地另 有所指。还将理解,当在此说明书中使用时,术语"包括"和/或"包含"指定了声明的特性、 整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其它特性、整数、步骤、 操作、元素、组件和/或其组合的存在或增加。
[0138] 术语"一个实施例"、"实施例"、"多个实施例"、"所述实施例"、"所述多个实施例"、 "一个或多个实施例"、"某些实施例"和"某一实施例"指"本发明(多个)的一个或多个(但 不是所有)实施例",除非另外明确指出。术语"包含"、"包括"、"具有"及其变型指"包括但 不限于",除非另外明确指出。
[0139] 列举的项目的列表并非暗示任何或所有的项目互相排斥,除非另外明确指出。
[0140] 下面权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等 同替换,旨在包括任何用于与在权利要求中具体指出的其它元件相组合地执行该功能的结 构、材料或操作。出于示例和说明目的给出了对本发明实施例的描述,但所述描述并非旨在 是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,对于 所属【技术领域】的普通技术人员来说许多修改和变化都将是显而易见的。实施例的选择和描 述是为了最佳地解释本发明的原理和实际应用,并且当适合于所构想的特定使用时,使得 所属【技术领域】的其它普通技术人员能够理解本发明的具有各种修改的各种实施例。
[0141] 图20示出根据某些实施例的可以使用的计算机体系架构2000。计算设备100可 以实现计算机体系架构2000。计算机体系架构2000适合存储和/或执行程序代码,并且包 括通过系统总线2020直接或间接耦合到存储元件2004的至少一个处理器2002。存储元件 2004可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至 少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的 高速缓冲存储器。存储元件2004包括操作系统2005以及一个或多个计算机程序2006。
[0142] 输入/输出(I/O)设备2012、2014(包括但不限于键盘、显示器、指点设备等)可 以直接或通过中间I/O控制器2010与系统相连。
[0143] 网络适配器2008也可以被连接到系统以使所述数据处理系统能够通过中间专用 或公共网络变得与其它数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调 制解调器和以太网卡只是当前可用的网络适配器2008类型中的少数几种。
[0144] 计算机体系架构2000可以耦合到存储装置2016 (例如,任何类型的存储设备;非 易失性存储区域,例如磁盘驱动器、光盘驱动器、磁带驱动器等)。存储装置2016可以包括 内部存储设备或附加的或网络可访问存储装置。存储装置2016中的计算机程序2006可以 载入存储元件2004,并且由处理器2002以所属【技术领域】已知的方式执行。
[0145] 计算机体系架构2000可以包括少于所示的组件、未在此示出的其它组件,或者所 示组件和其它组件的某种组合。计算机体系架构2000可以包括所属【技术领域】已知的任何 计算设备,例如大型机、服务器、个人计算机、工作站、膝上型计算机、手持式计算机、电话设 备、网络设备、虚拟化设备、存储控制器等。
[0146] 附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代 表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用 于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标 注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本 并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是, 框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定 的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合 来实现。
[0147] 出于示例和说明目的给出了本发明实施例的上述说明。其并非旨在是穷举的或将 实施例限于所公开的精确形式。根据上述教导,许多修改和变化都是可能的。其旨在各实 施例的范围并非由此详细说明来限制,而是由此后所附的权利要求来限制。以上说明书、实 例和数据提供了对实施例的组成部分的制造和使用的完整说明。由于可以在不偏离本发明 的范围的情况下做出许多实施例,所以各实施例存在于此后所附的权利要求或随后提交的 任何权利要求或其等效物之内。
【权利要求】
1. 一种用于大对象(LOB)数据内的结构化内容的方法,所述LOB数据存储在数据库表 的列中,所述方法包括以下步骤: 存储描述结构的结构元数据,每个所述结构定义所述结构化内容的不同格式; 接收对所述数据库表中的数据的请求; 使用所述结构元数据创建空结果集,所述结果集具有由至少两个所述结构定义的列; 对于所述数据库表中包括L0B数据的每个数据行,使用控制数据标识要应用于存储在 该数据行中的所述L0B数据内的所述结构化内容的一个所述结构;以及 基于所标识的一个所述结构,将该数据行中的所述L0B数据内的所述结构化内容映射 到所述结果集中的所述列;以及 返回所述结果集。
2. 根据权利要求1的方法,其中所述结构化内容包括字段,并且其中当由所述计算机 的所述处理器执行时,所述计算机可读程序代码被配置为执行: 响应于接收所述请求,使用所述结构元数据创建第一查询以便从所述结构化内容中检 索字段值;以及 使用所述结构元数据创建第二查询以便将所述字段值插入所述结果集的列中。
3. 根据任一上述权利要求的方法,其中所述结构元数据包括所述L0B数据中的结构化 内容的偏移和长度。
4. 根据任一上述权利要求的方法,其中所述控制数据是所述L0B数据的一部分。
5. 根据任一上述权利要求的方法,其中将所述控制数据存储为单独列。
6. 根据任一上述权利要求的方法,其中所述L0B数据包括结构化内容和非结构化内 容,并且其中所述方法还包括: 接收检索所述L0B数据中的所述结构化内容的请求; 标识所述L0B数据中的所述结构化内容的偏移和长度; 在所标识的偏移处检索所标识的长度的所述结构化内容;以及 返回所检索的结构化内容。
7. 根据任一上述权利要求的方法,其中所述L0B数据包括结构化内容和非结构化内 容,并且其中所述方法还包括: 存储对所述结构化内容中的元素的索引; 接收在所述L0B数据中的所述结构化内容中搜索特定元素的请求; 使用所述索引在所述结构化内容中定位所述特定元素;以及 返回所定位的特定元素。
8. 根据任一上述权利要求的方法,其中所述方法还包括: 接收具有多个字段的可变长度LOB(VLOB)记录; 响应于确定所述VL0B记录中的字段延伸到分配给所述VL0B记录的物理空间之外,将 该字段作为空字段处理。
9. 根据权利要求8的方法,其中所述方法还包括: 处理引用所述VL0B记录中的空字段的查询。
10. -种用于处理大对象(L0B)数据中的结构化内容的计算机系统,所述L0B数据存储 在数据库表的列中,所述计算机系统包括: 处理器; 存储设备,其耦合到所述处理器;以及 存储装置,其用于存储描述结构的结构元数据,每个所述结构定义所述结构化内容的 不同格式; 接收装置,其用于接收对所述数据库表中的数据的请求; 使用装置,其用于使用所述结构元数据创建空结果集,所述结果集具有由至少两个所 述结构定义的列; 对于所述数据库表中包括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. 一种用于大对象(L0B)数据内的结构化内容的计算机程序产品,所述L0B数据存储 在数据库表的列中,所述计算机程序产品包括: 计算机可读存储介质,其可由处理电路读取并且存储指令以便由所述处理电路执行, 以执行根据权利要求1至9中的任一权利要求的方法。
20. -种存储在计算机可读介质上并可加载到数字计算机的内部存储器中的计算机程 序,所述计算机程序包括软件代码部分,当所述程序在计算机上运行时,所述软件代码部分 用于执行根据权利要求1至9中的任一权利要求的方法。
【文档编号】G06F17/30GK104160398SQ201380012712
【公开日】2014年11月19日 申请日期:2013年2月8日 优先权日:2012年3月13日
【发明者】K·D·海特, K·J·夏勒特, N·D·丘奇, R·V·特兰, C·霍尔茨 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1