CN116964571A - 对rdbms中存储的聚合存储数据全面支持多值、多字段、多级别、多位置功能索引的技术 - Google Patents

对rdbms中存储的聚合存储数据全面支持多值、多字段、多级别、多位置功能索引的技术 Download PDF

Info

Publication number
CN116964571A
CN116964571A CN202180095433.8A CN202180095433A CN116964571A CN 116964571 A CN116964571 A CN 116964571A CN 202180095433 A CN202180095433 A CN 202180095433A CN 116964571 A CN116964571 A CN 116964571A
Authority
CN
China
Prior art keywords
index
hierarchical data
fields
field
levels
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.)
Pending
Application number
CN202180095433.8A
Other languages
English (en)
Inventor
H·张
刘振华
吕颖
B·C·哈默施密特
D·J·麦玛宏
D·B·穆克尹
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.)
Oracle International Corp
Original Assignee
Oracle International 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 Oracle International Corp filed Critical Oracle International Corp
Publication of CN116964571A publication Critical patent/CN116964571A/zh
Pending legal-status Critical Current

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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
    • 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/2282Tablespace storage structures; 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (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

本文是针对基于多级别、多字段、多值索引和查询的关系数据库中JavaScript对象表示法(JSON)文档的加速。在实施例中,计算机将许多分层数据对象存储到关系数据库中的表中,这些分层数据对象分别包含多个级别,该多个级别分别包含一个或多个字段。为多个级别中的至少两个级别中的字段中的索引值生成索引。基于该索引,执行引用关系数据库中的表和至少一个索引字段的数据库语句。本文中的索引提供了对分层数据对象的更多级别中的更多字段的匹配,从而减少或消除了在索引访问之后通过强力的进一步过滤。在索引访问之后,匹配数组字段内的序数位置不需要进一步过滤。单个索引增加了索引条目的空间局部性以实现加速。最大限度地减少索引维护以实现加速。

Description

对RDBMS中存储的聚合存储数据全面支持多值、多字段、多级 别、多位置功能索引的技术
相关案例
由Zhen Hua Liu等人于2014年9月26日提交的相关美国专利9,659,045GENERICINDEXING FOR EFFICIENTLY SUPPORTING AD-HOC QUERY OVER HIERARCHICAL MARKED-UPDATA的全文并入本文。
技术领域
本发明涉及关系数据库中的JavaScript对象表示法(JSON)文档。本文是用于索引和查询的多级别、多字段、多值技术。
背景技术
JavaScript对象表示法(JSON)是一种分层数据规范语言。JSON对象是分层标记的内容对象,其包括字段的集合,每个字段都是字段名称/值对。字段名称实际上是JSON对象中节点的标签名称。字段的名称与字段的值之间用冒号分隔。JSON值可能是:
·对象,它是用大括号“{}”括起来并在大括号用逗号分隔的字段的列表。
·数组,它是用方括号“[]”括起来的逗号分隔的JSON值的列表。
·字段值,它是串、数字、true(真)、false(假)或null
(空)。
下面使用JSON对象J来说明JSON。
对象J包含字段CUSTOMER、CUSTOMER TYPE、ADDRESS、STREETADDRESS、CITY、STATE、POSTALCODE和PHONENUMBERS。CUSTOMER和CUSTOMER TYPE分别具有串值“EXAMPLE LIMITED”和“BUSINESS”。ADDRESS是包含成员字段STREETADDRESS、CITY、STATE和POSTALCODE的对象。PHONENUMBERS是包含串值“408 555-1234”和“408 555-4444”的数组。诸如POSTALCODE的字段随后可以被解析为诸如整数之类的另一种原始数据类型,例如用于:模式验证、紧凑和/或强类型的存储、和/或分析或诸如算术之类的进一步处理。
对象J内是括在所示弯括号中并布置为分层级别的序列的嵌套内容的包含层次结构。例如,如上所示,ADDRESS既用作上一级中的字段本身,又用作下一级中嵌套字段的聚合。如本文后面所解释的,级别用于诸如根据用于识别嵌套字段的多级别路径表达式在对象J内导航。还如本文后面所解释的,同一数据存储库中的不同JSON对象可以具有包含相同或不同字段的相同或不同的计数级别。换句话说,JSON对象可以符合反映结构相似性的相同结构模式,包括级别和级别的内容,或者可以以无模式的方式操作并具有结构上不同的内容。相关美国专利9,659,045中呈现了用于检查和导航多级别对象的技术。
高效的查询对于访问JSON文档是重要的。查询JSON文档的有效方法包括基于模式的方法。一种基于模式的方法是基于模式的关系存储方法。在此方法中,JSON文档的集合作为模式实例存储在由数据库管理系统(DBMS)管理的数据库表内。该方法利用对象关系DBMS的强大功能来索引和查询数据。一般而言,基于模式的关系存储方法涉及向DBMS注册模式,DBMS生成存储模式定义的属性(例如,元素、字段)所需的表和列。
将JSON文档的集合存储为模式的实例可能需要开发一个模式,该模式定义在集合的任何成员中找到的许多(如果不是全部)属性。模式定义的属性中的一些或许多属性可能仅出现在集合成员的相对小的子集中。模式定义的属性数量可能比许多集合成员的属性数量大很多倍。许多属性可以是稀疏填充的。管理具有相对大量属性的模式(其中一些或许多属性可以是稀疏填充的)对于DBMS以及DBMS的管理员和用户来说可能是繁重的。
为了避免使用基于模式的方法的陷阱,可以使用无模式的方法。一种无模式方法是部分投影方法。在部分投影方法下,集合的一组常用查询属性被投影并复制到附加表的列中;这些表的存在是为了支持使用例如二叉树或位图索引对列进行DBMS索引。
作为一种极简的半结构化数据模型,JSON是数据库市场中无模式开发的事实标准。RDBMS供应商和No-SQL供应商都不同程度地支持JSON功能。目前的状况是,大多数RDBMS供应商都支持将JSON文本存储为整个文档,并按照SQL/JSON标准的规定,对JSON文本应用结构化查询语言(SQL)和/或JSON运算符。但是,存储整个文档会使索引变得更加困难和/或不太有用。例如,关系数据库的现有JSON索引限制同一索引对多少个字段以及哪些字段进行索引,这限制了一般适用性,并且可能会促进索引的激增,即使对于单个查询也是如此。例如,在上面的JSON对象J中,典型的索引方法无法同时对CUSTOMER TYPE和STATE字段进行索引,因为这些字段出现在JSON对象J中的不同级别。例如,执行寻找在阿拉斯加(Alaska)的商业客户的查询可能需要使用单独的索引来过滤不同级别的两个字段,诸如CUSTOMERTYPE和STATE。
本部分中描述的方法是可以采用的方法,但不一定是以前已设想或采用的方法。因此,除非另有说明,否则不应假定本部分中描述的任何方法仅仅由于它们包含在本部分中就有资格作为现有技术。
附图说明
在附图中:
图1是描绘示例计算机的框图,该示例计算机为存储在关系数据库中的表中的分层数据对象提供多级别、多字段、多值索引和查询执行;
图2是描绘用于为存储在关系数据库中的表中的分层数据对象提供多级别、多字段、多值索引和查询执行的示例计算机处理的流程图;
图3是描绘示例索引使用活动的流程图;
图4描绘了复杂JSON文档的示例;
图5描绘了数据定义语言(DDL)语句的示例;
图6是描绘用于生成索引的示例计算机处理的流程图;
图7是描绘加速索引维护的流程图;
图8是描绘实践索引集成的流程图;
图9是图示可以在其上实现本发明的实施例的计算机系统的框图;
图10是图示可以用于控制计算系统的操作的基本软件系统的框图。
具体实施方式
在下面的描述中,为了解释的目的,阐述了许多具体细节以便提供对本发明的透彻理解。但是,显然,无需这些具体细节也可以实践本发明。在其它情况下,以框图形式示出结构和设备以避免不必要地模糊本发明。
总体概述
本文的技术对存储在关系数据库管理系统(RDBMS)中的数据库表的单个列中的分层数据对象操作多值、多字段、多级别、多位置功能索引。分层数据对象可以包含以新颖的方式和新颖的粒度进行索引的嵌套结构和数组。例如,多值、多字段和多级别索引可以具有两个索引键,第一个索引键是一个级别的字段,第二个索引键是数组内某个位置的数组元素。
本文包括用于创建索引的增强型数据定义语言(DDL)和用于利用索引的数据操作语言(DML)重写转换。对索引数据执行DML操作时维护索引。通过在语句编译时和运行时都分析基于路径的DML操作,可以最大限度地减少甚至避免索引维护。
本文的RDBMS将应用级对象或文档存储为分层数据对象,以支持灵活的模式管理,并在一些方面支持无模式操作。本文中的RDBMS支持本机存储分层数据对象,诸如JavaScript对象表示法(JSON)、可扩展标记语言(XML)或其它复杂应用级别对象,其可以聚合存储在一个大对象(LOB)列中。本文中的索引技术包括路径导航,以高效地支持对嵌入分层数据对象内的标量和数组数据字段的范围谓词查询。索引是使用结构化查询语言(SQL)表函数定义(诸如JSON_TABLE()和XMLTABLE())来定义的,以表达多值、多字段、多级别、多位置的功能索引。一般而言,表函数描述了索引的键作为关系形式的输出,以及从分层数据对象中的哪些字段或元素提取用于输出的内容。
本文的方法完全避免将分层数据对象中的内容副本具体化为所谓的侧表中的关系数据。因此,减少了索引存储空间和索引维护时间。该方法还可以为已经使用JSON_TABLE()物化视图来加速JSON_EXISTS()查询或使用XMLTABLE()物化视图来加速XMLEXISTS()查询的用户提供简单的迁移路径。
这些方法弥补了RDBMS中无法索引数组值的经典函数索引的差距。本文的索引解决方案提供分层数据对象中的多个级别的索引。JSON和XML路径(XPath)导航语言严重依赖于分层数据对象中不同级别的内容导航。
在实施例中,RDBMS在表中存储许多分层数据对象,这些分层数据对象分别包含多个级别,这些多个级别分别包含一个或多个字段。为多个级别中的至少两个级别中的字段中的索引值生成索引。索引用于执行引用至少一个索引字段的数据库语句。
本文的方法以如下各种方式提供前所未有的加速。本文中的索引提供了对分层数据对象的更多级别中的更多字段的匹配,从而减少或消除了在索引访问之后通过强力的进一步过滤。例如,在索引访问之后,匹配数组字段内的序数位置不需要进一步过滤。同样,数组字段内的重复值计数可以仅基于索引访问而发生以实现加速。虽然其它方法可能需要多个索引来处置多个字段和/或多个级别,但本文中的单个索引增加了索引条目的空间局部性以实现加速。描述了最大限度地减少索引维护以实现加速的各种方法。
1.0示例计算机
图1是描绘实施例中的示例数据库管理系统(DBMS)100的框图。DBMS100为存储在关系数据库110中的表120中的分层数据对象141-142提供多级别、多字段、多值索引和查询执行。DBMS100可以由一个或多个计算机托管,其中计算机诸如机架服务器(诸如刀片)、个人计算机、大型机、虚拟计算机或其它计算设备。
DBMS100托管和/或操作关系数据库110。例如,DBMS100可以是处理和管理关系数据库110的内容的关系DBMS(RDBMS)。关系数据库110包含表120,表120包含列130。表120和/或列130的定义可以存储在数据库字典中,该数据库字典将模式元数据存储在关系数据库110中。列130存储分层数据对象141-142,其可以是半结构化文档,诸如JavaScript对象表示法(JSON)或可扩展标记语言(XML)、文档对象模型(DOM)、或诸如逻辑树或数据包含层次结构的嵌套数据对象。实施例可以将分层数据对象141-142存储在列130中作为文本或二进制数据。例如,列130的数据类型可以是大对象(LOB),诸如字符LOB(CLOB)或二进制LOB(BLOB)。分层数据对象141-142中的每一个被存储在表120的单独的相应行中。
列130可以包含许多分层数据对象。表120可以包含存储或不存储其它分层数据对象的其它列。每列可以存储相应类型的内容。关系数据库110可以包含存储或不存储其它分层数据对象的其它表。
分层数据对象141包含一系列级别151-152,其包含(一个或多个)相应字段。例如,级别151包含可以具有相同或不同的相应数据类型的字段161-162。如本文先前所解释的,级别用于诸如根据用于识别嵌套字段的多级别路径表达式在(一个或多个)分层数据对象内导航。本质上,分层数据对象可以作为互连节点的逻辑树数据结构进行操作,其中每个节点是分层数据对象中的相应字段。树的节点按逻辑布置成级别,使得同一父节点的子节点出现在与父节点的级别相邻的同一级别中。以这种结构方式,多个字段可以嵌套在封闭字段中。字段的嵌套提供了包含层次结构,这使得分层数据对象具有层次。
虽然未示出,但是分层数据对象141-142可以包含相同或不同计数级别。换句话说,作为逻辑树,分层数据对象141-142可以具有不同的高度。分层数据对象141-142可以包含相同级别的相同或不同字段。例如,相同字段161可以存储在分层数据对象141-142的不同级别中,诸如存储在如分层数据对象141中所示的第一级别151中,但是可以存储在分层数据对象142中的不同级别或多个级别中。相同字段161可以在相应的分层数据对象141-142中包含相同或不同的相应值。例如,在分层数据对象141中,字段161存储值171,该值可以是诸如串或数字之类的标量或者是多个标量的数组。在实施例中,标量可以被存储和/或处理,就好像它是仅具有一个元素的数组一样,或者反之亦然。
1.1分层数据对象的索引
在关系数据库110中,DBMS100创建、填充并维护索引180,该索引180基于多个级别(诸如级别151-152)中的(一个或多个)相应字段对分层数据对象141-142进行索引。例如,索引180可以对一些许多可用级别(诸如五个预期级别或不定计数的级别)中的三个相邻或不相邻级别中的字段进行索引。如果分层数据对象142缺少索引180索引的级别,那么索引180不索引分层数据对象142。索引180的配置和填充将在本文后面讨论。
在运行时并且在基于列130填充索引180之后,DBMS100可以接收数据库语句190,该数据库语句190访问列130并且引用诸如数据库语句190中的谓词中的(一个或多个)字段,诸如字段161。通过使用索引180来加速数据库语句190的执行。数据库语句190不需要明确引用索引180。数据库语句190不需要引用索引180索引的所有字段或所有级别。本文后面将介绍数据库语句190以及语句执行和加速的示例。
DBMS100使用索引180来确定分层数据对象141-142中的哪个分层数据对象满足数据库语句190中的谓词,诸如用于过滤。例如,数据库语句190可以读取和/或写入分层数据对象141-142中的一个、一些或全部。在任何情况下,数据库语句190可以是数据操纵语言(DML)、结构化查询语言(SQL)和/或示例查询(QBE)。SQL实施例将在本文后面讨论。DBMS100可以通过发送包含(一个或多个)值、(一个或多个)级别、(一个或多个)分层数据对象和/或(一个或多个)计算值的结果来应答数据库语句190。结果可以以与列130内使用的相同或不同的格式进行编码。例如,列130可以存储二进制编码的JSON,但是数据库语句190及其响应可以替代地包含文本编码的JSON。
2.0示例索引处理
图2是描绘实施例中DBMS100基于索引180为存储在关系数据库110中的表120中的列130中的分层数据对象141-142提供多级别、多字段、多值索引和查询执行的流程图。参考图1来讨论图2。
步骤201-203可以在各种场景中的各个相应时间发生。例如,步骤201可以在初始数据摄取期间发生(诸如通过提取、转换和加载(ETL)而发生),或者连续地发生(诸如当分层数据对象141-142到达实况流时发生)。步骤202可以在诸如由数据库管理员(DBA)进行的系统管理期间发生或者与流传输一起连续地发生。步骤203可以在运行时发生并且可能需要数据操纵语言(DML),诸如是ad hoc或不是ad hoc的查询。
在关系数据库110中的表120中的列130中,步骤201存储分层数据对象141-142,其分别包含诸如级别151-152的级别,级别151-152分别包含(一个或多个)字段,诸如字段161-163,字段161-163包含诸如值171-172的值。每个分层数据对象存储在表120中单独的相应行中。例如,每当接收到新的分层数据对象时,可以将附加行插入表120中。
步骤202为列130中的分层数据对象中的至少两个级别中的字段中的索引值生成索引180。在实施例中,索引180包含对表120的行的引用,表120包含分层数据对象,该分层数据对象包含满足索引180的索引准则的内容。对行的引用可以是行标识符(ROWID)、数组偏移、存储器地址指针或文件指针,诸如具有逻辑块地址(LBA)加上字节偏移的文件指针。如本文后面解释的,索引准则可以识别字段和/或级别,和/或可以包含谓词、正则表达式和/或分层遍历路径,诸如JSON表达式或XML路径(XPath)。在实施例中,索引180包含字段的索引值。例如,索引准则可以指定列130中的所有分层数据对象中的字段162-163的索引,在这种情况下,索引180包含字段162-163的索引值。索引180内的数据存储和结构将在本文后面讨论。本文后面将介绍示例索引创建DDL语句。
基于至少两个级别中的字段中的索引值的索引180,步骤203执行引用关系数据库110中的表120以及索引180中的至少一个索引字段的数据库语句190。例如,索引180可以对字段162-163进行索引,并且数据库语句190引用索引字段162和/或163。步骤203可能需要或可能不需要根据本文后面讨论的场景来更新列130、表120和/或索引180的内容。本文后面将介绍索引180加速的示例SQL查询。
3.0示例索引使用活动
图3是描绘DBMS100可以实现用于生成和使用索引180的示例索引活动的流程图。参考图1来讨论图3。
如本文先前所解释的,字段161可以是数组字段,使得分层数据对象141对于同一字段161具有多个值。例如,字段161可以包含许多温度数字作为来自同一温度计的时间序列数据。根据步骤301,数据库语句190指示字段161中出现的值的序数位置。例如,数据库语句190可以包含以下序数WHERE子句。
以下术语在上述序数where子句中具有以下含义:
·json_exists检测哪些分层数据对象与谓词匹配
·ja识别表120
·jcol识别列130
·$.sensor?识别级别151
·@.temperature识别字段161
·[2]识别数组字段中温度值的序数位置
在说明性实施例中,索引180包括用于对不同的相应级别151-152中的字段161和163进行索引的查找表。索引180是多级别的,因为它对出现在分层数据对象中的不同相应级别的字段161和163进行索引。为了演示,上面的序数WHERE子句仅引用一个级别151。本文后面将介绍将索引180应用于替代地引用多个级别的示例WHERE子句。
在这个示例中,字段161可以是温度数组,并且字段163可以是温度计制造商名称。在非标量实施例中,值171-172可以作为元组一起出现,该元组作为索引180中的查找键进行操作以检索列130中的匹配分层数据对象的标识符,即使值171或172是数组而非标量也是如此。例如,数据库语句190可以询问哪些Oracle制造的温度计还没有温度,并且索引180可以提供匹配分层数据对象的ROWID。在实施例中,查找键元组可以包含分别针对字段161和163的数组和串。索引180中的查找表中的每个条目可以将一个查找键元组映射到匹配分层数据对象的ROWID列表。如本文后面讨论的,索引180可以包括B+树而不是查找表,并且两种实施方式可以使用相同的查找键元组格式。
在标量元组实施例中,查找键元组替代地仅包含标量值,诸如字段161的数字,即使字段161是数组,该数字也只是一个温度。在索引180中,步骤302生成具有相同分层数据对象141的多个相应查找键元组的多个索引条目。这些查找键元组中的每个查找键元组都有单独的温度值。例如,在分层数据对象141中,如果数组字段161的值为[0.6,0.9,0.7]并且字段163的值为Oracle,那么对于三个相应的索引条目,三个查找键元组可以是[0.6,Oracle]、[0.9,Oracle]和[0.7,Oracle]。这三个索引条目中的每一个都将映射到相应的匹配ROWID列表,并且这三个列表中的每一个将至少包含分层数据对象141的相同ROWID。
3.1示例查询加速
使用索引180的标量元组实施例可以如下增强以加速上述序数WHERE子句的评估。在索引180中,步骤303通过将基于零的序数位置包括在查找键元组中来指示数组字段161中的值的序数位置。例如,[0.7,2,Oracle]可以是指示0.7是数组中的第三个温度的查找键元组。以这种方式,步骤304以与索引180中的另一个索引字段相同的方式对序数位置进行索引。
作为时间序列数据,温度字段161可以替代地包含十年的每小时温度,其为87,600个值,其中许多或大部分可以是相邻或不相邻的重复项。在标量元组实施例中,存在87,600个序数位置,因此对于同一分层数据对象141有87,600个不同的查找键元组,因为每个序数位置对于同一分层数据对象的同一数组字段具有其自己的索引条目,这可能极大地膨胀索引180的尺寸。
索引180的尺寸的减小是可能的,因为json_exists()的语义需要精确地计算一个布尔真或假作为分别针对列130中的每个分层数据对象的匹配结果。换句话说,诸如使用以下非序数WHERE子句,大多数json_exists用法不需要索引180来索引重复值、计数重复值,也不需要数组字段中的值的序数位置。
在上面的非序数WHERE子句中,[*]是通配符,其表示温度数组中的任何序数位置。在上述非序数WHERE子句中,许多或所有温度值可能与谓词匹配并不重要,因为只要至少一个序数位置具有匹配的温度值,结果就相同。在各种实施例中,DBMS100自动检测,或者数据库管理员(DBA)手动指示,索引180将不会以需要重复项或序数位置的方式使用,并且对于同一分层数据对象,索引180应该为数组字段161中的每个不同值仅创建一个索引条目。例如,DBMS100可以自动分析历史查询以检测数组字段161中的重复项和序数位置总是被忽略,诸如使用询问数组字段中的最大值或者数组字段是否包含特定值的查询。在不在索引180中为分层数据对象141的数组字段161中的重复值生成多个索引条目的情况下,步骤305仅为分层数据对象141的数组字段161中的相同值生成单个索引条目。例如,如果温度只有一位精度,那么只有十个可能的温度值,并且索引180对于分层数据对象141的数组字段161最多有10个索引条目,即使分层数据对象141的数组字段161可能包含数千个重复值也是如此。
如上所述,json_exists()的语义需要为分层数据对象141精确计算一个布尔值。即使索引180的实施例可以在分层数据对象141的数组字段161中的每个不同值仅具有一个索引条目,但是分层数据对象141的数组字段161仍然可以具有多个匹配值,诸如当数组字段161包含[0.6,0.9,0.7]时,这会导致针对三个不同值的三个索引条目。在这种情况下,对于json_exists,计算机180应当忽略同一分层数据对象141的多个匹配索引条目。换句话说,json_exists不应返回重复的ROWID。因此,当上述非序数WHERE子句与分层数据对象141的多个索引条目匹配时,步骤306仍然生成相同的结果,就好像上述非序数WHERE子句中的谓词仅在分层数据对象141中匹配一次一样。
4.0示例JSON文档
图4-图6图示了如下示例性实施例。图4描绘了复杂JSON文档400的示例。图4是参考图1进行讨论的。图1的列130可以存储包含许多数组和许多级别的JSON文档400,如下面针对图5-图6所讨论的。
5.0示例DDL语句
图5描绘了实施例中的示例DDL语句500。参考图1和图4来讨论图5。
以下术语在指定创建索引180的DDL语句500中具有以下含义。
·MULTIVALUE是新颖的关键字,其指示索引180可以包含同一分层文档对象的多个索引条目
·jtab是表120
·jcol是列130
·JSON_TABLE()是表函数,它为列130中的每个分层数据对象返回一行或多行
·COLUMNS()列出索引JSON字段
·bd PATH是索引字段的SQL列别名
·NESTED PATH表示分层数据对象内的嵌套级别
·[*]表示数组字段的每个元素在表函数的结果中提供单独的行
·ord1 FOR ORDINALITY表示ord1是LoanHistory数组字段中序数位置的合成索引字段
如上所述,JSON_TABLE是表函数。实施例可以替代地使用XMLTABLE作为XML文档的表函数。例如,如果列130替代地包含XML文档,那么索引180可以加速XMLEXISTS()WHERE子句。在任一情况下,表函数负责将整个分层数据对象或来自分层数据对象的树路径或子树展平为由表函数返回的表中的一个或多个数据行。展平和反规范化是如下所示将分层数据重新布置为表格数据的互补方式。
表函数的实施例可以如下为每个分层数据对象返回一行或多行。虽然NESTEDPATH(嵌套路径)可能来自同一分层数据对象中的不同级别,但它们会被展平到表函数结果中的同一行中。例如,列bd和typec来自不同级别的字段,但出现在表函数的同一行中。
由于[*]引用的数组字段的每个元素为表函数提供单独的行,因此需要进行去规范化,如下所示。去规范化需要在表函数的多行中复制数据。与数组字段处于相同或更高级别的字段的值在数组字段提供的每个表行中重复。例如,数组字段itemized[*]可能包含两次贷款支付并提供两个表行。在这两个表行中,bd列将包含相同的重复值。在实施例中,索引180为表函数为同一分层数据对象返回的多个行生成多个相应的索引条目。实施例可以具有以不同方式将其它类型的分层数据对象展平为数据行的其它表函数。
在以下说明性示例中,列130仅包含JSON文档400,在这种情况下,以下示例表T显示将由DDL语句500中的JSON_TABLE()表函数返回的行。
上面的示例表T中演示了以下方面。列名不需要与其字段名相同。例如,不同级别的两个字段具有相同的字段名称“amount(数量)”,但相应的列具有不同的名称。虽然未示出,但是表T可以包含一列,该列在表T的每一行中存储为该行提供内容的分层数据对象的相应标识符。例如,该列可以存储识别分层数据对象的ROWID。在实施例中,可以为表T的每一行生成索引条目并将其插入索引180中。因此,实施例可以使用表T来填充索引180。在任何情况下,索引180可以比表T存在得更长。例如,如本文后面讨论的,索引180可以是基于表T的行填充的B+树,之后表T可以被丢弃并且索引180可以被保留以加速未来的查询。
当父级别的序数序列号递增时,子级别中基于零的序数序列号重置为零。例如,当ord1从0递增到1时,ord2重置为零。由去规范化引起的重复值完全或部分填充一些列。展平导致每行包含来自JSON文档400不同级别中出现的字段的值。
在实施例中,表T仅包含填充索引180所需的列,这些列至少是从通过索引180进行索引的字段填充的那些列。一些字段和/或级别不需要被索引并且不向以上示例表T贡献数据。例如,字段“name(名称)”在以上示例表T中不存在列并且不通过索引180进行索引。虽然嵌套在数组字段内的字段可能对应于列,但数组字段本身不需要具有列。例如,LoanHistory字段本身没有列。而在未示出的另一个示例表函数中,JSON文档400中的creditScore字段可以对应于分数(score)列并且还可能对应于序数(ordinal)列。
在实施例中,一次仅具体化表T的一行或几行。例如,缓冲器可以存储表T的几行,这些行用于生成索引条目,然后被丢弃,以便可以缓冲表T的其它行。例如,表T可以包含来自许多分层文档对象中的每个分层文档对象的多行,并且在任何时间只有来自一个分层数据对象的行可以被缓冲。在实施例中,流水线并行性有利于缓冲后面的行,同时为表T的前面的行生成索引条目。
6.0示例索引加速
图6是描绘实施例中的DBMS100生成索引的流程图。参考图1和图4-图5来讨论图6。
步骤601接收指定创建索引180的DDL语句500。在实施例中,索引180包括B+树。为了持久化,B+树是通过最小化树节点之间的链接遍历来针对输入/输出(I/O)进行优化的搜索树。B+树具有高扇出(每个父级都有子级)、高宽度(叶计数)和低高度(级数)。因此,树的下降路径短,使得可以通过很少的遍历从树根到达任何树叶。在实施例中,仅叶节点存储索引条目。在实施例中,所有叶节点以菊花链方式链接在一起以形成链表,使得在到达任何叶节点之后,可以扫描后续叶节点而无需重复树下降。在实施例中,每个叶节点存储许多索引条目,使得叶的链表是分段列表。在实施例中,每个树节点被持久保存在其自己的盘块中。
如本文先前所解释的,DDL语句500中的NESTED PATH将索引180配置为对分层数据对象中的三个级别中的字段进行索引。同样,索引180可以加速分别在这三个级别中的任何或所有级别访问任何或所有索引字段的DML语句。以下多级别WHERE子句访问所有三个级别中出现的索引字段。
在实施例中,DML或DDL语句中的路径表达式可以包含“..”(不带引号),其是指示跳过任何级别计数的双点。即,包含双点的表达式可以在相同或不同分层数据对象中的不同级别具有多个匹配。无论有或没有级别跳跃,查找键元组都可以具有相同的格式。例如,相同的字段可以在每个分层数据对象中仅出现一次,但在不同的分层数据对象中出现在不同级别。查找键元组中的第一值可以对应于该字段,即使不同的分层数据对象涉及不同的级别。换句话说,级别可能或多或少与如下所示被有效展平的查找键元组无关。
6.3示例索引条目架构
在实施例中,即使DDL语句500具有NESTED PATH并且JSON文档400是多级别的,查找键元组也是一维的。即,即使索引180是多级别的,查找键元组也是平坦的,这意味着索引180对分层数据对象中不同级别的字段进行索引。索引是否是多级别取决于其进行索引的字段,而不是索引的内部架构。多级别索引并不意味着索引的内部结构具有多个级别(诸如B+树中的级别),即使索引180具有含有多个树级别的B+树也是如此。例如,如果多级别索引180仅对字段A和D进行索引,那么多级别JSON文档{A:a,B:{C:c,D:d}}可能具有平坦查找键元组,即[a,d]。
例如,先前示例表T中的每一行可以:a)表示不同的相应查找键元组,和/或b)对应于索引180中的不同的相应索引条目。例如,如本文前面所讨论的,可以从表T的每一行生成索引条目。在实施例中,每个索引树叶包含至少一个索引条目,该索引条目包含:a)一个查找键元组,以及b)一组匹配分层数据对象的ROWID。因为查找键元组包含一些索引值,所以步骤602将索引值存储在索引180中的B+树叶中。在实施例中,ROWID替代地被视为索引字段,使得包含在索引树叶中的任何索引条目恰好包含一个ROWID。
如本文先前所解释的,ROWID对应于列130中的不同行,而不是由表函数提供的行集合中的不同行,诸如先前示例表T中的行。例如,ROWID可以识别JSON文档400。如果示例表T中的所有行都基于相同的JSON文档400,那么与示例表T中的行对应的所有索引条目可以是包含相同ROWID的多个索引条目。
根据DDL语句500,索引180仅对分层数据对象中出现的字段的子集进行索引。对于列130中的相同分层数据对象,步骤603为与索引180具有的相同或不同级别中的相同或不同字段生成不同的索引。因此,列130可以具有许多多级别索引。例如,如所示出的,索引180对级别151中的字段162和级别152中的字段163进行索引,这可以加速基于两个字段162-163进行过滤的查询。仅过滤位于较深级别的字段163的查询可以替代地通过单独索引来加速,该单独索引仅对字段163进行索引,并且可能还对相同或更深级别中的字段进行索引,但不对封闭级别(诸如级别151)中的字段进行索引。
7.0索引维护加速
图7是描绘实施例中的索引180的持续维护的流程图。参考图1来讨论图7。
分层数据对象可以被插入列130中或从列130中删除,使得索引180可能需要自动维护,诸如B+树叶的插入、删除或修改。使用搜索树的结果是更新分层数据对象中的索引值可能会导致分层数据对象的ROWID从一个树叶移动到不同的树叶,这可能会或可能不会进一步导致树叶的创建或删除。附加的复杂性是:a)分层数据对象的多个字段可以通过同一DML语句进行更新,和/或b)诸如对于数组字段,分层数据对象可以在索引180中具有多个索引条目。例如,在接收SQL UPDATE语句之前,步骤701-702分别为同一分层数据对象生成第一索引条目和第二索引条目。
执行UPDATE语句可能需要进行索引维护,如下所示。索引维护可能复杂,因为UPDATE语句可能指定替换整个分层数据对象或分层数据对象中的整个子树,即使实际上仅改变一个或几个字段。简单直接的实施例可以删除所有分层数据对象的索引条目,然后插入或重新插入用于修订后的分层数据对象的索引条目,这可能不是最优的。例如,简单直接的实施例可以从所有B+树叶中删除分层数据对象的ROWID,然后基于修订后的分层数据对象将该ROWID添加到一些叶子。
7.1索引维护最小化
各种实施例可以基于以以下各种方式检测实际改变的分层数据对象的索引字段的子集来更高效地维护索引180。这些方式需要适用于不同相应场景的相应策略。例如,两个非常不同的DML语句可能会更改同一字段的值,并且这两个更改可以通过相应不同的方式来检测,如下所示。
以下不同的更改检测机制提供了效率和灵活性之间不同的相应平衡。更改检测机制越高效,适合该机制的场景就越少。效率最低的更改检测机制可能是可以适应任何场景的通用回退机制。
7.2运行时索引维护
在一般回退机制中,原始分层数据对象和修订后的分层数据对象或多或少被详尽地比较和区分以检测哪些索引字段被更改。在实施例中,将原始分层数据对象中的多个同级分支、子树或树路径并行地(诸如利用多核处理器上的任务并行性)与修订后的分层数据对象中的多个相应分支进行比较。在实施例中,即使分层数据对象没有以DOM格式存储在列130中,比较原始文档和修订后的文档也是基于文档对象模型(DOM)比较的。
在稍微更高效的更改检测机制中,扫描重做日志或撤消日志以检测哪些索引字段被更改。但是,这种机制只有在实现并激活日志记录时才可用。同样,日志可能需要日志的写入者和读取者之间的线程安全,这可能会降低系统吞吐量。例如,索引180可以具有执行索引维护的日志读取器。
SQL更新语句可以调用JSON_TRANSFORM或JSON_MERGEPATCH来有选择地添加、移除或修改存储的分层数据对象的部分。JSON_TRANSFORM或JSON_MERGEPATCH的调用可以指定诸如添加或移除之类的活动,并指定诸如嵌套字段和数组偏移之类的位置。
在甚至更高效的各种更改检测机制中,上述日志接口或JSON_TRANSFORM或JSON_MERGEPATCH被仪表化以自动将更改的字段报告到索引180以进行索引维护。即,该机制可以基于控制反转,诸如利用DBMS100调用和处置的回调(callback)。例如,日志记录软件层可以调用回调,并且维护索引180的索引层可以通过执行索引维护来处置回调。
例如,回调仪表化可以加速由以下示例JSON_TRANSFORM引起的索引维护。
例如,对于上面的示例JSON_TRANSFORM,回调调用可以包括自变量,其指示:a)po_document的ROWID,b)Phone数组字段,以及c)在数组末尾插入新电话号码。JSON_TRANSFORM和JSON_MERGPATCH将在本文后面讨论。
在完成Phone数组字段的回调调用时可能发生的以下索引条件维护场景中,索引180中的(一个或多个)索引条目是否需要维护可以取决于诸如以下的条件:a)索引180是否应该对同一分层数据对象的同一数组字段中出现的重复电话号码进行索引,以及b)导致回调调用的数组字段修改是否也导致数组字段包含一组不同的独特值。例如,当未对重复项进行索引时,从数组中删除重复值不应修改索引,因为数组中存在相同值的至少一个其它出现仍然存在。
在完成回调调用时,索引层可以以各种方式维护索引180。如果新电话号码不是Phone数组字段中另一个元素的重复,或者如果打算对重复项进行索引,那么可以针对新电话号码将新索引条目插入索引180中。如果新电话号码是重复的,并且索引180不应对数组中的重复项进行索引,那么不会插入新的索引条目。
在移除删除的电话号码的回调调用期间,可能会也可能不会发生类似的条件维护。例如,如果删除的电话号码不是重复的,或者如果打算对重复项进行索引,那么可以从索引180删除索引条目。如果删除的电话号码是重复的,并且索引180不应对数组内的重复项进行索引,那么不会删除索引条目。
在修改电话号码的回调调用期间,其中旧电话号码用替换电话号码替换,类似的条件维护可能会发生也可能不会发生。例如,如果用替换电话号码替换旧电话号码会更改Phone数组字段中的一组独特值,或者如果打算对重复项进行索引,那么索引180中的索引条目将被替换。如果用替换电话号码来替换旧电话号码不更改Phone数组字段中的一组独特值,并且索引180不应对数组内的重复项进行索引,那么索引180不需要维护。
上面讨论的所有更改检测机制都发生在语句运行时,这可能是在执行计划的执行期间。运行时更改检测是灵活的,但效率在一定程度上是有限的。例如,运行时更改检测的灵活性非常适于区分实际更改与语句中指定的名义更改。例如,语句可以指定替换整个分层数据对象141,即使实际更改的只有字段161的值。
7.3编译时索引维护
运行时更改检测机制不需要检查执行计划,也不需要检查语句解析树(诸如包含语句语义信息的抽象语法树(AST))。在牺牲一些灵活性以提高效率的有限情况下,可以将部分或全部更改检测卸载到语句编译时。虽然运行时更改检测机制不需要检查执行计划,但高效的更改检测机制可以是编译时更改检测机制,它的确会咨询UPDATE语句的解析树或执行计划,以检测哪些索引字段如语句中明确指定的那样被更改。
例如,编译时分析可以加速由上述示例JSON_TRANSFORM引起的索引维护。例如,编译时分析可能会揭示:a)po_document的ROWID,b)仅Phone数组字段发生更改,c)在Phone数组字段的末尾附加新电话号码,以及d)没有任何Phone数组字段的现有元素被修改、删除或移动。
7.4索引维护避免
如果分层数据对象141中的索引字段161是包含多个温度值的数组字段,那么分层数据对象141可以在索引180中具有多个索引条目。利用上面讨论的任何字段更改检测机制,DBMS100可以检测到将字段161的值数组从[0.3,0.2]更改为[0.4,0.2]意味着仅第一个序数位置的值更改。这是导致步骤703删除同一分层数据对象的第一索引条目而不删除第二索引条目的各种场景之一。替代地,可以通过将数组值从[0.3,0.2]更改为[0.3]来引起步骤703。
利用上面讨论的任何字段更改检测机制,DBMS100可以检测到第二UPDATE语句仅更改字段162。通过(诸如在数据库字典中)检查索引180的元数据而不实际访问索引180,DBMS100检测到更改的字段162没有通过索引180进行索引。在这种情况下,步骤704修订列130中的分层数据对象,而不访问也不维护索引180。
8.0实际集成
图8是描绘实施例中的索引180的实际使用的流程图。参考图1来讨论图8。
JSON_VALUE()与JSON_EXISTS有点相似,不同之处在于JSON_VALUE从列130中的一些或全部分层数据对象中提取并返回实际字段值。为了执行JSON_VALUE(),步骤801可以访问多级别索引180。例如,对于JSON_VALUE或JSON_EXISTS,如果仅访问索引字段,那么可以通过仅访问索引180来完成执行,而不需要访问列130。
DML操作可以分别分类为创建、读取、更新或删除(CRUD)。JSON_VALUE和JSON_EXIST仅促进选择和过滤,无论是读还是写。CRUD的更新和删除操作由JSON_TRAN SFORM()执行。JSON_TRANSFORM具有复杂的语法和语义,相关手册Oracle Database JSONDeveloper's Guide,21c,部分编号F30948-01中对这些语法和语义进行了解释,该手册的全部内容并入本文。为了加速JSON_TRANSFORM()的执行,步骤802可以访问多级别索引180。
虽然与JSON_TRANSFORM有点相似,但JSON_MERGEPATCH()由于递归操作而可能更复杂。例如,相同的拼写错误可能在数组字段中的各个序数位置和/或JSON文档的各个级别中重复。JSON_MERGEPATCH可以递归地匹配并修复所有这些拼写错误和/或进行其它更改。JSON_MERGEPATCH具有复杂的语法和语义,相关手册Oracle Database JSON Developer'sGuide,21c中对这些语法和语义进行了解释。为了加速JSON_MERGEPATCH()的执行,步骤803访问多级别索引180。
硬件概述
根据一个实施例,本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行这些技术,或者可以包括数字电子设备(诸如被持久地编程为执行这些技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)),或者可以包括被编程为根据固件、存储器、其它存储装置或组合中的程序指令执行这些技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制编程相结合,以实现这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备或者结合硬连线和/或程序逻辑以实现这些技术的任何其它设备。
例如,图9是图示可以在其上实现本发明实施例的计算机系统900的框图。计算机系统900包括总线902或用于传送信息的其它通信机制,以及与总线902耦合用于处理信息的硬件处理器904。硬件处理器904可以是例如通用微处理器。
计算机系统900还包括耦合到总线902用于存储将由处理器904执行的信息和指令的主存储器906,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器906还可以用于存储在执行由处理器904执行的指令期间的临时变量或其它中间信息。这些指令当存储在处理器904可访问的非瞬态存储介质中时,使计算机系统900成为被定制以执行指令中指定的操作的专用机器。
计算机系统900还包括耦合到总线902用于存储用于处理器904的静态信息和指令的只读存储器(ROM)908或其它静态存储设备。提供存储设备910(诸如磁盘、光盘或固态驱动器)并且存储设备910耦合到总线902用于存储信息和指令。
计算机系统900可以经由总线902耦合到显示器912(诸如阴极射线管(CRT)),用于向计算机用户显示信息。包括字母数字键和其它键的输入设备914耦合到总线902,用于将信息和命令选择传送到处理器904。另一种类型的用户输入设备是光标控件916(诸如鼠标、轨迹球或光标方向键),用于将方向信息和命令选择传送到处理器904并用于控制显示器912上的光标移动。这种输入设备通常在两个轴(第一轴(例如,x轴)和第二轴(例如,y轴))上具有两个自由度,这允许设备指定平面中的位置。
计算机系统900可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑(它们与计算机系统相结合,使计算机系统900成为或将计算机系统900编程为专用机器)来实现本文描述的技术。根据一个实施例,响应于处理器904执行包含在主存储器906中的一个或多个指令的一个或多个序列,计算机系统900执行本文的技术。这些指令可以从另一个存储介质(诸如存储设备910)读入到主存储器906中。包含在主存储器906中的指令序列的执行使得处理器904执行本文描述的处理步骤。在替代实施例中,可以使用硬连线的电路系统代替软件指令或与软件指令组合。
如本文使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,诸如存储设备910。易失性介质包括动态存储器,诸如主存储器906。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁数据存储介质、CD-ROM、任何其它光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带。
存储介质不同于传输介质但可以与传输介质结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴线缆、铜线和光纤,包括包含总线902的导线。传输介质也可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些波。
各种形式的介质可以参与将一个或多个指令的一个或多个序列传送到处理器904以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统900本地的调制解调器可以在电话线上接收数据并使用红外发送器将数据转换成红外信号。红外检测器可以接收红外信号中携带的数据,并且适当的电路系统可以将数据放在总线902上。总线902将数据传送到主存储器906,处理器904从主存储器906检索并执行指令。由主存储器906接收的指令可以可选地在由处理器904执行之前或之后存储在存储设备910上。
计算机系统900还包括耦合到总线902的通信接口918。通信接口918提供耦合到网络链路920的双向数据通信,其中网络链路920连接到本地网络922。例如,通信接口918可以是集成服务数字网(ISDN)卡、线缆调制解调器、卫星调制解调器或者提供与对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口918可以是局域网(LAN)卡,以提供与兼容LAN的数据通信连接。还可以实现无线链路。在任何此类实现中,通信接口918都发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光学信号。
网络链路920通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路920可以提供通过本地网络922到主计算机924或到由互联网服务提供商(ISP)926操作的数据设备的连接。ISP 926进而通过全球分组数据通信网络(现在通常称为“互联网”928)提供数据通信服务。本地网络922和互联网928都使用携带数字数据流的电信号、电磁信号或光学信号。通过各种网络的信号以及网络链路920上并通过通信接口918的信号(其将数字数据携带到计算机系统900和从计算机系统900携带数字数据)是传输介质的示例形式。
计算机系统900可以通过(一个或多个)网络、网络链路920和通信接口918发送消息和接收数据,包括程序代码。在互联网示例中,服务器930可以通过互联网928、ISP 926、本地网络922和通信接口918传输对应用程序的所请求的代码。
所接收的代码可以在被接收时由处理器904执行,和/或存储在存储设备910或其它非易失性存储器中以供稍后执行。
软件概述
图10是可以用于控制计算系统900的操作的基本软件系统1000的框图。软件系统1000及其组件(包括它们的连接、关系和功能)仅仅是示例性的,并且不意味着限制(一个或多个)示例实施例的实现。适于实现(一个或多个)示例实施例的其它软件系统可以具有不同的组件,包括具有不同的连接、关系和功能的组件。
提供软件系统1000用于指导计算系统900的操作。可以存储在系统存储器(RAM)906和固定存储装置(例如,硬盘或闪存)910上的软件系统1000包括内核或操作系统(OS)1010。
OS1010管理计算机操作的低级别方面,包括管理进程的执行、存储器分配、文件输入和输出(I/O)以及设备I/O。表示为1002A、1002B、1002C...1002N的一个或多个应用程序可以被“加载”(例如,从固定存储装置910传送到存储器906中)以供系统1000执行。意图在计算机系统900上使用的应用或其它软件也可以被存储为可下载的计算机可执行指令集,例如,用于从互联网位置(例如,Web服务器、app商店或其它在线服务)下载和安装。
软件系统1000包括图形用户界面(GUI)1015,用于以图形(例如,“点击”或“触摸手势”)方式接收用户命令和数据。进而,这些输入可以由系统1000根据来自操作系统1010和/或(一个或多个)应用1002的指令来操作。GUI 1015还用于显示来自OS1010和(一个或多个)应用1002的操作结果,因此用户可以提供附加的输入或终止会话(例如,注销)。
OS1010可以直接在计算机系统900的裸硬件1020(例如,(一个或多个)处理器904)上执行。可替代地,管理程序或虚拟机监视器(VMM)1030可以插入在裸硬件1020和OS1010之间。在这个配置中,VMM 1030充当OS1010与计算机系统900的裸硬件1020之间的软件“缓冲”或虚拟化层。
VMM 1030实例化并运行一个或多个虚拟机实例(“客人机(guest machine)”)。每个客人机包括“客人”操作系统(诸如OS1010),以及被设计为在客人操作系统上执行的一个或多个应用(诸如(一个或多个)应用1002)。VMM 1030向客人操作系统呈现虚拟操作平台并管理客人操作系统的执行。
在一些情况下,VMM 1030可以允许客人操作系统如同其直接在计算机系统1000的裸硬件1020上运行一样运行。在这些实例中,被配置为直接在裸硬件1020上执行的客人操作系统的相同版本也可以在VMM 1030上执行而无需修改或重新配置。换句话说,VMM 1030可以在一些情况下向客人操作系统提供完全硬件和CPU虚拟化。
在其它情况下,客人操作系统可以被专门设计或配置为在VMM 1030上执行以提高效率。在这些实例中,客人操作系统“意识到”它在虚拟机监视器上执行。换句话说,VMM1030可以在某些情况下向客人操作系统提供半虚拟化。
计算机系统进程包括硬件处理器时间的分配,以及存储器(物理和/或虚拟)的分配、存储器的分配用于存储由硬件处理器执行的指令,用于存储由硬件处理器执行指令所生成的数据,和/或用于当计算机系统进程未运行时存储在硬件处理器时间的分配之间的硬件处理器状态(例如,寄存器的内容)。计算机系统进程在操作系统的控制下运行,并且可以在计算机系统上执行的其它程序的控制下运行。
云计算
本文一般地使用术语“云计算”来描述计算模型,该计算模型使得能够按需访问计算资源的共享池,诸如计算机网络、服务器、软件应用和服务,并且允许以最少的管理工作或服务提供商交互来快速提供和释放资源。
云计算环境(有时称为云环境或云)可以以各种不同方式实现,以最好地适应不同要求。例如,在公共云环境中,底层计算基础设施由组织拥有,该组织使其云服务可供其它组织或公众使用。相反,私有云环境一般旨在仅供单个组织使用或在单个组织内使用。社区云旨在由社区内的若干组织共享;而混合云包括通过数据和应用可移植性绑定在一起的两种或更多种类型的云(例如,私有、社区或公共)。
一般而言,云计算模型使得先前可能已经由组织自己的信息技术部门提供的那些职责中的一些代替地作为云环境内的服务层来输送,以供消费者使用(根据云的公共/私人性质,在组织内部或外部)。取决于特定实现,由每个云服务层提供或在每个云服务层内提供的组件或特征的精确定义可以有所不同,但常见示例包括:软件即服务(SaaS),其中消费者使用在云基础设施上运行的软件应用,同时SaaS提供者管理或控制底层云基础设施和应用。平台即服务(PaaS),其中消费者可以使用由PaaS的供应者支持的软件编程语言和开发工具,以开发、部署和以其它方式控制它们自己的应用,同时PaaS提供者管理或控制云环境的其它方面(即,运行时执行环境下的一切)。基础设施即服务(IaaS),其中消费者可以部署和运行任意软件应用,和/或提供进程、存储装置、网络和其它基础计算资源,同时IaaS提供者管理或控制底层物理云基础设施(即,操作系统层下面的一切)。数据库即服务(DBaaS),其中消费者使用在云基础设施上运行的数据库管理系统或数据库服务器,同时DbaaS提供者管理或控制底层云基础设施和应用。
上述基本计算机硬件和软件以及云计算环境是为了说明可以用于实现(一个或多个)示例实施例的基本底层计算机组件而呈现的。但是,(一个或多个)示例实施例不必限于任何特定的计算环境或计算设备配置。代替地,根据本公开,(一个或多个)示例实施例可以在本领域技术人员将理解为能够支持本文呈现的(一个或多个)示例实施例的特征和功能的任何类型的系统体系架构或处理环境中实现。
数据库概述
本发明的实施例在数据库管理系统(DBMS)的上下文中使用。因此,提供了示例DBMS的描述。
一般而言,诸如数据库服务器之类的服务器是集成的软件组件和诸如存储器、节点以及节点上用于执行集成的软件组件的进程之类的计算资源的分配的组合,其中软件和计算资源的组合专用于代表服务器的客户端提供特定类型的功能。数据库服务器控制并促进对特定数据库的访问,处理客户端访问数据库的请求。
用户通过向数据库服务器提交使数据库服务器对存储在数据库中的数据执行操作的命令来与DBMS的数据库服务器进行交互。用户可以是在与数据库服务器交互的客户端计算机上运行的一个或多个应用。多个用户在本文中也可以被统称为用户。
数据库字典
数据库包括数据和存储在诸如一组硬盘之类的持久性存储器机构上的数据库字典。数据库由其自己单独的数据库字典定义。数据库字典可以包括存储数据库元数据的多个数据结构。例如,数据库字典可以包括多个文件和表。数据结构的部分可以被高速缓存在数据库服务器的主存储器中。
数据库字典包括定义数据库中包含的数据库对象的元数据。实际上,数据库字典定义了数据库的大部分内容。当数据库对象被称为由数据库字典定义时,数据库字典包含定义数据库对象的特性的元数据。例如,定义数据库表的数据库字典中的元数据可以指定列名称和列的数据类型,以及存储表的数据的一个或多个文件或其部分。定义过程的数据库字典中的元数据可以指定过程的名称、过程的自变量和返回数据类型以及自变量的数据类型,并且可以包括源代码及其编译版本。
数据库对象包括表、表列和表空间。表空间是一组一个或多个文件,用于存储各种类型的数据库对象(诸如表)的数据。如果数据库对象的数据存储在表空间中,那么数据库字典将数据库对象映射到保持该数据库对象的数据的一个或多个表空间。
数据库对象可以由数据库字典定义,但是数据库字典本身中的元数据可以仅部分指定数据库对象的特性。其它特性可以由不被视为数据库字典的一部分的数据结构来定义。例如,在JAVA类中实现的用户定义函数可以部分地由数据库字典通过指定用户定义函数的名称并通过指定对包含Java类源代码的文件(即,java文件)和类的编译版本(即,类文件)的引用来定义。
数据库操作
DBMS参考数据库字典来确定如何执行提交给DBMS的数据库命令。数据库命令可以访问由字典定义的数据库对象。数据库命令可以是数据库语句的形式。为了使数据库服务器处理数据库语句,数据库语句必须符合数据库服务器所支持的数据库语言。许多数据库服务器支持的数据库语言的一个非限制性示例是SQL,包括由诸如Oracle之类的数据库服务器支持的SQL专有形式(例如,Oracle Database 11g)。将SQL数据定义语言(“DDL”)指令发布到数据库服务器以创建或配置数据库对象,诸如表、视图或复杂类型。将数据操纵语言(“DML”)指令发布到DBMS,以管理存储在数据库结构内的数据。例如,SELECT、INSERT、UPDATE和DELETE是一些SQL实施方式中找到的DML指令的常见示例。SQL/XML是在对象-关系数据库中操纵XML数据时使用的SQL的常见扩展。
多节点数据库管理系统由互连的节点组成,这些节点共享对同一数据库的访问。通常,节点经由网络互连,并在不同程度上共享对共享存储装置的访问,例如对一组盘驱动器和存储在其上的数据块的共享访问。多节点数据库系统中的节点可以是经由网络互连的一组计算机(例如,工作站、个人计算机)的形式。可替代地,节点可以是网格的节点,该网格由与机架上的其它服务器刀片互连的服务器刀片形式的节点组成。
多节点数据库系统中的每个节点都托管数据库服务器。服务器(诸如数据库服务器)是集成软件组件和计算资源(诸如存储器、节点以及节点上的用于在处理器上执行集成软件组件的进程)的分配的组合、专用于代表一个或多个客户端执行特定功能的软件和计算资源的组合。
可以分配来自多节点数据库系统中多个节点的资源,以运行特定的数据库服务器的软件。软件和节点中的资源的分配的每种组合都是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,其中一些或全部在单独的计算机(包括单独的服务器刀片)上运行。
查询处理
查询是表达式、命令或命令集,在执行时,使服务器对数据集执行一个或多个操作。查询可以指定要从中确定(一个或多个)结果集的(一个或多个)源数据对象,诸如(一个或多个)表、(一个或多个)列、(一个或多个)视图或(一个或多个)快照。例如,(一个或多个)源数据对象可以出现在结构化查询语言(“SQL”)查询的FROM子句中。SQL是用于查询数据库对象的众所周知的示例语言。如本文所使用的,术语“查询”被用于指表示查询的任何形式,包括数据库语句形式的查询和用于内部查询表示的任何数据结构。术语“表”是指被查询引用或定义并且表示行的集合的任何源对象,诸如数据库表、视图或内联查询块(诸如内联视图或子查询)。
查询可以在(一个或多个)对象被加载时逐行地对来自(一个或多个)源数据对象的数据执行操作,或者在(一个或多个)对象已被加载之后对(一个或多个)整个源数据对象执行操作。由一些操作生成的结果集可以让(一个或多个)其它操作可用,并且以这种方式,可以基于某些准则将结果集过滤掉或缩小范围,和/或与(一个或多个)其它结果集和/或(一个或多个)其它源数据对象联接或组合。
子查询是查询的一部分或组成部分,它与查询的其它(一个或多个)部分或(一个或多个)组成部分不同,并且可以与查询的其它(一个或多个)部分或(一个或多个)组成部分分开评估(即,作为单独的查询)。查询的其它(一个或多个)部分或(一个或多个)组成部分可以形成外部查询,其可以包括也可以不包括其它子查询。嵌套在外部查询中的子查询可以被单独评估一次或多次,同时为外部查询计算结果。
一般而言,查询解析器接收查询语句并生成查询语句的内部查询表示。通常,内部查询表示是互连的数据结构的集合,其表示查询语句的各种组件和结构。
内部查询表示可以是节点图的形式,每个互连的数据结构与节点和所表示的查询语句的组件对应。内部表示通常在存储器中生成,以用于评估、操作和变换。
在前面的说明书中,已经参考众多具体细节描述了本发明的实施例,这些细节可能因实施方案而不同。因此,应当在说明性而不是限制性的意义上看待说明书和附图。本发明范围的唯一且排他的指示以及申请人意在要作为本发明范围的是以由本申请产生的一组权利要求的具体形式的所产生权利要求的字面和等同范围,包括任何后续的校正。

Claims (16)

1.一种方法,包括:
在关系数据库的表中存储多个分层数据对象,其中所述多个分层数据对象中的每个分层数据对象包含相应的多个级别,并且分层数据对象的所述多个级别中的每个级别包含相应的一个或多个字段;
为所述多个分层数据对象的所述多个级别中的至少两个级别中的多个字段中的多个索引值生成索引;
基于所述至少两个级别中的所述多个字段中的所述多个索引值的所述索引,执行引用关系数据库中的所述表和所述多个字段中的至少一个字段的数据库语句。
2.如权利要求1所述的方法,其中所述多个分层数据对象中的分层数据对象中的所述至少两个级别中的所述多个字段中的字段包含所述多个索引值中的多个字段值。
3.如权利要求2所述的方法,其中:
所述分层数据对象中的所述字段中的所述多个字段值按相应序数位置的顺序排序;
所述方法还包括指示所述分层数据对象中的所述字段中的所述多个字段值中的值在选自由以下项组成的组内的所述序数位置:
引用所述多个字段中的所述至少一个字段的所述数据库语句,以及
所述至少两个级别中的所述多个字段中的所述多个索引值的所述索引。
4.如权利要求3所述的方法,其中指示所述值的所述序数位置包括:所述索引以与为在所述至少两个级别中的所述多个字段中的所述多个索引值生成所述索引相同的方式,对所述值的所述序数位置进行索引。
5.如权利要求2所述的方法,其中:
所述数据库语句包含与所述分层数据对象中的所述字段中的所述多个字段值中的多个不同或非不同值匹配的谓词;
执行所述数据库语句包括生成与好像所述谓词仅匹配所述分层数据对象中的所述字段中的所述多个字段值中的一个值相同的结果。
6.如权利要求2所述的方法,其中:
所述分层数据对象中的所述字段中的所述多个字段值包含多个不同或非不同值;
为所述至少两个级别中的所述多个字段中的所述多个索引值生成所述索引包括在所述索引中为相同所述分层数据对象生成多个索引条目。
7.如权利要求2所述的方法,其中:
所述分层数据对象中的所述字段中的所述多个字段值包含重复值;
为所述至少两个级别中的所述多个字段中的所述多个索引值生成所述索引不包括在所述索引中为相同所述分层数据对象生成多个索引条目。
8.如权利要求1所述的方法,其中所述存储所述多个分层数据对象包括将所述多个分层数据对象存储在所述表的单列中。
9.如权利要求1所述的方法,其中所述至少两个级别中的所述多个字段中的所述多个索引值的所述索引包括包含多个树叶的B+树,所述多个树叶包含所述至少两个级别中的所述多个字段中的所述多个索引值。
10.如权利要求1所述的方法,其中为所述至少两个级别中的所述多个字段中的所述多个索引值生成所述索引是基于数据定义语言DDL语句的。
11.如权利要求1所述的方法,还包括修订所述表中的所述多个分层数据对象中的分层数据对象,而不访问所述至少两个级别中的所述多个字段中的所述多个索引值的所述索引。
12.如权利要求1所述的方法,其中:
为所述至少两个级别中的所述多个字段中的所述多个索引值生成所述索引包括:
在所述索引中为所述多个分层数据对象中的分层数据对象的所述多个索引值中的第一值生成第一索引条目,以及
在所述索引中为相同所述分层数据对象的所述多个索引值中的第二值生成第二索引条目;
执行所述数据库语句包括删除所述分层数据对象的所述第一索引条目,而不删除相同所述分层数据对象的所述第二索引条目。
13.如权利要求1所述的方法,还包括为相同所述多个分层数据对象的所述多个级别中的第二至少两个级别中的第二多个字段中的第二多个索引值生成第二索引。
14.如权利要求1所述的方法,其中执行所述数据库语句包括基于选自由JSON_EXISTS、JSON_VALUE、JSON_TRANSFORM和JSON_MERGEPATCH组成的组中的至少一个的所述数据库语句中的调用来访问所述至少两个级别中的所述多个字段中的所述多个索引值的所述索引。
15.如权利要求1所述的方法,其中所述多个分层数据对象是多个可扩展标记语言XML文档。
16.一种或多种存储指令的计算机可读非瞬态介质,所述指令在由一个或多个处理器执行时,使得执行权利要求1-15中的任一项所述的步骤。
CN202180095433.8A 2021-03-10 2021-12-17 对rdbms中存储的聚合存储数据全面支持多值、多字段、多级别、多位置功能索引的技术 Pending CN116964571A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/198,159 2021-03-10
US17/198,159 US11640380B2 (en) 2021-03-10 2021-03-10 Technique of comprehensively supporting multi-value, multi-field, multilevel, multi-position functional index over stored aggregately stored data in RDBMS
PCT/US2021/064035 WO2022191893A1 (en) 2021-03-10 2021-12-17 Technique of comprehensively supporting multi-value, multi-field, multilevel, multi-position functional index over stored aggregately stored data in rdbms

Publications (1)

Publication Number Publication Date
CN116964571A true CN116964571A (zh) 2023-10-27

Family

ID=79730298

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180095433.8A Pending CN116964571A (zh) 2021-03-10 2021-12-17 对rdbms中存储的聚合存储数据全面支持多值、多字段、多级别、多位置功能索引的技术

Country Status (4)

Country Link
US (1) US11640380B2 (zh)
EP (1) EP4305531A1 (zh)
CN (1) CN116964571A (zh)
WO (1) WO2022191893A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12061578B2 (en) * 2022-05-23 2024-08-13 Dell Products L.P. Application program interface for use with a data schema mapping operation
CN118331891B (zh) * 2024-06-14 2024-08-13 北京比瓴科技有限公司 一种基于调用链路的测试用例构建方法及相关装置

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3114421B2 (ja) 1993-03-12 2000-12-04 富士ゼロックス株式会社 表作成装置
US5615367A (en) 1993-05-25 1997-03-25 Borland International, Inc. System and methods including automatic linking of tables for improved relational database modeling with interface
US6233575B1 (en) 1997-06-24 2001-05-15 International Business Machines Corporation Multilevel taxonomy based on features derived from training documents classification using fisher values as discrimination values
US6611843B1 (en) 2000-10-26 2003-08-26 Docent, Inc. Specification of sub-elements and attributes in an XML sub-tree and method for extracting data values therefrom
US6816856B2 (en) 2001-06-04 2004-11-09 Hewlett-Packard Development Company, L.P. System for and method of data compression in a valueless digital tree representing a bitset
US7539591B2 (en) 2001-08-24 2009-05-26 Vi Technology, Inc. Enterprise test data management system utilizing hierarchical test data models and related methods
US7457810B2 (en) 2002-05-10 2008-11-25 International Business Machines Corporation Querying markup language data sources using a relational query processor
AU2003236543A1 (en) 2002-06-13 2003-12-31 Mark Logic Corporation A subtree-structured xml database
US7171404B2 (en) 2002-06-13 2007-01-30 Mark Logic Corporation Parent-child query indexing for XML databases
US6836778B2 (en) 2003-05-01 2004-12-28 Oracle International Corporation Techniques for changing XML content in a relational database
US8150818B2 (en) 2003-08-25 2012-04-03 International Business Machines Corporation Method and system for storing structured documents in their native format in a database
US8694510B2 (en) 2003-09-04 2014-04-08 Oracle International Corporation Indexing XML documents efficiently
US7478100B2 (en) 2003-09-05 2009-01-13 Oracle International Corporation Method and mechanism for efficient storage and query of XML documents based on paths
US7877400B1 (en) 2003-11-18 2011-01-25 Adobe Systems Incorporated Optimizations of XPaths
US7219102B2 (en) 2003-12-22 2007-05-15 International Business Machines Corporation Method, computer program product, and system converting relational data into hierarchical data structure based upon tagging trees
US7254574B2 (en) 2004-03-08 2007-08-07 Microsoft Corporation Structured indexes on results of function applications over data
US7493305B2 (en) 2004-04-09 2009-02-17 Oracle International Corporation Efficient queribility and manageability of an XML index with path subsetting
US7366735B2 (en) 2004-04-09 2008-04-29 Oracle International Corporation Efficient extraction of XML content stored in a LOB
US7685137B2 (en) 2004-08-06 2010-03-23 Oracle International Corporation Technique of using XMLType tree as the type infrastructure for XML
US7627616B2 (en) 2004-08-30 2009-12-01 Hywire Ltb. Database storage and maintenance using row index ordering
US8055683B2 (en) 2004-10-14 2011-11-08 International Business Machines Corporation Management of relationships between database tables
US20060117307A1 (en) 2004-11-24 2006-06-01 Ramot At Tel-Aviv University Ltd. XML parser
US7454435B2 (en) 2005-05-03 2008-11-18 Microsoft Corporation Systems and methods for granular changes within a data storage system
US7814091B2 (en) 2005-09-27 2010-10-12 Oracle International Corporation Multi-tiered query processing techniques for minus and intersect operators
US7644066B2 (en) 2006-03-31 2010-01-05 Oracle International Corporation Techniques of efficient XML meta-data query using XML table index
US7870121B2 (en) 2008-01-15 2011-01-11 Oracle International Corporation Matching up XML query expression for XML table index lookup during query rewrite
US7472108B2 (en) 2006-05-16 2008-12-30 International Business Machines Corporation Statistics collection using path-value pairs for relational databases
WO2007143666A2 (en) 2006-06-05 2007-12-13 Mark Logic Corporation Element query method and system
US7702644B2 (en) 2007-01-25 2010-04-20 Ludi Labs, Inc. Data management system and method to host applications and manage storage, finding and retrieval of typed items with support for tagging, connections, and situated queries
US20080183657A1 (en) 2007-01-26 2008-07-31 Yuan-Chi Chang Method and apparatus for providing direct access to unique hierarchical data items
US8819079B2 (en) 2007-02-02 2014-08-26 Rogers Family Trust System and method for defining application definition functionality for general purpose web presences
JP4445509B2 (ja) 2007-03-20 2010-04-07 株式会社東芝 構造化文書検索システム及びプログラム
US10452716B2 (en) 2008-06-07 2019-10-22 International Business Machines Corporation Optimizing complex path endpoint resolution
CN102084357B (zh) 2008-07-01 2014-06-04 富士通株式会社 检索装置以及检索方法
CN101661481B (zh) 2008-08-29 2012-09-26 国际商业机器公司 存储xml数据的方法、执行xml查询的方法及其装置
US8732139B2 (en) 2008-12-18 2014-05-20 Sap Ag Method and system for dynamically partitioning very large database indices on write-once tables
US9361346B2 (en) * 2009-04-14 2016-06-07 Oracle America, Inc. Mapping information stored in a LDAP tree structure to a relational database structure
US8326839B2 (en) 2009-11-09 2012-12-04 Oracle International Corporation Efficient file access in a large repository using a two-level cache
US8346813B2 (en) 2010-01-20 2013-01-01 Oracle International Corporation Using node identifiers in materialized XML views and indexes to directly navigate to and within XML fragments
US20110289118A1 (en) 2010-05-20 2011-11-24 Microsoft Corporation Mapping documents to a relational database table with a document position column
CN102346747B (zh) 2010-08-04 2013-02-13 鸿富锦精密工业(深圳)有限公司 在数据模型中查找参数的方法
CN102650992B (zh) 2011-02-25 2014-07-30 国际商业机器公司 用于二进制xml数据的生成及其节点定位的方法和装置
US8612487B2 (en) 2011-09-07 2013-12-17 International Business Machines Corporation Transforming hierarchical language data into relational form
US8862897B2 (en) 2011-10-01 2014-10-14 Oracle International Corporation Increasing data security in enterprise applications by using formatting, checksums, and encryption to detect tampering of a data buffer
US8805849B1 (en) 2012-06-20 2014-08-12 Symantec Corporation Enabling use of analytic functions for distributed storage system data
US10915575B2 (en) 2012-09-28 2021-02-09 Oracle International Corporation Evaluating XML full text search
US9659045B2 (en) 2013-11-08 2017-05-23 Oracle International Corporation Generic indexing for efficiently supporting ad-hoc query over hierarchically marked-up data
US9864816B2 (en) 2015-04-29 2018-01-09 Oracle International Corporation Dynamically updating data guide for hierarchical data objects
US20170017683A1 (en) 2015-07-13 2017-01-19 28msec Systems And Methods For Storing And Interacting With Data From Heterogeneous Data Sources
US10467243B2 (en) 2015-08-26 2019-11-05 Oracle International Corporation Efficient in-memory DB query processing over any semi-structured data formats
US10262012B2 (en) 2015-08-26 2019-04-16 Oracle International Corporation Techniques related to binary encoding of hierarchical data objects to support efficient path navigation of the hierarchical data objects
US10552443B1 (en) * 2016-08-11 2020-02-04 MuleSoft, Inc. Schemaless to relational representation conversion
US11144513B1 (en) 2018-02-09 2021-10-12 Amazon Technologies, Inc. Policy based management for key-value pairs
US11157478B2 (en) 2018-12-28 2021-10-26 Oracle International Corporation Technique of comprehensively support autonomous JSON document object (AJD) cloud service

Also Published As

Publication number Publication date
US20220292067A1 (en) 2022-09-15
EP4305531A1 (en) 2024-01-17
US11640380B2 (en) 2023-05-02
WO2022191893A1 (en) 2022-09-15

Similar Documents

Publication Publication Date Title
US11899644B2 (en) Technique of efficiently, comprehensively and autonomously support native JSON datatype in RDBMS for both OLTP and OLAP
Lu et al. Multi-model databases: a new journey to handle the variety of data
CN113228001B (zh) 消除复杂数据库查询中的查询片段重复
US11385889B2 (en) Inferring intra package and module dependencies
CN105518676B (zh) 查询任意半结构化数据的通用的sql增强以及高效地支持这样的增强的技术
EP3066585B1 (en) Generic indexing for efficiently supporting ad-hoc query over hierarchically marked-up data
US9471711B2 (en) Schema-less access to stored data
US11314736B2 (en) Group-by efficiency though functional dependencies and non-blocking aggregation functions
US11132366B2 (en) Transforming directed acyclic graph shaped sub plans to enable late materialization
US11010383B2 (en) Hierarchy rearrange operator
US20100030726A1 (en) Mechanism For Deferred Rewrite Of Multiple Xpath Evaluations Over Binary XML
CN116964571A (zh) 对rdbms中存储的聚合存储数据全面支持多值、多字段、多级别、多位置功能索引的技术
CN107818125B (zh) 通过simd处理器寄存器对数据进行迭代评估
US11556533B2 (en) Method for generating views based on a semantic model, that allows for autonomous performance improvements and complex calculations
US10528538B2 (en) Leveraging SQL with user defined aggregation to efficiently merge inverted indexes stored as tables
US20210224287A1 (en) Flexible schema tables
US11797520B2 (en) ROWID elimination rewrite
US20240126729A1 (en) Natively supporting json duality view in a database management system
US20240126743A1 (en) Natively supporting json duality view in a database management system
US20240126728A1 (en) Natively supporting json duality view in a database management system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination