CN111435347A - 数据库中关系表的高效扩展方法和系统 - Google Patents

数据库中关系表的高效扩展方法和系统 Download PDF

Info

Publication number
CN111435347A
CN111435347A CN201910740718.7A CN201910740718A CN111435347A CN 111435347 A CN111435347 A CN 111435347A CN 201910740718 A CN201910740718 A CN 201910740718A CN 111435347 A CN111435347 A CN 111435347A
Authority
CN
China
Prior art keywords
field
fields
extension
record
meaning
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
CN201910740718.7A
Other languages
English (en)
Inventor
叶常青
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of CN111435347A publication Critical patent/CN111435347A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware

Landscapes

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

Abstract

本发明公开了一种数据库中关系表的高效扩展方法和系统,以使得能够对不符合标准定义的域数据模型的数据进行存储和交换,以支持具有不同要求的多个企业应用和系统。每个应用程序可以通过值或值和数据类型动态扩展标准定义字段的含义,或者在标准定义的域关系表中动态添加新的字段。这些扩展使标准定义的域数据模型能够满足各种系统之间具有的不同要求和支持系统可变性的企业应用程序,并降低集成和互操作性的复杂度。

Description

数据库中关系表的高效扩展方法和系统
技术领域
本发明涉及关系数据库领域,以及能够有效处理关系数据库中扩展标准定义数据模型的方法和系统。
背景技术
在关系数据库中,关系模式是基于普遍认可的可被多个系统和组织利用的公共数据模型创建的。有时,关系模式由标准定义组织(SDO)定义。我们将预定义的关系模式称为标准定义或简单标准。使用标准定义的关系模式降低了系统集成和互操作的复杂度。但是,预定义模式限制了灵活性并且在许多情况下经常成为问题因为横跨多个组织机构的多个系统和应用程序要求是多样性,并且由于意外的需求,它还增加了部署风险。解决此问题的一种方法是,容许灵活地在运行中扩展标准定义的域模式。这在分布式环境中尤其有用,在该环境中可以扩展标准定义的数据表或字段以满足不同应用程序的要求。在具有扩展灵活性的标准定义关系模式中,标准定义表可以根据需要添加一个或多个新字段来存储新内容;一个应用程序可以与其他应用程序不同地解释或翻译一个或多个定义的字段,一个应用程序可以引入一个或多个其他字段,并使其可用于其他应用程序。一种现有的技术解决方案是在域模式中包括所有扩展,但是该解决方案的结果是域表变得非常大并且变得麻烦且使用和管理效率低。此外,它与标准定义的模式本质上没有区别,它只是一个有许多额外的字段和表,可能只是偶尔使用或根本不使用,当需要意外添加时,它不允许新的动态扩展。本发明提供了以高效和有效的方式解决该困难的系统和方法。
发明内容
本发明公开了用于在数据库中扩展标准定义域关系表的方法和系统,以使得包括不符合标准定义的域数据模型的数据能够存储和交换,以支持具有不同应用要求的多个企业应用和系统。每个应用程序可以通过值或值和数据类型动态扩展标准定义字段的含义,或者在标准定义的关系表中添加其他字段。每个定义的表可以添加一个或多个不属于默认定义字段的附加字段,并且可以更改表的每个定义字段以具有不同含义。每个应用程序都可以读取,写入,存储和交换合法扩展。标准定义字段或附加字段的扩展的新含义由扩展定义(ED)定义,其存储在扩展定义表(EDT)中。每个扩展使用引用或统一资源定位符(URL)引用EDT中的扩展定义条目。扩展由一个应用程序创建,可供其他应用程序使用。这些扩展使标准定义的数据模型能够支持各种组织之间具有的不同要求和系统可变性的应用程序,并降低集成和互操作性的复杂性。
在本发明中,对定义的域关系表的改变单位称为扩展。扩展包括值元素,数据类型元素和更改的含义(扩展定义)。关系数据库系统包括一个或多个标准定义的域关系表与多个企业应用程序交互。每个应用程序都可以从数据库中读取扩展,将新扩展名写入数据库,并通过网络与其他应用程序交换扩展。一个应用程序创建的扩展可以使用该数据库被其他应用程序使用和理解应用程序和数据库可以在任何环境上运行,例如云,本地部署,集中式或分布式。应用程序和数据库之间的通信可以通过任何网络使用任何接口。本发明提供了用于动态扩展关系数据库系统中的任何标准定义域关系表的新方法和新系统,例如重新定义表的定义字段列的含义或者将新字段列添加到定义的表中,并且如果需要扩展在系统运行中进行。
在一个实施例中,对任何标准定义的域数据模型创建三种类型的表,称为第一表、第二表和第三表。标准域数据模型层次地由主对象,一个或多个原生数据类型字段,一个或多个子对象,一个或多个复杂数据类型字段组成;子对象由一个或多个原生数据类型字段,一个或多个子对象,一个或多个复杂数据类型字段组成。表具有表名或表标识符Id,表标识符Id唯一标识数据库系统中的表。字段具有字段名称或字段标识符Id,字段标识符Id唯一标识表中字段。表名和表标识符Id或字段名和字段标识符Id可互换使用。分层数据模型可以用分层第一表的模式实现:为主对象构建第一表;为一个或多个子对象构建一个或多个第一表;为复杂数据类型构建一个或多个第一表。底层数据库系统支持原生数据类型。每个主第一表都有一个主键列,主键用于唯一标识数据库系统中的行以及一个或多个字段。每个子类或复杂数据类型第一表都有一个主键列,一个外键列,外键用于唯一地指向其父对象第一表的一行,以及一个或多个字段。外键值是其父第一表的一行的主键值。复杂数据类型第一表是特定的第一表。与子第一表相比,除了主键列,外键列和一个或多个字段之外,复杂数据类型第一表还包括路径列,用于标识哪个第一表拥有此复杂类型第一表的行。主第一表和多个子第一表使用相同的复杂类型第一表来存储复杂数据类型的值。
第一表的扩展存储在第二表中。第二表的列包括主键列,外键列,路径(PATH)列,资源定位符(URL)列和值(VALUE)列,其中指定主键以唯一地标识行;指定外键以唯一地标识一个或多个第一表的行;PATH表示扩展哪个第一表或扩展哪个第一个表的哪个字段;PATH与外键联合,将扩展与扩展定义的字段或添加附加字段的第一表的行相关联。URL指向存储扩展定义的第三表的行。扩展定义可以预先存储或通过用户界面存储到第三表中。当域消息被保存时,扩展定义可以与域消息一起保存。所有第一表都使用同一第二表,可以通过其外键列进行分区,以提高查询效率和性能。第二表可以由主键列和外键列构成复合键索引。
当应用程序从第一表中读取域记录时,它还从第二表中读取每个第一表的扩展。通过匹配中每个第一记录的主键值和第二表的外键列和路径列中的第一表名,确定扩展是第一表的附加字段还是扩展第一表的定义字段。因此,应用程序用检索到的扩展构造域消息,并将这消息作为响应发送回请求的应用程序。当应用程序将域消息保存到第一表时,它还需要从消息中读取每个扩展定义字段或第一表的每个附加字段的每个扩展,并将其保留到第二表中,如果第三表中不存在扩展定义,并将扩展定义添加到第三表中,而扩展定义应包含在域消息中。
本发明包括一个数据库系统的实施例,该数据库系统包括域或标准定义的数据模型,该数据模型包括原生和/或复杂数据类型的集合,以及子数据对象;基于域或标准定义的数据模型的一个或多个关系表,其中每个表具有一组字段和主键或唯一的复合键,每个字段是原生数据类型,复杂数据类型或子数据对象,其中一些或所有记录具有一个或多个扩展,其扩展重新定义一个或多个字段的默认内容或者将一个或多个附加字段添加到记录或关系表中;使用外键构造的数据结构,用于表示关系表的层次关系;一个或多个扩展定义表存储扩展定义;一个或多个扩展表用于标识一个或多个关系表中具有扩展的记录,以及对扩展定义表中记录的引用,扩展定义表中的记录存储每个扩展字段的定义。在所述数据库系统中,扩展定义表和扩展表可以组合成一个表,成为同一个表。此外,复杂数据类型可以是与一个或多个其他关系表相关联的关系表,并且可以有第二级扩展表和扩展定义表定义扩展字段的扩展。
附图说明
图1为标准定义域关系数据库与多个企业应用程序交互的企业系统框图;
图2为数据库中标准定义的域关系表元数据和第一表、第二表、第三表的关系图;
图3为根据图2中第一表、第二表和第三表的元数据,描绘的标准定义的域关系表和第一表、第二表、第三表的示例图;
图4描绘了复杂数据类型表元数据添加到图2的标准定义的域关系表元数据;
图5为根据图4的复杂数据类型元数据,描述的复杂数据类型第一表和定义的域关系表的示例图;
图6为将扩展定义字段或附加字段的扩展保存到主第一表和第二表的扩展数据流图;
图7为将扩展定义的字段或附加字段的扩展保存到子或复杂数据类型第一表和第二表的数据流图;
图8从第一表和第二表中检索扩展字段和附加字段的扩展的数据流图。
具体实施方式
请参考附图,其中相同的标号表示相同的部件。现在描述本发明的示例性实施例。提供示例性实施例是为了说明本发明的各方面,而不应被解释为限制本发明的范围。当参考框图或流程图描述示例性实施例时,每个框可表示方法步骤或装置或系统元件用于执行方法步骤。根据不同实现,相应的装置元件可以以硬件,软件,固件或其组合来配置。
本发明可以实现在各种数据库系统中,包括RDBMS数据库系统,和/或支持关系模型的任何大数据或NoSQL数据库平台。
图1示出了分布式企业系统100,其包括标准关系数据库系统101,由基于标准域数据模型域关系表元数据102定义的域关系表103。域关系表元数据102和域关系表103存储在数据库系统中。多个企业应用程序通过行业标准接口与数据库系统交互,其中企业应用程序1使用接口120与数据库系统交互,企业应用程序2使用接口130与数据库系统交互,而企业应用程序n使用接口140与数据库系统交互。每个接口可以利用不同的工业技术和方法。标准定义的域数据模型通常是跨系统和机构的商定的行业或社区通用模型,涵盖了他们广泛的需求。企业应用程序可以在同一机构内或跨多个机构内运行。企业应用程序可以是基于云的,也可以是内部部署的,集中式或分布式的。由于各种组织的应用程序要求的多样性,每个组织可能具有不属于标准定义的域数据模型的特定要求。每个应用程序可能需要向标准定义的域数据模型添加不同的附加字段,并且可能需要扩展标准定义的域数据模型的定义字段的含义,并且有时需要在运行过程中动态地添加或扩展。一个企业应用程序添加的任何扩展都可供其他企业应用程序理解和使用。在大规模连接的行业环境或社区中,应用程序的数量和种类可能非常大,需要各种各样的域关系表。因此,标准定义的域关系表加速了部署过程,而标准定义的域关系表的可扩展性容许动态客户化定制从而进一步简化了集成和互操作的复杂性。
在标准定义的域数据模型中,每个域都有一个主对象,一个主对象可以有一个或多个子对象,一个子对象可以有一个或多个子对象,以及一个父对象。复杂数据类型是特定子对象,可以包含一个或多个父子对象。主对象,子对象和复杂数据类型是第一表(FirstTables)。图2示出了标准定义的域关系表元数据的示例。表200是图3中的主第一表300的元数据(metadata),并且每行200定义图3中的主第一表300的列,例如,表200字段名称列中的200_PK定义了图3中的主第一表300的主键列200_PK;字段名称列中的A100定义了图3中的主第一表300的第一字段列A100,其数据类型为D100;字段名称列中的A200定义了图3中的主第一表300的第一字段列A200,其数据类型是D200。200_PK是图3中的第一表300的主键列,它是记录的唯一标识符;通常它是整数数据类型。数据类型D100和D200都是底层数据库系统支持的原生数据类型。表201是图3中的第一表301的元数据,其中表201的字段名列中的200_FK定义了图3中的表301的外键列200_FK,其链接到由表200字段名称列200_PK定义的表300的主键列200_PK,如图2箭头线233所示。字段名称列中的A100和A200定义图3中表301的第一字段列A100和A200。A100的数据类型在表201的数据类型列中定义为D100;A200的数据类型在表201的数据类型列中定义为D200。等效地,表20N是图3中的第一表30N的元数据。第一表20N使用其外键20N-1_FK与其父第一表相关联,如图2中用箭头线233所示。
表220是定义图3中的第二表320的元数据。第二表是存储扩展信息的扩展表。表220元数据可以包含图3中的第二表320的以下列的定义:主键列220_PK,外键列2XX_FK,PATH(路径),URL(统一资源定位符)和VALUE(值),其中VALUE列保存实际数据值,可以根据扩展的定义引用底层数据库支持的任何数据类型。通常,VALUE以BLOB(二进制大对象)或CLOB(字符大对象)或VARCHAR(可变长度字符)数据类型存储,任何数据类型的值通过序列化或反序列化写入这些数据类型或从这些数据类型中读取。URL列指向图3中的第三表330的条目,其中保存了扩展的定义。外键列2XX_FK指的是第一表的主键中的一个,如图2中箭头线211,244和255所示。用组合PATH和外键列2XX_FK确定外键列2XX_FK所指的哪个第一表。路径列表示分层数据结构,可由一序列组成,序列元素包括主对象名称,子对象名称,和由分隔符分隔的数据结构的字段名称,通常分隔符是点“.”。路径的根始终表示主对象。离根最远的name元素可以是字段名称或对象名称;如果它是对象名称,则表示该扩展是第一表中该对象的附加字段;如果它是字段名称,则表示扩展是第一表中该对象的已定义字段的扩展字段,该字段由距离根最远的第二个元素名称标识。路径的表达形式如下:
PATH=[Name of Primary Object First Table]{.[Name of Child ObjectFirst Table]*}{.[Field Name of Primary Object or Child Object]}?,其中'*'表示出现零次或多次;'?'发生零次或一次。
例如:
Figure BDA0002163834410000071
图2中表230是定义图3中的第三表330的元数据。第三表是扩展定义表(EDT),它存储扩展定义。扩展定义表可以包括主键230_PK列,定义列(DEFINITION)和描述列(DESCRIPTION)。DEFINITION和DESCRIPTION列都是VARCHAR(可变长度字符)的数据类型。DEFINITION包括扩展的元数据和扩展的含义。所有企业应用程序通常都同意并兼容该格式,例如,JSON格式或XML格式或DSL(域特定语言)或参考或指向第四表字段定义表。DEFINITION的元数据可以包括字段名称、数据类型、大小、最小值、最大值、描述、约束、和用户定义的属性等。图3的第二表320的列URL指向图3的第三表330的主键列230_PK,如图3中箭头线222所示。图3中的第三表330的条目可以使用工业标准接口预先填充,或者可以在运行中通过企业应用传入的消息动态保存。
图3示出了根据图2中的第一表、第二表和第三表的元数据构建的第一表、第二表和第三表的域关系表的示例。第一表300,301和30N存储关系值记录。第二表320存储第一表的每个扩展实例,第三表330存储第二表320的每个扩展的含义。如图3所示,第一表300有两个记录,其主键值在主键列200_PK分别为200_Id1和200_Id2。记录200_Id1有两个字段值a100_v1和a200_v1;其中,第一表300的记录200_Id1与第一表301的记录201_Id1相关联;第一表301中的记录201_Id1包含两个字段值a100_v1和a200_v1。第一表300的记录200_Id2具有两个字段值a100_v2和a200_v2;其中,第一表300的记录200_Id2与第一表301的记录201_Id2相关联;第一表301中的记录201_Id2包含两个字段值a100_v2和a200_v2。
在第二表320的第一行中,记录220_Id1具有PATH 300.A100,其指示第一表300的字段A100是扩展字段并且表示其外键2XX_FK值200_Id1与第一表300第一行记录200_Id1相关联。因此,第一表300的记录200_Id1的字段A100的新值是a100_v3,该值的说明引用其URL值由第三表330的第一行中的记录230_Id1定义。
在第二表320的第二行中,第二记录220_Id2包含PATH 300,其表示第一表300具有附加字段,并且还表示其外键2XX_FK值200_Id2关联到第一表300第二行的记录200_Id2。因此,新字段的值是a300_v1,并且其字段名称和数据类型由第三表330中的第二行的记录230_Id2通过引用其URL值230_Id2来定义。
在第二表320的第三行中,第二表320的记录220_Id3具有PATH值300.301.A200,其表示第一表301的字段A200是扩展字段,并且表示其外键2XX_FK值201_Id2指向第一表301中第二行的记录201_Id2,表301是表300的子表。结果,第一表301的记录201_Id2的字段A200的新值是a200_v3,该值的说明通过引用其URL值由第三表330第二行中的记录230_Id2定义。第二表320中的两个扩展220_Id2和220_Id3指的是第三表330中的相同扩展定义。
图4是通过添加复杂数据类型来扩展图2的域关系表元数据的复杂数据类型的元数据图。复杂类型表元数据400定义如图5所示的第一表500,并且由多个列组成,例如,主键列400_PK,外键列2XX_FK,P路径列ATH,以及一个或多个字段列,如A100和A200字段。400_PK是第一表400的主键列,它是记录的唯一标识符;通常它是整数数据类型。第一表400的字段A100是D100数据类型,第一表400的字段A200是D200数据类型。第一表400的D100和D200都是数据库系统支持的原生数据类型。每个第一表可以与一个或多个复杂类型表相关联。第一个表使用其外键2XX_FK关联复杂类型表。2XX_FK可以是任何其他第一表的主键。PATH表示哪个第一表与复杂类型表400相关联以及第一个字段名称是什么。PATH包括第一表名称和由分隔符分隔的第一表的第一字段名称,通常分隔符为点“.”。路径的根始终表示第一个表。路径的表达形式如下:
PATH=[Name of First Table].[Name of Field]
例如:
Figure BDA0002163834410000091
主对象和子对象基于标准定义的域模型可以具有一个或多个不同的复杂数据类型对象,复杂数据类型对象可以包含一个或多个其它复杂数据类型。也就是说,主第一表和子第一表可以与一个或多个复杂类型第一表相关联。复杂类型第一表也可以通过重新定义已定义字段的含义或添加其它字段来扩展。
图5示出了根据图4中的复杂数据类型元数据的具有主和子第一表的复杂类型第一表的示例。如图所示,复合类型第一表500包含一个或多个记录,例如,两个记录分别由主键值400_Id1和400_Id2标识。通过参考其PATH值300.A300和外键列2XX_FK值200_Id1,第一行中的记录400_Id1与第一表300的记录200_Id1相关联;第一表300的复杂类型字段名称是A300;在500的第一行中,记录400_Id1的A100和A200具有值a100_v1和a200_v1;通过参考第二表320并使用图3中所述的相同方法,箭头线533表示记录400_Id1的字段A100被扩展,其新值参考第二表;通过参考500的第二行中的PATH 300.301.A400,箭头线544表示记录400_Id2添加新字段A300,关于数据类型的新字段细节,用法和描述参考第二表320。
图6是说明如何将各种扩展与域消息一起保存的数据流框图的第一部分。在图6中,数据流展示了如何处理主对象的扩展。步骤601启动将域消息保存到图2和图3中所示的域关系表。步骤602将主对象保存到图3中的第一表300。处理603处理主对象以确定它是否包含附加字段;如果是,则处理603进入处理620;否则进入判定604。对于主对象的每个附加字段,判定620检查字段的扩展定义是否存在如图3中URL所指的第三表330中;如果是,则处理从判定620进入块处理622;如果不是,则表示它是新的扩展定义,步骤621将新扩展定义保存到图3的第三表330。步骤622通过将主第一表名称设置于PATH来创建PATH值:例如,PATH=300.并且步骤623将附加字段的VALUE,URL和PATH与主第一记录的主键一起添加到第二表320,如图3所示。在处理624中,确定主对象是否具有更多附加字段;如果是,则处理624返回处理620重复;否则,处理进入下一步骤604。在步骤604,确定主对象是否包含任何扩展字段;如果步骤604返回否,则处理进入下一步骤605以进行进一步处理,参见图7。否则,处理转到步骤630。
对于主对象的每个扩展字段,图3中的决策步骤630使用URL字段评估图3所示的第三表330是否具有其字段的扩展定义;如果评估结果为是,则进程从处理630到处理632;如果评估结果为否,则表示该是新的扩展定义,步骤631将新的扩展定义保存到图3所示的第三表330中;步骤632通过将主第一表名称和扩展字段名称设置到PATH来创建PATH值:例如,PATH=300.A100,其中A100是如图3所示的主第一表300的所定义字段名称。步骤633将扩展字段的VALUE,URL和PATH与主第一记录的主键一起保存到第二表320,如图3所示。在步骤634中,确定主对象是否存在更多扩展字段;如果结果为是,则返回步骤630重复;否则,处理进入下一步骤605,以进行图7中所描述的进一步处理。
图7是说明如何将各种扩展与域消息一起保存的数据流框图的第二部分。图7显示了如何处理子对象和复杂数据类型的扩展。步骤701启动将子对象和复杂数据类型的数据保存到图3和图5中所述的域关系表。步骤702测试子对象或复杂数据类型值是否包含附加字段;如果是,则处理转到步骤750,否则转到步骤703。对于子对象和复杂数据类型的每个附加字段的扩展,步骤750用于确定字段的扩展定义是否存在URL所指的扩展定义第三表330中,如图3所示;如果是,则处理从步骤750到步骤752;如果不是,则表示新的扩展定义,步骤751保存新的扩展定义在第三表300中;步骤752通过将主第一表名称和子对象名称或复杂数据类型名称设置于PATH来创建PATH值,例如,
PATH=300.301
PATH=300.301.500
其中1)300.301表示该扩展是图3中其父第一表300的子第一表301的附加字段;2)300.301.500表示该扩展是图3中其父第一表301的图5中复合类型第一表500的附加字段。步骤753将附加字段的VALUE,URL和PATH与主第一记录的子对象或复杂数据类型主键一起存储到第二表320.步骤754确定子对象和复杂数据类型对象中是否还有其他附加字段;如果是,步骤754可以追溯到步骤750重复;否则,处理进入下一步骤703。
步骤703测试子对象或复杂数据类型对象是否包含任何扩展字段;如果不是,则处理移至步骤704;否则它会移动到步骤760;步骤704确定主对象是否包含更多子对象和复杂数据类型对象;如果它有更多子对象或复杂数据类型数据,则处理返回步骤701以重复;否则处理进入步骤705并且域消息处理结束。
步骤760使用URL确定扩展字段的扩展定义是否在如图3所示的扩展定义第三表330中具有条目;如果是,则处理从步骤760到步骤762;如果不是,则表示新的扩展定义,步骤761将新扩展定义存储在第三表330中,如图3所示。步骤762通过将主第一表名称,子对象名称或复杂数据类型名称和扩展字段名称设置于PATH来创建PATH值:例如
PATH=300.301.A100
PATH=300.400.A200
PATH=300.301.400.A300
其中1)A100是图3中其父第一表300的子第一表301的扩展字段;2)A200是图5中复杂类型第一表500的扩展字段,其中500的父表第一表是图3中的300;3)A300是图3中父第一表301的复合型第一表500的扩展字段。步骤763将附加字段的VALUE,URL和PATH随子或复杂类型第一表的主第一记录的子对象或复杂类型和主键一同保存至第二表320,如图3所示。最后,步骤764测试子对象和复杂数据类型对象中是否有更多的扩展字段;如果是,则处理返回步骤760重复;否则处理移至步骤705并结束。
图8是说明如何检索各种扩展以及域消息的处理框图。801开始于根据用户定义的搜索标准从第一表中读取域记录。然后,对于每个域记录,步骤802使用主第一记录的主键从图3中的第二表301(扩展表)检索任何扩展。对于每个检索到的扩展,步骤803从第三表330(扩展定义表)中检索扩展定义;步骤804使用PATH确定扩展是主对象的扩展字段还是附加字段:例如,
PATH=300
PATH=300.A100
其中1)PATH=300表示该扩展是图3中主第一表300的附加字段;2)PATH=300.A100表示该扩展是图3中的主第一表300的扩展字段A100。
步骤805确定是否存在更多扩展。如果没有更多检索到的扩展,则处理进入下一步骤806;否则,它返回到步骤803进行迭代。步骤806使用子第一表或复合类型第一表的每个第一记录的主键或从图3所示的第二表320(扩展表)中检索任何扩展。对于每个检索到的扩展,步骤807从第三表330(扩展定义表)中检索扩展定义,并且步骤808使用PATH确定扩展是子或复杂类型第一表的扩展字段还附加字段,例如,
PATH=300.301
PATH=300.301.A100
PATH=300.500
PATH=300.500.A200
其中1)PATH=300.301表示该扩展是其图3中其父第一表300的子第一表301的附加字段;2)PATH=300.301.A100表示该扩展是其图3中其父第一表300的子第一表301的扩展字段A100;3)PATH=300.500表示该扩展是图3中其父第一表300的图5中复数类型第一表500的附加字段;4)PATH=300.500.A200表示该扩展是其父第一表300的子第一表500的扩展字段A200。
步骤809确定是否存在更多扩展。如果没有更多检索到的扩展,则处理移至步骤810;否则移至步骤807重复。步骤810测试是否存在更多检索到的域记录,如果还有更多,则处理返回步骤802以处理更多域记录;否则,处理结束。
以上实施例显示了本发明的要素。它可以通过添加更多字段和表,组合字段和表,组合或使用多层指针或链接,将数据模型的另一层次嵌入到标准定义数据模型等中来进一步一般化概括。用于扩展关系数据库的方法和系统因此公开包括创建一个或多个第一表,每个表包括唯一的表标识符ID,多个第一记录,每个第一记录包括主键,以及一个或多个第一字段,并且一些或所有第一字段具有一个或多个扩展,扩展重新定义第一字段的含义和/或数据类型,其与第一字段的默认或标准定义含义和/或数据类型不同;创建一个或多个具有一个或多个记录的第二表,每个记录具有一个或多个路径字段,路径字段由表标识符ID,字段标识符ID和主键组成,以标识具有带扩展的第一字段的第一记录,以及值字段;如果扩展定义了与默认数据类型不同的数据类型,值字段存储了第一字段扩展数据类型的值;如果扩展定义了与默认第一字段含义不同的含义,值字段存储了第一字段扩展含义;检索具有扩展的第一字段,使用第二表中的一个或多个PATH字段来标识第一字段,如果第一字段的数据类型被扩展,则从第二表中的VALUE字段中检索第一字段的值。如果第一个字段具有扩展含义,则从第二个表中的含义字段检索第一字段的含义。
此外,含义字段可以是指向第三表中的记录的指针字段;可以创建具有一个或多个记录的一个或多个第三表,其中每个记录存储由第二表中的一个或多个路径字段标识的第一字段的扩展的含义;并检索具有扩展的第一字段的含义,使用第二表中的一个或多个路径字段来识别第一字段,并在第二表中检索相应的指针,并使用所述指针来从第三表中检索第一字段的含义。
更新或写入记录或扩展字段的步骤类似,涉及在第二表中,如果使用单独的表也在第三表中,更新或写入,第一表中的第一个字段的路径,值和含义字段,例如,更新具有扩展的第一字段包括使用第二表中的一个或多个PATH字段来标识第一字段,以及更新第二表中的VALUE字段中的扩展的第一字段的值。第二表和第三表也可以组合成一个表,因此成为同一个表。在某些情况下,一个第二个表就足够了,但在其他情况下,当一个第二个表变得太大时,它可能被拆分成多个第二个表以提高性能。另外,第二级第二表和第三表可用于将第二级扩展字段添加到第二表和第三表中定义的扩展第一字段。
用于扩展关系数据库的方法和系统还包括创建一个或多个第一表,每个第一表包括唯一表标识符ID,多个第一记录,每个第一记录包括主键,以及一个或多个第一字段,以及一个或多个第一表的一些或全部第一记录被扩展。通过添加一个或多个附加的第一字段来实现扩展,附加第一字段不存储在第一记录中;创建具有一个或多个记录的一个或多个第二表,每个第二表记录都有一个或多个存储表标识符ID和主键的路径字段,用于标识具有一个或多个附加字段的第一个记录,一个或多个更多值字段,每个值字段存储第一记录的附加第一字段的值,以及定义附加第一字段含义的含义字段;检索第一记录的附加第一字段,包括使用第二表中的一个或多个路径字段来识别第一记录,从第二表中的值字段中检索附加第一字段的值,以及从第二表中含义字段检索第一字段附加的含义。
此外,含义字段可以是指向第三表中的记录的指针字段;可以创建具有一个或多个记录的一个或多个第三表,其中每个记录存储由第二表中的一个或多个路径字段标识的第一记录的附加第一字段的含义;并检索第一记录的附加第一字段的含义,包括使用第二表中的一个或多个路径字段来识别第一记录,并在第二表中检索相应的指针并使用所述指针从指针引用的第三表中来检索附加第一字段的含义。
更新或写入记录或附加字段的步骤类似,涉及更新或写入第二表和第三表如果使用单独的第三表,,第一表中的第一字段的路径,值和含义字段,例如,更新由附加第一字段扩展的第一记录,更新包括使用第二表中的一个或多个路径字段来标识第一记录,以及更新第二个表的值字段中第一记录的附加第一字段的值。
第二表和第三表也可以组合成一个表。在某些情况下,一个第二个表就足够了,但在其他情况下,当一个第二个表变得太大时,它可能被拆分成多个第二个表以提高性能。另外,第二级表和第三表可用于将第二级附加字段添加到第二表和第三表中定义的附加第一字段。
尽管前面已经给出了对本发明优选实施例的描述,描述或说明了本发明的基本创新特征或原理,但是应该理解,各种细节形式的遗漏、替换和变化。在不脱离本发明的精神的情况下,本领域技术人员可以做出所示的方法,元件或装置及其用途。因此,本发明的范围不应限于前述描述。相反,本发明的原理可以应用于广泛的方法,系统和装置,以实现本文所描述的优势并且实现其他优势或者也满足其他目的。

Claims (14)

1.一种扩展数据库关系表的高效扩展系统,其特征在于,包括:
域或标准定义的数据模型,包括原生和/或复杂数据类型的集合,以及子数据对象;
基于该域或该标准数据模型的一个或多个关系表,其中每个关系表具有一组字段和主键或唯一的复合键,各字段是原生数据类型或复杂数据类型或子数据对象,其中关系表的部分或所有记录具有一个或多个扩展,扩展重新定义一个或多个字段的默认内容或者将一个或多个附加字段添加到记录或关系表中;
用外键构造一种数据结构,用于表示多个关系表间的层次关系;
一个或多个扩展定义表存储扩展定义;和
一个或多个扩展表,用于存储一个或多个具有扩展的关系表的扩展记录,以及对扩展定义表中扩展定义记录的引用。
2.如权利要求1所述的数据库中关系表的高效扩展系统,其中扩展定义表和扩展表被组合成一个表。
3.如权利要求1所述的数据库中关系表的高效扩展系统,其中复杂数据类型是与一个或多个其他关系表相关联的关系表。
4.如权利要求1所述的数据库中关系表的高效扩展系统,包括第二级扩展表和扩展定义表,扩展定义表定义扩展字段的扩展。
5.一种用于扩展关系数据库的方法,其特征在于,包括:
创建一个或多个第一表,每个表包括唯一的表的标识符ID,多个第一记录和每个第一记录包括主键,以及一个或多个第一字段,并且一些或所有第一字段具有一个或多个扩展,扩展重新定义第一字段的含义和/或数据类型,扩展的第一字段与其第一字段的默认或标准定义的含义和/或数据类型不同;
创建一个或多个具有一个或多个记录的第二表,每个记录具有一个或多个路径字段和值字段,路径字段保存第一表的标识符ID,字段标识符ID和主键,以标识具有带扩展的第一个字段的第一个记录;如果扩展字段定义了与默认数据类型不同的数据类型,则第一个字段的扩展数据类型的值存储在值字段和/或如果扩展字段定义了第一个字段新的含义,则其新的含义定义在含义字段;和
检索具有扩展的第一字段包括使用第二表中的一个或多个路径字段来标识第一字段,如果第一字段具有扩展,则从第二表中的值字段检索第一字段的值数据类型,或者如果第一字段具有扩展含义,则从第二表中的含义字段中检索第一字段的含义。
6.如权利要求5所述的的用于扩展关系数据库的方法,还包括更新具有扩展的第一字段,该扩展包括使用第二表中的一个或多个路径字段来标识第一字段,以及通过更新第二表中的值字段的值来更新被扩展的第一字段的值。
7.如权利要求5所述的的用于扩展关系数据库的方法,其中含义字段是指向第三表记录的指针字段;并还包括
创建具有一个或多个记录的一个或多个第三表,以存储由第二表中的一个或多个路径字段标识的第一个字段的扩展含义;和
检索具有扩展的第一字段的含义包括使用第二表中的一个或多个路径字段来标识第一字段,并检索第二表中的相应指针并使用所述指针从所述指针引用的第三表中来检索第一字段的含义。
8.如权利要求7所述的的用于扩展关系数据库的方法,其中第二表和第三表组合成一个表。
9.如权利要求7所述的的用于扩展关系数据库的方法,还包括使用第二级第二表和第三表,其将第二级扩展字段添加到第二表和第三表中定义的扩展第一字段。
10.一种用于扩展关系数据库的高效扩展方法,其特征在于,包括:
创建一个或多个第一表,每个表包括唯一的表标识符ID,多个第一记录,每个第一记录包括主键,以及一个或多个第一字段,以及一个或多个第一表的一些或全部第一记录有扩展,通过添加一个或多个附加的第一字段实现扩展,附加的第一字段不存储在第一记录中;
创建一个或多个具有一个或多个记录的第二个表,每个记录都有一个或多个路径字段,路径字段存储表标识符ID和主键,路径字段用于标识扩展为具有一个或多个附加字段的第一记录,一个或多个更多值字段,每个值字段存储第一记录的附加第一字段的值,以及含义字段定义附加第一字段的含义;和
检索第一记录的附加第一字段包括使用第二表中的一个或多个路径字段来识别第一记录,从第二表中的值字段中检索附加第一字段的值,以及从第二表中的含义字段检索附加第一字段的含义。
11.如权利要求10所述的用于扩展关系数据库的方法,还包括更新由附加第一字段扩展的第一记录,包括使用第二表中的一个或多个路径字段来识别第一记录,以及更新第二表中的值字段中的第一记录的附加第一字段的值。
12.如权利要求10所述的用于扩展关系数据库的方法,其中,含义字段是指向第三表中的记录的指针字段;并还包括
创建具有一个或多个记录的一个或多个第三表,每个记录存储由第二表中的一个或多个路径字段标识的第一记录的附加第一字段的含义;和
检索第一记录的附加第一字段的含义包括使用第二表中的一个或多个路径字段来识别第一记录,并在第二表中检索相应的指针并使用所述指针从所述指针引用的第三表中来检索附加第一字段的含义。
13.如权利要求12所述的用于扩展关系数据库的方法,其中第二表和第三表组合成一个表。
14.如权利要求12所述的用于扩展关系数据库的方法,还包括使用第二级别的第二表和第三表,其将第二级别的附加字段添加到第二表和第三表中定义的附加第一字段。
CN201910740718.7A 2019-01-14 2019-08-12 数据库中关系表的高效扩展方法和系统 Pending CN111435347A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/246,954 US20200226011A1 (en) 2019-01-14 2019-01-14 Policy-based distributed transactional processing in a distributed system
US16/246,954 2019-01-14

Publications (1)

Publication Number Publication Date
CN111435347A true CN111435347A (zh) 2020-07-21

Family

ID=71517609

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910740718.7A Pending CN111435347A (zh) 2019-01-14 2019-08-12 数据库中关系表的高效扩展方法和系统

Country Status (2)

Country Link
US (1) US20200226011A1 (zh)
CN (1) CN111435347A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984745A (zh) * 2020-08-18 2020-11-24 平安国际智慧城市科技股份有限公司 数据库字段动态扩展方法、装置、设备及存储介质
CN112162731A (zh) * 2020-10-13 2021-01-01 广州乐摇摇信息科技有限公司 数据扩展方法、装置、存储介质及电子装置
CN112684986A (zh) * 2021-01-05 2021-04-20 中交智运有限公司 一种海量数据处理方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210390091A1 (en) * 2020-06-16 2021-12-16 Samsung Electronics Co., Ltd. Interactive continuous in-device transaction processing using key-value (kv) solid state drives (ssds)
CN112883014A (zh) * 2021-03-25 2021-06-01 上海众源网络有限公司 数据回溯方法、装置、计算机设备和存储介质
CN115729946A (zh) * 2022-11-24 2023-03-03 中电金信软件(上海)有限公司 一种处理分布式事务的方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8453163B2 (en) * 2009-06-29 2013-05-28 Software Ag Usa, Inc. Systems and/or methods for policy-based JMS broker clustering
CN102346460B (zh) * 2011-05-27 2013-11-13 运软网络科技(上海)有限公司 一种基于事务的服务控制系统及其控制方法
US10013447B2 (en) * 2014-05-29 2018-07-03 Splice Machine, Inc. Transaction execution commitment without updating of data row transaction status
US10896096B2 (en) * 2016-04-21 2021-01-19 International Business Machines Corporation Temporal logical transactions
US11163625B2 (en) * 2018-08-21 2021-11-02 Red Hat, Inc. Optimizing logging of decision outcomes in distributed transactions

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984745A (zh) * 2020-08-18 2020-11-24 平安国际智慧城市科技股份有限公司 数据库字段动态扩展方法、装置、设备及存储介质
CN111984745B (zh) * 2020-08-18 2024-04-16 平安国际智慧城市科技股份有限公司 数据库字段动态扩展方法、装置、设备及存储介质
CN112162731A (zh) * 2020-10-13 2021-01-01 广州乐摇摇信息科技有限公司 数据扩展方法、装置、存储介质及电子装置
CN112162731B (zh) * 2020-10-13 2021-10-22 广州乐摇摇信息科技有限公司 数据扩展方法、装置、存储介质及电子装置
CN112684986A (zh) * 2021-01-05 2021-04-20 中交智运有限公司 一种海量数据处理方法
CN112684986B (zh) * 2021-01-05 2023-01-24 中交智运有限公司 一种海量数据处理方法

Also Published As

Publication number Publication date
US20200226011A1 (en) 2020-07-16

Similar Documents

Publication Publication Date Title
CN111435347A (zh) 数据库中关系表的高效扩展方法和系统
US6732095B1 (en) Method and apparatus for mapping between XML and relational representations
US7873899B2 (en) Mapping schemes for creating and storing electronic documents
US9087138B2 (en) Method for representing and storing hierarchical data in a columnar format
US6381600B1 (en) Exporting and importing of data in object-relational databases
JP4604041B2 (ja) 集合値化された列とスカラ値化された列を単一のステートメントで修正するためのsql言語の拡張
US7698257B2 (en) Apparatus and method for recursively rationalizing data source queries
CN104035754A (zh) 一种基于xml的自定义代码生成方法及生成器
CN111324577B (zh) 一种Yml文件读写的方法及装置
JP2002318798A (ja) 構造化文書翻訳におけるユーザ制御可能なデータをグループ化する方法およびシステム
JP5241738B2 (ja) 表からツリー構造データを構築する方法及び装置
CN107066551B (zh) 一种树状数据的行式和列式存储方法及系统
US20070073675A1 (en) Database query translation
CN108829880B (zh) 一种光网络终端设备的配置管理的方法
CN114491172B (zh) 树形结构节点的快速检索方法、装置、设备及存储介质
US20200201834A1 (en) Systems and methods of efficient extensions of relational tables in a database
CN104951565B (zh) 一种基于内存数据库的xml配置维护方法及系统
US11080332B1 (en) Flexible indexing for graph databases
CN116257636A (zh) 枚举数据字典统一管理方法、装置、电子设备及存储介质
CN113779068B (zh) 数据查询方法、装置、设备及存储介质
US9959295B1 (en) S-expression based computation of lineage and change impact analysis
US20070220033A1 (en) System and method for providing simple and compound indexes for XML files
CN107045495B (zh) 一种基于描述的xml增量抽取方法
US8849866B2 (en) Method and computer program product for creating ordered data structure
EP4369212A1 (en) Scopes in process mining

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