CN103026354A - 用于具有多个架构的表的数据库存储的方法 - Google Patents

用于具有多个架构的表的数据库存储的方法 Download PDF

Info

Publication number
CN103026354A
CN103026354A CN2010800668291A CN201080066829A CN103026354A CN 103026354 A CN103026354 A CN 103026354A CN 2010800668291 A CN2010800668291 A CN 2010800668291A CN 201080066829 A CN201080066829 A CN 201080066829A CN 103026354 A CN103026354 A CN 103026354A
Authority
CN
China
Prior art keywords
record
framework
data
page
database
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
CN2010800668291A
Other languages
English (en)
Inventor
G.韦卡斯
J.克马达
J.萨尔瓦楚亚
A.莫佐
M.A.蒙哈斯洛伦特
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.)
Universidad Politecnica de Madrid
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Universidad Politecnica de Madrid
Telefonaktiebolaget LM Ericsson AB
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 Universidad Politecnica de Madrid, Telefonaktiebolaget LM Ericsson AB filed Critical Universidad Politecnica de Madrid
Publication of CN103026354A publication Critical patent/CN103026354A/zh
Pending legal-status Critical Current

Links

Images

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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • 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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/213Schema design and management with details for schema evolution support

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)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种在数据库中存储数据的方法,数据库定义表,以及数据包括至少一个记录。每个记录包括至少一个字段的值。该方法包括存储多个架构,每个架构定义与所述表相关联的相应的字段集合,其中,所述记录中的每个与标识所述架构之一的标识数据相关联。

Description

用于具有多个架构的表的数据库存储的方法
技术领域
本发明涉及在数据库中存储数据的方法,并且更具体地涉及在数据库中存储数据的方法,其中数据库中的表与多个架构(schema)相关联,多个架构定义与表相关联的相应的字段集合。
背景技术
许多现代应用要求存储大量数据。一般来说,数据被存储在一个或多个结构化的数据汇集中,一个或多个结构化的数据汇集被统称为数据库。为了管理存储在现代数据库中的大批数据,使用数据库管理***来促进数据库的创建和维护是常见的。
常见的数据库类型是关系数据库。关系数据库将数据表示为关系的汇集。每个关系包括多个元组,每个元组为共同的属性提供值。通过组织成行和列的表来逻辑地表示关系。表的每行表示关系的元组以及每列表示那个关系的属性。
将元组存储在计算机***中作为“记录”。每个元组属性值由记录内部的被称为字段的字节序列表示。
关系数据库管理***(RDBMS)执行用户应用提供的查询操作。查询操作是对在计算机的主存储器中存储的数据库记录来执行的。由于需要快速存取数据,主存储器通常由随机存取存储器(RAM)提供。尽管提供必要的快速存取时间,但是通常用于提供主存储器的RAM的类型是需要电力来存储信息的易失性存储技术。此外,RAM的相对高的成本意味着,对于相当大的数据库,主存储器不够大来存储数据库的所有表的所有记录。
因此,数据库表也被存储在辅助存储器中,辅助存储器通常由较慢的但是具有较大容量的、非易失性的诸如硬盘驱动器的存储设备来提供。
在想要读取或修改数据库的记录的情况下,首先确定那个记录是否存在于主存储器中。如果特定的记录不存在于主存储器中,则其位于辅助存储器中并将其复制到主存储器以用于处理。在主存储器没有足够的空闲空间来存储从辅助存储器复制的附加记录的情况下,有必要确定存储在主存储器中的哪个记录应该被排出(eject)以创建空间来存储从辅助存储器复制的附加记录。如果选择的从主存储器排出的记录在主存储器中的时候已经被修改,则将修改的记录复制回辅助存储器以便确保当记录从主存储器排出时不丢失改变。
数据以8个比特的汇集形式被存储在存储器中,每个汇集被称为字节。盘被逻辑地设置成由特定数量的字节组成的固定大小的组,固定大小的组通常被称为“块”。从盘中读取数据和将数据写入盘的操作被统称为I/O操作,以及在每个I/O操作中读取和写入整数数量的块通常是更有效率的。
将包括在数据库的表中的记录以组的形式存储,组被称为页。经常将数据库的页的大小选择为与数据库存储在其上的硬盘的块的大小相匹配。以这种方式,当在硬盘和主存储器之间以整页的方式复制数据库的记录,而不是以单独的记录的方式复制数据库的记录时,在主存储器和辅助存储器之间记录传递的效率可以得到最大化。也就是说,当需要特定的记录时,将包含那个记录的页从辅助存储器复制到主存储器。如果修改了记录,则将(包括修改的)整页从主存储器复制到辅助存储器。
常见的数据库管理方法在将任何数据加入数据库之前通过为每个表定义架构来为与特定的表相关联的记录定义固定的结构。这样的架构定义了多个字段,每个记录为多个字段提供值,以及还定义了每个字段的数据类型和其它类似的信息。
然而,当需要改变数据库的结构时出现问题。例如,用户应用可能希望将新的字段加入与特定的表相关联的记录、更改现有字段的格式或删除一个或多个现有的字段。尽管这样的变化可以经常被应用到已经包含数据的数据库上,但是当这完成时,有必要根据新结构来重新组织数据库中的所有数据。考虑到如果在这样的重新组织期间允许用户应用存取数据则有可能发生错误,通常有必要在重新组织期间防止对数据库进行存取。这导致由将数据库用于其操作的应用所提供的服务的服务中断,这样是不希望的,尤其对于那些具有严格的可用性要求的应用(例如,一天24小时,一星期7天)。
本发明的目的是消除或减轻以上概述的问题中的至少一些。
发明内容
根据本发明的第一方面,提供一种用于在数据库中存储数据的方法,数据库定义表以及数据包括多个记录,每个记录包括至少一个字段的值。该方法包括存储多个架构,每个架构定义与所述表相关联的相应的字段集合,以及将所述记录中的每个与标识所述架构之一的标识数据相关联。
存储定义与特定的表相关联的相应的字段集合的多个架构是有利的,因为与特定的表相关联的不同记录不需要共享相同的架构。可能有这种情况,特定的表的记录最初使用第一架构来定义,但是后来想要定义第二架构,第二架构将用于定义特定的表的另外的记录。通过使用以上描述的方法,在创建第二架构之前定义的记录可以继续根据第一架构来定义。这保证将与新的架构相关联的新的记录添加到表而无需更新已经存储在表中的数据。因此,使得更新表的结构的任务独立于更新已经与所述表相关联的数据的结构的任务,这消除了在改变数据库表的结构时对数据库中的数据执行大规模批量更新的需要。这提供包括缩短执行更新过程所花费的时间的多个优点。
也就是说,在一些常规的设置中,在使用ALTER TABLE(更改表)命令的情况下,更新特定的表的所有记录的结构。这在计算上是昂贵的并且通常至少要求在命令执行的同时防止用户应用的写操作(例如,***和更新操作);这对于一些应用可能是不可接受的。通过只是添加新的架构定义并允许根据旧的和新的架构来定义记录,实现相当大的好处。因此,有可能通过定义新的架构来在特定的表中定义新的字段。如果新创建的记录和更新的记录具有相关联的引用新的架构的标识数据,则它们可以包括新的字段。然而,其它的记录不需要包括新的字段,因为它们可以继续与引用早期架构的标识数据相关联。
所述架构中的每个可以具有相关联的架构标识符,以及标识数据可以包括架构标识符。例如,每个架构可以具有相关联的版本号,从而允许容易地区分特定的表的不同架构。
可以将多个架构存储在所述数据库的数据字典中。数据字典有时被称为***目录以及术语数据字典和***目录在本文中被类似地使用。数据字典通常包含关于数据库的表的信息,以及除了数据库表的架构之外,还可以包括指示表名称、索引名称的数据和对数据的完整性约束。
该方法还可以包括创建另外的架构,另外的架构定义与所述表相关联的数据的另外的字段集合,以及存储所述另外的架构。
该方法还可以包括读取所述记录之一和修改与所述读取的记录相关联的标识数据来标识所述多个架构中的另外一个。
多个记录可以具有共同的相关联的标识数据。也就是说,单项标识数据可以与多个记录相关联,指示所述多个记录中的每个与所述标识数据标识的架构相关联。例如,所述多个记录可以存储在一页或多页中。将所述记录中的每个与标识所述架构之一的标识数据相关联可以包括将标识数据与每页相关联以及每页中仅存储与所述架构之一相关联的记录,所述架构之一由与那页相关联的标识数据标识。也就是说,单项标识数据可以针对每页来存储以及可以与存储在那页中的所有记录相关联。
该方法可以还包括从第一页记录读取第一记录,所述第一页记录与标识第一架构的标识数据相关联,接收将用于更新所述第一记录的更新数据,以及在第二页记录中存储第二记录,所述第二记录是基于所述第一记录和所述更新数据以及所述第二页与标识第二架构的标识数据相关联。
每个记录可以与相应的标识所述多个架构之一的标识数据相关联。可以在每个记录中存储标识数据,例如在每个记录的首部中。
该方法还可以包括读取记录,所述记录与标识第一架构的标识数据相关联,接收将用于更新所述记录的更新数据,以及基于所述更新数据来更新所述记录并修改与所述记录相关联的标识数据以标识第二架构。
所述多个架构中的第一架构可以包括第一多个字段以及所述多个架构中的第二架构可以包括第二多个字段,所述第二多个字段包括所述第一多个字段和至少一个另外的字段。所述第二架构的所述至少一个另外的字段可以与至少一个缺省值相关联。备选地,第二多个字段可以是所述第一多个字段的子集。
根据本发明的第二方面,提供了一种从数据库读取记录的方法,数据库定义表以及数据包括多个记录,每个记录包括至少一个字段的值,数据库存储多个架构,以及每个架构定义与所述表相关联的相应的字段集合。该方法包括读取与所述记录相关联的标识数据以标识所述架构之一,以及基于所述标识的架构来读取所述至少一个记录。从数据库读取记录可以与来自所述数据库的用户的用于仅获得记录的数据内容和/或用于更新所述记录的内容的操作相关。
在本发明的第一方面的上下文中描述的特征可以应用到本发明的第二方面。
本发明的实施例能以任何方便的方式来实现,包括通过适合的计算机程序。因此,本发明的一些方面还提供承载计算机可读指令的计算机可读介质,计算机可读指令配置为当被载入到计算机装置中时执行如以上描述的方法。
还提供了计算机装置,包括存储器,存储处理器可读指令,以及处理器,配置为读取和执行存储在所述存储器中的指令。所述处理器可读指令包括控制处理器来执行如以上描述的方法的指令。
附图说明
现在参照附图来描述本发明的实施例,实施例仅作为示范,在附图中:
图1是根据本发明的实施例的配置为提供数据库的计算机***的示意图;
图2是用于实现常规数据库的结构的示意图;
图3是示出如何修改图2的结构来实现本发明的实施例的示意图;
图4是示出所进行的将表的架构添加到使用图3的结构实现的数据库的处理的流程图;
图5是示出所进行的从使用图3的结构实现的数据库读取记录的处理的流程图;
图6是示出所进行的在使用图3的结构实现的数据库中存储记录的处理的流程图;
图7是示出更新操作的两页的示意图;
图8是示出所进行的更新存储的记录的处理的流程图;
图9是命名为“水果”的表的两个架构的示意图;
图10是“水果”表的三个记录的示意图;以及
图11和12是“水果”表的示意图。
具体实施方式
图1示出设置为实现本发明的实施例的计算机1。计算机1包括由RAM提供的主存储器2和由硬盘驱动器提供的辅助存储器3。处理器4设置为读取并执行存储在主存储器2的第一逻辑部分5中的指令。由那些指令操控的数据被存储在主存储器2的第二逻辑部分6中。存储在主存储器2的第一逻辑部分5中的指令控制处理器4来在主存储器2的第二逻辑部分6和辅助存储器3之间复制数据等。
存储在主存储器2的第一逻辑部分5中的指令控制对存储在主存储器2中的数据的处理,存储在主存储器2中的数据构成存储在辅助存储器3中的关系数据库的一部分。关系数据库的数据以多页7的形式存储在主存储器2和辅助存储器3中,每页包括数据库记录形式的预定量的数据。在辅助存储器3和主存储器2之间以整页的方式传递数据。主存储器2不足够大来同时保存所有的页7。因此辅助存储器3用于存储所有的页7,以及当需要页7用于处理时,指令控制处理器4来将页7从辅助存储器3复制到主存储器2,并且当主存储器2中不再需要页7时,将页7复制回辅助存储器3以用于永久性存储。
图2示出包括记录9的两页8a和8b。页8a、8b均包括页首10a、10b,页首10a、10b包括多个被称为“槽(slot)”11的字段。每个槽存储在页内的存储特定的记录9的偏移。考虑到每个槽11可以存储由在页内的在特定的槽引用的记录之前的特定的记录的大小确定的偏移,以这种方式使用槽11允许使用可变长度的记录。以这种方式,不同的记录可以具有不同的大小,以及具体而言在不同的记录中与特定的字段相关联的数据可以占据不同量的空间。使用所描述的这类型存储,可以使用包括页标识符和槽标识符的记录标识符(rid)来方便地标识每个记录。例如在图2中示出的记录2具有标识页8a和槽2的rid。
为了允许处理器4执行的用户应用有效地定位特定的数据库表的特定的记录,使用被称为索引12的附加的数据结构。索引12是使用某一记录字段来作为排序标准的排序的记录引用的列表。每个数据库表具有至少一个索引来允许跨数据库表的所有记录的遍历。索引的排序标准是使用表的被称为‘键(key)’的非空值属性来建立的。每次将记录***表中或从表中删除记录,就更新相关联的表索引。在每个索引单元中保存记录标识符(rid)以允许在遍历索引时存取相应的记录。
存储的记录9包括与记录相关联的表定义的多个字段中的每个字段的值。例如,在图2的示例中,记录9与表13相关联。架构14与表13相关联并且被存储在数据字典15中(数据字典15有时也被称为***目录)。架构14指示与表13相关联的每个记录存储三个字段的数据值,以及表13的示意图示出每个记录包括三个数据值,三个字段中的每个字段一个数据值。更一般来说,数据字典15包含关于数据库的表的信息,以及除了以上描述的这类型的数据库表的架构之外,还包括指示表名称、索引名称的数据和对数据的完整性约束。数据字典还可以包括另外的信息,诸如数据库的表之间的关系的定义和数据库的用户存取许可。
图3示出根据本发明的实施例对图2的设置的修改。可以看出,数据字典15现在包括另外的架构16。第一架构14和第二架构16都与表13相关联,但是指定表13的相应的特性。更具体地,第二架构16包括表13的附加字段17的定义。因此与表13相关联的第一记录集合18的记录均包括第一架构14指定的三个字段的值,而与表13相关联的第二记录集合19的记录均包括如第二架构16指定的四个字段的值。将理解的是,在其它示例中,第二架构16可以仅包括第一架构14的字段的子集,从而允许移除过时的字段。
架构14、16均具有相关联的版本号,允许方便地标识每个架构。在以这种方式提供两个架构14、16的情况下,每个记录9设有版本号字段20以便标识根据其来定义记录的架构。以这种方式,可以为单个表提供多个不同的架构14、16,以及可以根据每个架构来定义和存储记录。这是特别方便的,因为另外的架构可以被添加到数据字典15以及接下来使用另外的架构之一的记录可以被添加,这些记录只是包括标识合适的架构的数据。
现在参照图4至图8来描述使用参照图3描述的结构所进行的处理。
图4是示出所进行的将架构添加到数据字典15的处理的流程图。该方法是通过处理器4执行存储在主存储器2的第一部分5中的指令来执行的。在步骤S11,定义表13的新的架构。新的架构,可以例如,定义表13的附加字段以及可以指定那个附加字段的缺省值。在步骤S12,确定与表13相关联的架构的当前最高版本号,并为新的记录架构选择下一个版本号。在步骤S13,将新的架构与合适的版本号一起添加到数据字典15。当已经以这种方式将新的架构添加到数据字典15时,可以存储与表13相关联的记录连同标识新的架构的版本号。
图5示出所进行的从表13中读取数据的处理。该处理是通过处理器4执行存储在主存储器2的第一部分5中的指令来执行的。在步骤S21,从索引12获得想要的记录的记录标识符。如以上讨论的,记录标识符包括页号和页内的槽号。在步骤S22进行尝试来在主存储器2中定位rid指示的页。在步骤S23进行检查来确定是否已经在主存储器2中成功定位rid指示的页。如果没有成功定位,则在步骤S24将标识的页从辅助存储器3载入到主存储器2中以及处理转到步骤S25。如果在步骤S22在主存储器2中定位到页,则处理从步骤S23直接转到步骤S25。
在步骤S25使用包括在rid内的槽号来在相关页内定位记录。在步骤S26读取记录的版本字段20以便确定与读取的记录相关联的架构。在步骤S27,从数据字典15获得与读取的版本号相关联的架构。在步骤S28,使用在步骤S27获得的读取的架构,依次读取记录的每个字段。具体而言,架构允许标识包括在记录中的字段,包括标识每个字段的开始和结束的位置,以便使得每个字段的值能够被读取。
图6的流程图示出所进行的将记录添加到数据库的处理。该处理是通过处理器4执行存储在主存储器2的第一部分5中的指令来执行的。在步骤S31从数据字典15获得与记录相关联的表的架构的最近的版本。以这种方式,当新的记录被添加到数据库时,那个新的记录与相关数据库表的最近添加的架构相关联。在步骤S32,标识适合存储新的记录的页。用于存储记录的页的标识将取决于将记录分配到页的方式。例如,如果每页存储与特定的数据库表的特定的架构相关联的记录,则存储根据相关的架构定义的记录的页被定位。合适的页的定位可以涉及将页从辅助存储器2复制到主存储器3中,或可以涉及创建完全新的页。然而,在页可以存储与不同的架构相关联的记录的情况下,如果在最近创建的页中有足够的空间可用,则最近创建的页可以用于存储记录,否则可以创建新的页。在步骤S33,将新的记录添加到定位的页,以及在步骤S34,将在步骤S31获得的与架构相关联的架构版本号写到新的记录。在步骤S35,更新索引12以便指示新的记录的存在以及以便指示存储记录的页号和槽号。
现在参照图7和8来描述所进行的更新记录的处理。
图7示出存储数据库记录的两页21a、21b。记录22将被更新。参见图8,在步骤S41读取记录22,以及在步骤S42获得将要用于更新记录22的更新数据。在步骤S43进行检查以确定与在步骤S41读取的记录相关联的版本号是否引用相关数据库表的最新架构。如果是引用相关数据库表的最新架构,则在步骤S44将更新数据用于更新页21a内的记录22。
然而,如果步骤S43的检查确定与在步骤S41读取的记录相关联的版本号不是最新版本号,则在步骤S45创建新的记录。在描述的示例中,在页21b中创建新的记录23,因为页21b用于存储与相关表的最新架构相关联的记录。在步骤S46基于在步骤S41读取的数据、在步骤S42获得的更新数据和相关表的最新架构来将数据写到新的记录。在步骤S47将标识最新架构的版本号写到记录23。在步骤S48记录22被标记为过时,使得在合适时可以运行过程以恢复用于存储记录22的空间。可以通过将“墓石(tomb-stone)”值写到记录的合适的字段来标记记录22过时。
处理从步骤S48转到步骤S49,其中更新索引12以指示记录被存储的位置。
在本发明的备选实施例中,即使在步骤S43确定在步骤S41读取的记录不是与架构的最新版本相关联,如果在步骤S42获得的更新数据不要求更新用于定义记录的架构(例如,更新数据不涉及不是由当前定义记录的架构的版本定义的字段),以及如果页21a有足够的空间来容纳要求的更新,则在页21a内更新记录22,而不是创建记录23。这在考虑到避免在新的页中创建新的记录的需要的一些情况中可以是有利的。
现在参照图9至图12提出使用以上描述的结构和方法实现的数据库的具体的示例。
图9示出与数据库中命名为“水果”的表相关联的第一架构和第二架构24、25。第一架构24定义命名为名称、颜色和重量的三个字段,定义这些字段中的每个的列位置,定义每个字段的数据类型和每个字段的缺省值。
图10示出存储根据第一架构24定义的三个记录的页26的一部分。页26包括通过三个记录在页26内的偏移来引用这三个记录的三个槽27。第一槽引用第一记录28,第一记录28开始于偏移零处并包括与其中名称字段具有值“苹果”的记录相关联的数据。第二槽引用第二记录29,第二记录29开始于偏移十三处并包括与其中名称字段具有值“草莓”的记录相关联的数据。第三槽引用第三记录30,第三记录30开始于偏移三十处并包括与其中名称字段具有值“菠萝”的记录相关联的数据。
在创建第一架构24和存储这三个记录28、29、30之后,使用参照图4描述的处理来创建第二架构25。可以看出,第二架构25定义参照第一架构24讨论的那三个字段,但是附加地定义“学名”字段。当已经以这种方式创建第二架构25时,如参照图5的处理所描述的,新创建的记录与第二架构25相关联。类似地,在以任何方式更新与第一架构24相关联的记录的情况下,可以如参照图7和图8所描述的将它更新来参考第二架构25。以这种方式,“水果”表包括与第二架构25相关联的一些记录和与第一架构24相关联的另一些记录,每个记录标识架构24、25之一。图11示出“水果”表的记录。可以看出,参照图10描述的三个记录31包括第一架构24定义的那三个字段的值,而具有名称字段值“李子”的新记录32包括第二架构25定义的那四个字段的值。然而,从图12可以看出,在更新操作之后,具有名称字段值“苹果”的记录是使用第二架构25来定义的而且现在包括附加字段“学名”的值。
前面的描述已经涉及其中每个记录具有相关联的用于标识存储的架构的版本号字段的实施例。在备选的实施例中,页可以包括版本号字段,而且这个字段可以用于将页内所有的记录与特定的架构版本相关联,由此消除每个记录包括它自己的版本号字段的需要。在这样的实施例中,将理解的是,特定的页中的所有记录都与特定的数据库表的共同架构相关联。
将理解的是,数据字典和因此以上讨论的架构在数据库内可以以任何方便的方式来内部地表示,而且不需要是如图9中所示的表格形式或者确实保存在单个结构中。也就是说,例如,每个架构可以在数据字典15内作为分离的(discrete)结构来存储。
以上已经描述了当记录成为过时的时候(例如,当以在新的页中创建新的记录这样的方式来更新记录时)记录被适当地标识为过时。当特定的页内的所有记录是过时的时候,可以释放用于容纳该页的存储空间以便允许那个存储空间用来存储其它数据。过程可以在后台运行以标识能以这种方式丢弃的页。此外,在一些实施例中,可以进行处理以便从包括过时的记录的页中移走非过时的记录,从而提前可以丢弃页的时间。
如果实现聚集索引,则通过聚集索引键排序的记录可以顺序地存储在单页中以允许通过仅存取那个单页来存取若干个连续的记录。在关系数据库中聚集索引的使用经常是重要的,因为当顺序地存取包含在数据库表中的所有记录时,这样的索引提供了大的性能优势。
在更新操作期间,以及当创建新的记录,而不是在新的页中***记录(如以上参照图7和图8描述的)时,如果记录包括架构标识符,在页内可以容纳可变长度记录而且页具有足够的空闲空间来容纳新的记录,则新的记录可以改为被重新分配到相同的页中。如果在特定的页内没有足够的空闲空间,则可以使用溢出页来避免将新的记录存储在与其相邻的记录完全不同的位置上。这样的方法允许通过使用聚集索引来达到的效率效益在本发明的实施例中保持。
以这种方式处理更新操作也是有利的,因为考虑到记录保持位于相同页的相同槽中,包含在索引中的rid(记录标识符)不需要作为更新操作的一部分来更新。
在使用聚集索引的情况下,当***新的记录时可以使用与以上刚描述的用于处理更新的过程类似的过程。更具体地,新的记录可以***由聚集索引的键确定的页中。如以上解释的,在页可以存储不同长度的记录的情况下,与不同架构相关联的记录可以被存储在单页内。
已经解释了以上描述的方法允许根据多个架构来定义与特定的表相关联的记录。在一些实施例中,根据除了最近定义的架构之外的架构来定义的记录可以被处理以便将它们更新成根据最近定义的架构来定义。这样的处理可以在数据库负载为低的时候进行。以这种方式更新所有的记录,使得数据库表趋于(converge to)根据最近定义的架构来定义,而不危及数据库性能。
将理解的是,在根据不同的架构来定义与特定的表相关联的不同记录的情况下,一些记录可以不包括在一个架构中而没有在另一个架构中定义的特定的字段的数据。有各种可以处理这样的遗漏数据的方法。例如,在新的架构将字段添加到表的情况下,在查询返回使用架构的早期版本定义的不包括那个字段的记录的情况下,返回的值可以是新的架构定义的缺省值。备选地,可以返回值,该值指示没有存储特定的字段的数据。
对于合适的技术人员来说,根据本文中的教导,本发明的各种修改和应用将是显而易见的,而不背离所附的权利要求书的范围。

Claims (15)

1. 一种在数据库中存储数据的方法,所述数据库定义数据关系的表以及所述数据包括多个记录,根据所述表的数据关系,每个记录包括至少一个字段的数据值,所述方法包括:
存储多个架构,每个架构定义与所述表相关联的数据的相应的字段集合;以及
将所述记录中的每个与标识所述架构之一的标识数据相关联。
2. 根据权利要求1所述的方法,其中,所述架构中的每个具有相关联的架构标识符,以及所述标识数据包括架构标识符。
3. 根据前面任何权利要求所述的方法,其中,所述多个架构存储在所述数据库的数据字典中。
4. 根据前面任何权利要求所述的方法,还包括:
创建另外的架构,所述另外的架构定义与所述表相关联的数据的另外的字段集合;以及
存储所述另外的架构。
5. 根据前面任何权利要求所述的方法,还包括:
读取所述记录之一;以及
修改与所述读取的记录相关联的标识数据来标识所述多个架构中的另外一个。
6. 根据前面任何权利要求所述的方法,其中,多个记录具有共同的相关联的标识数据。
7. 根据权利要求6所述的方法,其中,所述多个记录存储在一页或多页中,以及其中,将所述记录中的每个与标识所述架构之一的标识数据相关联包括:
将标识数据与每页相关联;以及
在每页中仅存储与所述架构之一相关联的记录,所述架构之一由与那页相关联的标识数据标识。
8. 根据权利要求7所述的方法,还包括:
从第一页记录读取第一记录,所述第一页记录与标识第一架构的标识数据相关联;
接收将用于更新所述第一记录的更新数据;以及
在第二页记录中存储第二记录,所述第二记录是基于所述第一记录和所述更新数据以及所述第二页与标识第二架构的标识数据相关联。
9. 根据权利要求1至4中的任何一项所述的方法,其中,将每个记录与标识所述架构之一的标识数据相关联包括在每个记录中存储相应的标识数据。
10. 根据权利要求9所述的方法,还包括:
读取记录,所述记录与标识第一架构的标识数据相关联;
接收将用于更新所述记录的更新数据;以及
基于所述更新数据来更新所述记录并修改存储在所述记录上的标识数据以标识第二架构。
11. 根据前面任何权利要求所述的方法,其中,所述多个架构中的第一架构包括数据的第一多个字段以及所述多个架构中的第二架构包括数据的第二多个字段,所述第二多个字段包括数据的所述第一多个字段和至少一个另外的字段。
12. 根据权利要求11所述的方法,其中,所述第二架构的所述至少一个另外的字段与至少一个缺省值相关联。
13. 一种从数据库读取记录的方法,所述数据库定义表以及数据包括多个记录,每个记录包括至少一个字段的值,所述数据库存储多个架构,每个架构定义与所述表相关联的相应的字段集合,所述方法包括:
读取与所述记录相关联的标识数据以标识所述架构之一;以及
基于所述标识的架构来读取所述至少一个记录。
14. 一种承载计算机可读指令的计算机可读介质,所述计算机可读指令配置为执行根据前面任何权利要求所述的方法。
15. 用于存储数据的计算机装置,所述装置包括:
存储器,存储处理器可读指令;以及
处理器,配置为读取和执行存储在所述存储器中的指令;
其中,所述处理器可读指令包括控制所述处理器来执行根据权利要求1-13中的任何一项所述的方法的指令。
CN2010800668291A 2010-03-17 2010-03-17 用于具有多个架构的表的数据库存储的方法 Pending CN103026354A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2010/053489 WO2011113488A1 (en) 2010-03-17 2010-03-17 Method for database storage of a table with plural schemas

Publications (1)

Publication Number Publication Date
CN103026354A true CN103026354A (zh) 2013-04-03

Family

ID=43244975

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010800668291A Pending CN103026354A (zh) 2010-03-17 2010-03-17 用于具有多个架构的表的数据库存储的方法

Country Status (4)

Country Link
US (1) US20130013648A1 (zh)
EP (1) EP2548134A1 (zh)
CN (1) CN103026354A (zh)
WO (1) WO2011113488A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106255962A (zh) * 2014-05-01 2016-12-21 斯凯孚公司 用于改进数据结构存储的***和方法

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9542439B1 (en) * 2013-06-14 2017-01-10 Emc Corporation Simplified query language for accessing metadata
US8938414B1 (en) * 2014-06-05 2015-01-20 GoodData Corporation Data abstraction layer for interfacing with reporting systems
US11275760B2 (en) 2014-10-28 2022-03-15 Microsoft Technology Licensing, Llc Online schema and data transformations
US10078676B2 (en) * 2015-04-06 2018-09-18 Sap Se Schema evolution in multi-tenant environment
EP3304954A4 (en) * 2015-05-29 2018-08-08 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for client side encoding in a data processing system
EP3356961B1 (en) 2015-10-02 2020-05-27 Google LLC Peer-to-peer syncable storage system
EP3561711A1 (en) 2015-10-02 2019-10-30 Google LLC Signatures of updates exchanged in a binary data synchronization protocol
US10296608B2 (en) 2015-10-02 2019-05-21 Google Llc Single table multi-schema data store in a key value store
US10387387B2 (en) * 2015-12-17 2019-08-20 Oracle International Corporation Enabling multi-tenant access to respective isolated data sets organized using different application schemas
US10956467B1 (en) * 2016-08-22 2021-03-23 Jpmorgan Chase Bank, N.A. Method and system for implementing a query tool for unstructured data files
CN108984720B (zh) * 2018-07-10 2021-06-22 上海达梦数据库有限公司 基于列存储的数据查询方法、装置、服务器及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050223022A1 (en) * 2004-04-02 2005-10-06 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
US20090144320A1 (en) * 2002-06-04 2009-06-04 Sap Ag Method for generating and using a reusable custom-defined nestable compound data type as database qualifiers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090144320A1 (en) * 2002-06-04 2009-06-04 Sap Ag Method for generating and using a reusable custom-defined nestable compound data type as database qualifiers
US20050223022A1 (en) * 2004-04-02 2005-10-06 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106255962A (zh) * 2014-05-01 2016-12-21 斯凯孚公司 用于改进数据结构存储的***和方法

Also Published As

Publication number Publication date
WO2011113488A1 (en) 2011-09-22
US20130013648A1 (en) 2013-01-10
EP2548134A1 (en) 2013-01-23

Similar Documents

Publication Publication Date Title
CN103026354A (zh) 用于具有多个架构的表的数据库存储的方法
US7299243B2 (en) System and method for controlling free space distribution by key range within a database
US8832159B2 (en) Systems and methods for asynchronous schema changes
US9177004B2 (en) Balancing data across partitions of a table space during load processing
US7693875B2 (en) Method for searching a data page for inserting a data record
US8396862B2 (en) Product join dynamic partition elimination for multilevel partitioning
US8386431B2 (en) Method and system for determining database object associated with tenant-independent or tenant-specific data, configured to store data partition, current version of the respective convertor
EP2077512A1 (en) Method and system for implementing an enhanced database
US10108690B1 (en) Rolling subpartition management
CN103714090A (zh) 多索引数据库事务处理方法及数据库
JP2013196565A (ja) データベース処理方法、及びデータベース処理装置
US6385616B1 (en) Time-versioned data storage mechanism
US8682872B2 (en) Index page split avoidance with mass insert processing
US20100185595A1 (en) Managing Product Information Versions
US20070198471A1 (en) Using query persistence for efficient subquery evaluation in federated databases
CN105512325A (zh) 多版本数据索引的更新、删除与建立方法及装置
US20090144221A1 (en) Dynamic time-dimension-dependent physical management on diverse media of very large event-recording data-store
US6768985B1 (en) Method and apparatus for administration of database partitions
JP2013519139A (ja) データ記憶方法
US8073823B2 (en) Database management program
CN101944123A (zh) 面向半导体制造装备功能仿真的批量配置文件管理方法
US20240193142A1 (en) Method of processing data in a database
US7010552B2 (en) Optimizing command execution in database systems that provide support for updatable scrollable cursors
Allen et al. Partitioning
Barczak et al. Tools and methods of databases optimization in Oracle Database 10g. Part 1. Tuning instance

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130403