《结构化大对象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( 艺术家 )” 名称。应用程序还可以。