CN104160398A - 结构化大对象(lob)数据 - Google Patents

结构化大对象(lob)数据 Download PDF

Info

Publication number
CN104160398A
CN104160398A CN201380012712.9A CN201380012712A CN104160398A CN 104160398 A CN104160398 A CN 104160398A CN 201380012712 A CN201380012712 A CN 201380012712A CN 104160398 A CN104160398 A CN 104160398A
Authority
CN
China
Prior art keywords
data
lob
structured content
row
field
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380012712.9A
Other languages
English (en)
Other versions
CN104160398B (zh
Inventor
K·D·海特
K·J·夏勒特
N·D·丘奇
R·V·特兰
C·霍尔茨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104160398A publication Critical patent/CN104160398A/zh
Application granted granted Critical
Publication of CN104160398B publication Critical patent/CN104160398B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2219Large Object storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

结构化大对象(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时,(例如向最终用户)返回结果集,其包含PolicyDataBLOB作为原始二进制数据。查询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','SINGLEFAMILY','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 WHEREPOLICYTYPE='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','tranabcl23.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 EMAILISNULL
结构化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 ofmanufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作处理(例如,操作或步骤),以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
实现所述操作的代码还可以在硬件逻辑或电路(例如,集成电路芯片、可编程门阵列(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可以包括所属技术领域已知的任何计算设备,例如大型机、服务器、个人计算机、工作站、膝上型计算机、手持式计算机、电话设备、网络设备、虚拟化设备、存储控制器等。
附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
出于示例和说明目的给出了本发明实施例的上述说明。其并非旨在是穷举的或将实施例限于所公开的精确形式。根据上述教导,许多修改和变化都是可能的。其旨在各实施例的范围并非由此详细说明来限制,而是由此后所附的权利要求来限制。以上说明书、实例和数据提供了对实施例的组成部分的制造和使用的完整说明。由于可以在不偏离本发明的范围的情况下做出许多实施例,所以各实施例存在于此后所附的权利要求或随后提交的任何权利要求或其等效物之内。

Claims (20)

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中的任一权利要求的方法。
CN201380012712.9A 2012-03-13 2013-02-08 用于大对象数据内的结构化内容的方法及其系统 Active CN104160398B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/418,771 US8676788B2 (en) 2012-03-13 2012-03-13 Structured large object (LOB) data
US13/418,771 2012-03-13
PCT/IB2013/051055 WO2013136199A1 (en) 2012-03-13 2013-02-08 Structured large object (lob) data

Publications (2)

Publication Number Publication Date
CN104160398A true CN104160398A (zh) 2014-11-19
CN104160398B CN104160398B (zh) 2017-02-01

Family

ID=49158642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380012712.9A Active CN104160398B (zh) 2012-03-13 2013-02-08 用于大对象数据内的结构化内容的方法及其系统

Country Status (4)

Country Link
US (2) US8676788B2 (zh)
EP (1) EP2805267A4 (zh)
CN (1) CN104160398B (zh)
WO (1) WO2013136199A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107103540A (zh) * 2016-02-22 2017-08-29 易保网络技术(上海)有限公司 一种计算机执行的访问保险产品数据结构中的具体数据元素的方法和系统
CN113076326A (zh) * 2021-03-25 2021-07-06 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质
CN117591625A (zh) * 2024-01-18 2024-02-23 之江实验室 一种数据存储方法、装置、存储介质及电子设备
CN113076326B (zh) * 2021-03-25 2024-05-31 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9444737B2 (en) * 2009-04-27 2016-09-13 Intel Corporation Packet data processor in a communications processor architecture
US9672241B2 (en) 2014-05-28 2017-06-06 International Business Machines Corporation Representing an outlier value in a non-nullable column as null in metadata
US10747747B2 (en) 2014-12-11 2020-08-18 International Business Machines Corporation Interpreting invalid data as valid data
US10521454B2 (en) * 2016-01-08 2019-12-31 Bmc Software, Inc. Reorganization of partition by growth space with LOB columns
US11030176B2 (en) * 2016-07-01 2021-06-08 Ebay Inc. Distributed storage of metadata for large binary data
CN110832473B (zh) * 2017-06-21 2023-01-13 华为技术有限公司 日志结构管理系统及方法
US11461355B1 (en) 2018-05-15 2022-10-04 Palantir Technologies Inc. Ontological mapping of data
US11048672B2 (en) 2018-09-27 2021-06-29 International Business Machines Corporation Binary large object platform for interactively analyzing and editing structural metadata

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732402A (en) * 1995-02-10 1998-03-24 International Business Machines Corporation System and method for data space management using buddy system space allocation
US6598055B1 (en) * 1999-12-23 2003-07-22 International Business Machines Corporation Generic code for manipulating data of a structured object
CN1723462A (zh) * 2004-02-10 2006-01-18 微软公司 用于数据库系统中大对象基础结构的系统和方法
US20080243945A1 (en) * 2007-04-02 2008-10-02 Bmc Software, Inc. Log Data Store and Assembler for Large Objects in Database System
US20100179940A1 (en) * 2008-08-26 2010-07-15 Gilder Clark S Remote data collection systems and methods

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061678A (en) 1997-10-31 2000-05-09 Oracle Corporation Approach for managing access to large objects in database systems using large object indexes
US6253203B1 (en) 1998-10-02 2001-06-26 Ncr Corporation Privacy-enhanced database
AU5062000A (en) * 1999-06-11 2001-03-13 Cci Europe A/S A content management computer system for managing publishing content objects
AU2002334721B2 (en) 2001-09-28 2008-10-23 Oracle International Corporation An index structure to access hierarchical data in a relational database system
US7647354B2 (en) 2002-05-24 2010-01-12 Oracle International Corporation High-performance change capture for data warehousing
US20040148272A1 (en) 2003-01-29 2004-07-29 Raman Balan Sethu Logical pathname as a reference mechanism for data
CA2419982A1 (en) 2003-02-26 2004-08-26 Ibm Canada Limited - Ibm Canada Limitee Executing a large object fetch query against a database
US8200612B2 (en) * 2003-05-07 2012-06-12 Oracle International Corporation Efficient SQL access to multidimensional data
US7490093B2 (en) * 2003-08-25 2009-02-10 Oracle International Corporation Generating a schema-specific load structure to load data into a relational database based on determining whether the schema-specific load structure already exists
US7779039B2 (en) * 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
US7366735B2 (en) * 2004-04-09 2008-04-29 Oracle International Corporation Efficient extraction of XML content stored in a LOB
US7853619B2 (en) 2004-09-23 2010-12-14 Oracle International Corporation Storage model for large object columns
US7548918B2 (en) 2004-12-16 2009-06-16 Oracle International Corporation Techniques for maintaining consistency for different requestors of files in a database management system
US20060195460A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Data model for object-relational data
US7853621B2 (en) * 2005-11-23 2010-12-14 Oracle International Corp. Integrating medical data and images in a database management system
US7529758B2 (en) * 2006-02-10 2009-05-05 International Business Machines Corporation Method for pre-processing mapping information for efficient decomposition of XML documents
US7895209B2 (en) * 2006-09-11 2011-02-22 Microsoft Corporation Presentation of information based on current activity
US7689583B2 (en) * 2006-09-11 2010-03-30 Microsoft Corporation Flexible data presentation enabled by metadata
US7987159B2 (en) * 2006-09-15 2011-07-26 Microsoft Corporation Detecting and managing changes in business data integration solutions
US8122045B2 (en) * 2007-02-27 2012-02-21 International Business Machines Corporation Method for mapping a data source to a data target
US7761411B2 (en) * 2007-07-20 2010-07-20 Oracle International Corporation Delta operations on a large object in a database
US7886124B2 (en) * 2007-07-30 2011-02-08 Oracle International Corporation Method and mechanism for implementing dynamic space management for large objects
US8150850B2 (en) * 2008-01-07 2012-04-03 Akiban Technologies, Inc. Multiple dimensioned database architecture
US8219563B2 (en) * 2008-12-30 2012-07-10 Oracle International Corporation Indexing mechanism for efficient node-aware full-text search over XML
JP2010282304A (ja) 2009-06-03 2010-12-16 Mitsubishi Electric Corp データ管理検索システム
US8700682B2 (en) * 2009-12-24 2014-04-15 Vertafore, Inc. Systems, methods and articles for template based generation of markup documents to access back office systems
US10289636B2 (en) * 2010-02-08 2019-05-14 Here Global B.V. Virtual table generator for analyzing geographic databases
US8341099B2 (en) * 2010-03-12 2012-12-25 Microsoft Corporation Semantics update and adaptive interfaces in connection with information as a service
US8812544B2 (en) * 2010-07-29 2014-08-19 Bank Of America Corporation Enterprise content management federation and integration system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732402A (en) * 1995-02-10 1998-03-24 International Business Machines Corporation System and method for data space management using buddy system space allocation
US6598055B1 (en) * 1999-12-23 2003-07-22 International Business Machines Corporation Generic code for manipulating data of a structured object
CN1723462A (zh) * 2004-02-10 2006-01-18 微软公司 用于数据库系统中大对象基础结构的系统和方法
US20080243945A1 (en) * 2007-04-02 2008-10-02 Bmc Software, Inc. Log Data Store and Assembler for Large Objects in Database System
US20100179940A1 (en) * 2008-08-26 2010-07-15 Gilder Clark S Remote data collection systems and methods

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107103540A (zh) * 2016-02-22 2017-08-29 易保网络技术(上海)有限公司 一种计算机执行的访问保险产品数据结构中的具体数据元素的方法和系统
CN113076326A (zh) * 2021-03-25 2021-07-06 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质
CN113076326B (zh) * 2021-03-25 2024-05-31 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质
CN117591625A (zh) * 2024-01-18 2024-02-23 之江实验室 一种数据存储方法、装置、存储介质及电子设备
CN117591625B (zh) * 2024-01-18 2024-04-12 之江实验室 一种数据存储方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
US8832081B2 (en) 2014-09-09
US20130246394A1 (en) 2013-09-19
WO2013136199A1 (en) 2013-09-19
EP2805267A4 (en) 2015-01-28
US8676788B2 (en) 2014-03-18
US20130246395A1 (en) 2013-09-19
EP2805267A1 (en) 2014-11-26
CN104160398B (zh) 2017-02-01

Similar Documents

Publication Publication Date Title
CN104160398A (zh) 结构化大对象(lob)数据
US11704294B2 (en) System and method for slowly changing dimension and metadata versioning in a multidimensional database environment
US9367574B2 (en) Efficient query processing in columnar databases using bloom filters
US11042569B2 (en) System and method for load, aggregate and batch calculation in one scan in a multidimensional database environment
US10984020B2 (en) System and method for supporting large queries in a multidimensional database environment
US11520760B2 (en) System and method for providing bottom-up aggregation in a multidimensional database environment
CN105283872B (zh) 为sql处理缓存外部数据源
US7752165B2 (en) Persistent query system for automatic on-demand data subscriptions from mobile devices
CN107273522B (zh) 面向多应用的数据存储系统和数据调用方法
AU2013335231B2 (en) Profiling data with location information
CN108369587B (zh) 创建用于交换的表
CN105630862A (zh) 面向集合的可见性状态检索方案
US9390147B2 (en) System and method for storing stream data in distributed relational tables with data provenance
CN102567457A (zh) 对象模型到键值数据模型的映射
US8386445B2 (en) Reorganizing database tables
US20050187984A1 (en) Data driven database management system and method
CN104285222A (zh) 使用谓词映射器优化查询
US20110270866A1 (en) Semantic model association between data abstraction layer in business intelligence tools
JP2006172446A (ja) 複合データアクセス
US10248693B2 (en) Multi-layered row mapping data structure in a database system
US20120303630A1 (en) Apparatus and method for organizing, storing and retrieving data using a universal variable-length data structure
US11238035B2 (en) Personal information indexing for columnar data storage format
US10095738B1 (en) Dynamic assignment of logical partitions according to query predicate evaluations
US10528538B2 (en) Leveraging SQL with user defined aggregation to efficiently merge inverted indexes stored as tables
US7580917B2 (en) System and method for brokering information between a plurality of commercially distinct clients

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant