一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

为数据库架构生成哈希树的制作方法

2022-06-09 01:18:22 来源:中国专利 TAG:

为数据库架构生成哈希树


背景技术:
技术领域
1.公开文本总体上涉及数据库架构,并且更具体地,涉及创建具有标识数据库架构的根哈希值(root hash value)的哈希树(或哈希值的层系)。
2.相关技术描述
3.现代数据库系统通常实施使用户能够以有组织的方式存储能被有效访问和操纵的信息采集的管理系统。在许多情况下,这些管理系统对被构造为标识信息片段之间的关系的关系数据库维护。存储在关系数据库中的信息通常被组织为表的集合,每个表由列和行组成,其中每个列限定对信息的分组。在关系数据库的背景中,表的结构(例如,形成表的列)以及它们如何相关是在数据库架构中指定的,该数据库架构为数据库中诸如表、视图、存储过程等对象提供逻辑分组。在数据库的整个生命周期中,随着添加其他表以及在结构上更改或删除旧表,数据库架构可能会经历各种更改。
附图说明
4.图1是示出根据一些实施方案能够创建哈希树的系统的示例性单元的框图,该哈希树具有可用于标识数据库架构的根哈希值。
5.图2是示出根据一些实施方案能够生成包括哈希树的快照的快照生成引擎的示例性单元的框图。
6.图3a是示出根据一些实施方案的具有可用于标识数据库架构的根哈希值的哈希树的示例性单元的框图。
7.图3b是示出根据一些实施方案的两个不同哈希树的示例性单元的框图。
8.图4是示出根据一些实施方案的包括示例性数据的示例性单元的框图,可以对该示例性数据进行哈希化(hashed)以创建具有根哈希值的哈希树。
9.图5是示出根据一些实施方案的可用于创建与快照相关联的状态的输入引擎的示例性单元的框图。
10.图6和图7是示出根据一些实施方案的涉及创建包括根哈希值的快照的示例性方法的流程图。
11.图8是示出根据一些实施方案的示例计算机系统的框图。
12.公开文本包括对“一个实施方案”或“实施方案”的引用。短语“在一个实施方案中”或“在实施方案中”的出现不一定指同一个实施方案。特定的特征、结构或特性可以以与公开文本一致的任何合适的方式组合。
13.在公开文本中,不同的实体(可以不同地称为“单元”、“电路”、其他组件等)可以被描述或称为“被配置”为执行一个或多个任务或操作。该表述——[实体]被配置为[执行一个或多个任务]——在此用于指结构(即,物理上的事物,例如电子电路)。更具体地,该表述用于表示该结构被布置为在操作期间执行一个或多个任务。即使结构当前未操作,也可以
说该结构被“配置为”执行某些任务。“被配置为通过网络进行通信的网络接口”旨在涵盖例如具有在操作期间执行该功能的电路的集成电路,即使所讨论的集成电路当前未被使用(例如,电源未连接到该集成电路)。因此,被描述或叙述为“被配置为”执行某一任务的实体是指物理上的事物,例如设备、电路、存储可执行以实现该任务的程序指令的存储器等。这个措辞在这里不是用来指无形的事物。因此,“被配置为”在此不用于指软件实体诸如应用编程接口(api)。
[0014]
术语“配置为”并不意味着“可配置为”。例如,未编程的fpga不会被认为是“被配置为”执行某一特定功能,尽管它可以是“可配置为”执行该功能,并且可以“被配置为”在编程之后执行该功能。
[0015]
如本文所使用的,术语“第一”、“第二”等用作它们前面的名词的标签,并不隐含任何类型的排序(例如,空间、时间、逻辑等),除非特别说明。例如,在具有八个处理核心的处理器中,术语“第一”和“第二”处理核心可用于指代八个处理核心中的任何两个。换言之,例如,第一处理核心和第二处理核心不限于处理核心0和1。
[0016]
如本文所使用的,术语“基于”用于描述影响决定的一个或多个因素。这个术语不排除可能影响决定的其他因素。即,决定可以仅基于指定因素或基于指定因素以及其他未指定的因素。考虑措辞“根据b确定a”。该措辞指定了b是用于确定a或影响a的决定的因素。该措辞并不排除a的决定还可以基于一些其他因素,例如c。该措辞还旨在涵盖仅基于b来确定a的实施方案。如本文所使用的,措辞“基于”因此与措辞“至少部分地基于”同义。
具体实施方式
[0017]
许多数据库系统能够创建它们所管理的数据库的数据库快照。术语“数据库快照”在本文中按照其在本领域中的普通和习惯含义来使用,指的是在创建数据库快照的时间点保存数据库的一部分或全部的状态的数据库结构。因此,数据库快照可用于重新创建与创建数据库快照的状态相对应的数据库的一部分或全部。但是在一些实现方式中,数据库快照不存储关于数据库的某些信息,诸如其数据库架构。当重新创建数据库的一部分或全部时,数据库系统可以使用已经存在的数据库架构。然而,如果数据库架构不同于创建快照时间点时的数据库架构,则数据库系统将可能遇到诸如数据损坏和系统崩溃等问题。
[0018]
例如,在多租户模型中,数据库系统在数据库中为多个租户存储数据。在某个时候,数据库系统可以生成租户数据库快照,该快照捕获特定租户在该时间点的所有数据。该数据库快照可用于例如在沙箱环境中或在不同数据库上重新创建租户作为租户迁移服务的一部分。如果沙箱环境或其他数据库的数据库架构不同(例如,某些表包括附加列),则租户的数据将不能在没有数据损坏或其他不希望出现的问题的情况下在该数据库架构下进行输入。因此,为了避免这些不希望出现的问题,可能需要确定两个数据库架构是否不同
[0019]
公开文本描述了用于确定数据库架构是否不同以及标识不同数据库架构如何不同的各种技术。在下文描述的各种实施方案中,数据库系统为存储在由数据库系统管理的数据库中的数据集合创建快照。在一些情况下,数据库系统可以响应于接收到来自另一系统诸如应用程序服务器或用户设备的请求而创建快照。在各实施方案中,作为创建快照的一部分,数据库系统将哈希函数应用于在限定数据库层系的数据库架构中指定的信息的不同部分,在该数据库层系中,数据库对象(例如,表)包括属性/列,属性/列本身包括特性(例
如,数据类型)。术语“哈希函数”在本文中是按照其在本领域中的普通和习惯含义来使用的,是指可用于将任意大小的数据映射到固定大小的值的函数。在各实施方案中,数据库系统将每个属性的一个或多个特性一同哈希化(即,通过应用哈希函数),以导出哈希值层系的第一层。术语“哈希值”在本文中是按照其在本领域中的普通和习惯含义使用的,是指通过将哈希函数应用于数据而导出的值。数据库系统可以将与同一数据库表相关的第一层的哈希值分组,并将哈希函数应用于各个组,以导出哈希值层系的第二层。然后,该过程可以继续(例如,通过将第二层的哈希值一同哈希化),直到最终导出根哈希值。因此,在一些实施方案中,该根哈希值可以代表整个数据库架构。在各实施方案中,数据库系统包括具有所创建的快照的哈希值的层系。
[0020]
在各实施方案中,当重新创建由快照标识的状态(例如,使数据库存储创建快照时由快照捕获的数据集合)时,数据库系统基于在其中存储快照数据的数据库的当前数据库架构而生成哈希值的第二层系。此后,数据库系统通过比较两个层系的根哈希值来确定与快照相关联的数据库架构是否不同于当前数据库架构。在两个根哈希值不同的情况下,数据库系统可以阻止与快照相关联的数据被存储在数据库中,因为这两个数据库架构不同。在各实施方案中,数据库系统比较两个层系的对应分支(或部分)以标识至少一个不同的分支。数据库系统可以向用户返回标识分支的应答,以便用户具体地了解两个数据库架构如何不同。
[0021]
这些技术有利地允许系统确定两个数据库架构是否不同。因此,系统可以阻止在不同的数据库架构下输入数据,从而防止出现诸如数据损坏之类的问题。例如,如果新的数据库架构缺少另一个数据库架构中限定的特定表的列,则当系统尝试将该数据从另一个数据库架构输入新的数据库架构时,与该列相关联的数据将丢失。公开文本中描述的技术还可以用于标识数据库架构之间的差异。这使得用户可以知道如何更新数据库架构,以便可以在该架构下正确地输入数据而不会损坏。现在将参照图1开始讨论这些技术的示例性应用。
[0022]
现在参照图1,示出了系统100的框图。系统100包括可通过硬件或硬件和软件程序的组合来实现的组件集合。在所示实施方案中,系统100包括具有数据库架构115的数据库110和具有快照130的数据库系统120,快照130是数据库110的快照。如进一步所示,快照130包括具有根哈希值145的哈希树140。在一些实施方案中,系统100可以以与所示方式不同的方式来实现。作为示例,系统100可以包括与数据库110交互的多个数据库系统120。
[0023]
在各实施方案中,系统100实现平台服务,该平台服务允许该服务的用户开发、运行和管理应用程序。作为示例,系统100可以是向由多租户系统托管的多个用户/租户提供各种功能的多租户系统。因此,系统100可以执行来自各种不同用户(例如,系统100的提供商和租户)的软件程序,以及向用户、数据库(例如,数据库110)和与系统100相关联的其他实体提供代码、网页和其他数据。如图所示,系统100包括数据库系统120,数据库系统120与数据库110交互来存储和访问与系统100相关联的用户的数据。
[0024]
在各实施方案中,数据库110是以允许访问、存储和操纵信息的方式组织的信息集合体。因此,数据库110可以包括允许数据库系统120对数据库110中的信息执行操作(例如,访问、存储等)的支持软件。数据库110可以由单个存储设备或在网络(例如,存储附加网络)上连接在一起并被配置为冗余地存储信息以阻止数据丢失的多个存储设备来实现。在一些
实施方案中,使用具有多层的日志结构的合并树(lsm树)来实现数据库110。层中的一个或多个可以包括数据库记录,这些数据库记录在被写入到在磁盘存储介质上维护的层之前被缓存在内存缓冲区中。这些数据库记录可对应于由数据库架构115限定的数据库表中的行。
[0025]
在各实施方案中,数据库架构115是限定如何在数据库110中组织数据以及如何使该数据的子集相关的信息集合体。即,数据库架构115可以是提供对数据库110内的对象逻辑分组的蓝图,例如数据库表、视图、存储过程等。如参考图2更详细地讨论的,在各实施方案中,数据库架构115(或数据库架构115的集合)限定为数据库110而维护的数据库表,包括构成那些数据库表的属性。例如,数据库架构115可以限定具有诸如名字、姓氏、电子邮件地址等属性(或列)的“客户”数据库表。这些属性中的每个可以与由数据库架构115限定的特性集合相关联。例如,“名字”属性可以与数据类型“char”相关联。
[0026]
在各实施方案中,数据库架构115限定数据库110中对象(例如,数据库表)之间的关系。作为示例,数据库架构115可以为数据库表限定外键,该外键通过用作对另一数据库表的主键的引用来将该数据库表链接到另一数据库表。数据库架构115还可以为数据库表限定可以用于唯一地标识该数据库表的每个记录的主键。在一些实施方案中,数据库架构115限定附加元数据,诸如在与由数据库架构115限定的数据库对象有关的某些事件发生时执行的数据库触发器。如下文更详细讨论的,数据库系统120使用数据库架构115中限定的各种信息(例如,数据库表、主键等)来生成哈希树140。
[0027]
在各实施方案中,数据库系统120执行各种操作以管理数据库110,包括数据存储、数据检索和数据操纵。这样,数据库系统120可以向希望与数据库110交互的其他系统提供数据库服务。这样的数据库服务可以包括访问和存储为了数据库110的数据库表而维护的数据。作为示例,应用程序服务器可以向数据库系统120发出事务请求,其包括指定将特定数据库记录写入数据库110用于特定数据库表的事务。如图所示,数据库系统120可以接收快照请求125来创建快照130。快照请求125可以是从用户或系统100的另一组件接收的,并且可以指定要为其创建快照130的系统100的特定租户。在一些实例中,数据库系统120可以以周期性的时间间隔或响应于除接收快照请求125之外的某些事件(例如,在将一批记录写入数据库110之后)来创建快照130。
[0028]
在各实施方案中,快照130是在特定时间点(通常,当创建数据库快照130时)保存数据库110的一部分或全部的状态的数据库构念。在一些实施方案中,快照130可以是租户快照,其保存关于数据库110的与对应租户相关联的状态。例如,快照130可以标识在特定时间点存储在数据库110内的租户的数据的一部分或全部,而不是与其他租户相关联的数据。因此,在各实施方案中,快照130可用于重建快照130被创建时已存在的数据库110的数据的一部分或全部。继续前面的示例,数据库系统120可以将数据库110恢复到其存储创建快照130时的特定时间点已存在的租户数据时的状态。由于这种能力,如果发生了数据损坏,快照130可用于修复数据库110。快照130还可用于测试目的——例如,将租户的数据输入到与测试环境相关联的数据库110中。
[0029]
然而,在各实施方案中,快照130并不标识数据库架构115的状态。即,快照130并不标识由数据库架构115限定的元数据。因此,当使用快照130来重新创建所保存的状态时,数据库系统120可以使用创建快照130时已经存在的数据库架构115(即,是当前版本)。在一些实例中,可以将快照130长时间存储。在该时间期间,可以改变数据库架构115——例如,可
以将新的属性添加到现有的数据库表。在其他实例中,快照130可用于为创建该快照130所针对的那个数据库以外的数据库重新创建保存的状态。例如,作为租户迁移服务的一部分,租户的数据可以从第一数据库移到第二数据库。因此,可以基于第一数据库创建快照130。然而,第二数据库110可以具有与第一数据库不同的数据库架构115。因此,在任一实例中,如果正在使用的数据库架构115不同于与快照130相关联的数据库架构,则数据库系统120可能不能重新创建由快照130保存的状态。
[0030]
考虑到这些缺点,本发明发明人已经意识到不仅需要检测两个数据库架构是否不同,而且需要检测架构中不同的具体部分。为了解决这个问题,发明人已经提出将架构哈希树与数据库架构115相关联。该架构哈希树包括唯一地标识特定数据库架构115的根哈希值,并且可以与其他根哈希值进行比较,以确定那些其他根哈希值是否标识相同的特定数据库架构115或其他数据库架构115。如图1所示,数据库110的快照130中包括了哈希树140,使得当使用快照130(例如,将租户的数据输入到数据库110中)时,数据库系统120可以确定当前存在的数据库架构115是否不同于创建快照130所针对的数据库架构。
[0031]
在各实施方案中,哈希树140是哈希值的层系,该哈希值的层系包括对应于数据库架构115的根哈希值145。通过比较哈希树140的哈希值和对应于另一数据库架构115的另一哈希树140的哈希值,可以使用哈希树140来确定其对应的数据库架构115是否以及如何不同于另一数据库架构115。作为示例,如果这两个哈希树140的根哈希值145是不同的值,则它们对应的数据库架构115是不同的。在各实施方案中,如果两个哈希树140是不同的,则数据库系统120遍历每个哈希树140的分支,并且比较每个哈希树140之间的对应哈希值。(关于分支之间的差异的示例参照图3b进行讨论)。基于哈希值的差异,数据库系统120可以标识两个数据库架构115所不同的具体部分。例如,数据库系统120可以标识第二数据库架构115限定了用于由两个数据库架构115限定的数据库表的附加属性。
[0032]
在各实施方案中,数据库系统120通过将哈希函数应用于数据库架构115中限定的元数据的各部分来创建哈希树140。在一些实施方案中,数据库系统120将每个属性的特性一同哈希化来创建哈希树140的初始层。如果快照130是数据库110的特定租户的租户快照,则数据库系统120可以仅对与该特定租户相关联的那些表的属性进行哈希化。然后,数据库系统120可以将哈希函数应用于初始层的一组哈希值,其中这些哈希值对应于相同的数据库表/对象。结果,创建了哈希树140的第二层。数据库系统120可以应用接收第二层的所有哈希值作为输入的哈希函数,以便生成根哈希值145。在各实施方案中,创建哈希树140之后,数据库系统120包括所创建的具有快照130的哈希树140。因此,当使用快照130时,数据库系统120可以使用哈希树140来确定当前数据库架构115是否不同于前文所述的与快照130相关联的数据库架构115。以这种方式,数据库系统120可以防止使用快照130时发生数据损坏和其他问题。
[0033]
现在参照图2,示出了示例性数据库架构115和示例性数据库系统120的框图。在所示实施方案中,数据库架构115包括具有属性220的数据库表210,属性220包括特性230。同样如图所示,数据库系统120包括具有哈希函数245的快照生成引擎240。在一些实施方案中,数据库架构115和/或数据库系统120可以以与所示方式不同的方式实现。作为示例,快照生成引擎240可以包括多个哈希函数245。
[0034]
如前所述,在各实施方案中,数据库架构115是提供对存储在数据库110中的数据
结构化的信息集合体。如图所示,数据库架构115限定数据库表210、属性220和特性230。在各实施方案中,该信息可用于生成唯一地标识数据库架构115的哈希树140。
[0035]
数据库架构115限定了用于组织数据库110的数据的数据库表210的集合。在各实施方案中,数据库表210由列和行组成,其中每一列限定信息的字段,每一行提供可以包括该字段的值的记录。在各实施方案中,数据库表210的列对应于由数据库架构115限定的属性220。例如,“产品”数据库表210可以包括“价格”属性220,“价格”属性220是该产品数据库表210的列。产品数据库表210可以包括其他属性220,例如“产品id”属性220、“产品名称”属性220、“产品数量”属性220等。这样,产品数据库表210的记录可以限定产品id值、产品名称值、价格值和产品数量值。
[0036]
如进一步所示,属性220与特性230的集合相关联。在各实施方案中,特性230标识其对应属性220的特征。例如,特性230可以包括属性的名称(例如“产品名称”)、属性的数据类型(例如char)、数据类型的最大长度(例如20个字符)、是否接受空值、属性是否被用作主键等。特性230可以以基于文本的格式来表达,该格式允许将哈希函数应用于特定属性220的部分或全部特性。
[0037]
在各实施方案中,快照生成引擎240是可执行用于创建包括哈希树140的快照130的软件程序的集合。创建哈希树140时,快照生成引擎240最初可以从数据库110或另一存储区域检索数据库架构115。在各实施方案中,为了创建哈希树140,快照生成引擎240为每个属性220向哈希函数245提供该属性220的一个或多个特性230,以导出哈希值。(在各实施方案中,哈希函数245是适合于生成哈希值的非加密哈希函数。哈希函数245可以例如是“murmurhash”函数。)哈希树140的底层可包括哈希值的集合,每个哈希值对应于数据库架构115中限定的相应属性220。
[0038]
生成哈希树140的底层之后,快照生成引擎240可以对底层的每个哈希值进行分组,使得给定的组包括与相应的数据库表210相关联的哈希值。在一些实施方案中,快照生成引擎240针对每个组将该组的哈希值提供给哈希函数245作为输入以导出哈希值。哈希树140的下一层可以包括哈希值的集合,每个哈希值对应于相应的数据库表210。在各实施方案中,快照生成引擎240将该下一层的哈希值提供给哈希函数245作为输入,以导出根哈希值145。生成快照130之后,快照生成引擎240可以将哈希树140合并到快照130中。作为示例,可以将哈希树140存储在快照130的“指纹”字段中。在一些实施方案中,只有根哈希值145可以被包括在快照130中。
[0039]
现在参考图3a,示出了示例性哈希树140的框图。在所示实施方案中,哈希树140包括具有属性哈希值310a-e的第一层、具有数据库表哈希值320a和320b的第二层以及具有根哈希值145的第三层。如进一步所示的,属性哈希值310a-e是基于特性230a-o的。在一些实施方案中,哈希树140可以以与所示方式不同的方式来实现。作为示例,哈希树140可以不包括哈希值的第二层。
[0040]
在各实施方案中,属性哈希值310是对应于属性220的哈希值。可以通过将哈希函数245(或哈希函数245的集合)应用于与属性哈希值的对应属性220相关联的一个或多个特性230来生成属性哈希值310。如图所示,属性哈希值310a是通过将特性230a-c一同哈希化而生成的。在各实施方案中,不提供特定特性230作为哈希函数245的输入。例如,诸如属性名称之类的人类可读特征或对象创建的顺序可以不是输入到哈希函数245的输入。因此,以
这种方式,哈希树140可以对人类可读特征不敏感。
[0041]
在各实施方案中,表哈希值320是对应于数据库表210的哈希值。可以通过将哈希函数245(或哈希函数245的集合)应用于对应于表哈希值的关联数据库表210的属性哈希值310a来生成表哈希值320。如图所示,表哈希值320a是通过将属性哈希值310a-c一同哈希化而生成的。在各实施方案中,根哈希值145是唯一地对应于数据库架构115的哈希值。可以通过将哈希函数245(或哈希函数245的集合)应用于适当的哈希树140的所有表哈希值320来生成根哈希值145。如图所示,根哈希值145是通过将表哈希值320a和320b一同哈希化而生成的。
[0042]
由于哈希树140的顶层和中间层将其子级的哈希值合并作为参数,因此数据库系统120不仅可以标识是否发生了不匹配,还可以标识在何处发生了不匹配。例如,如果特性230a被修改,则这将导致属性哈希值310a不同,进而导致表哈希值320a不同,因此导致根哈希值145不同。因此,数据库系统120可以标识出特定分支包括与另一哈希树140的对应分支不同的哈希值。这样,数据库系统120可以遍历到该特定分支的末端,以标识哪个属性220是不同的。在一些情况下,数据库系统120可以标识其他数据库架构115中不存在的分支。
[0043]
现在参照图3b,示出了两个示例性哈希树140的框图。在所示实施方案中,哈希树140a不同于哈希树140b。虽然哈希树140a和140b都包括如图所示的相同的属性哈希值310b和表哈希值320b,但是哈希树140a包括与哈希树140b不同的属性哈希值310a、表哈希值320a和根哈希值145a,哈希树140b包括属性哈希值310c、表哈希值320c和根哈希值145b。
[0044]
数据库系统120可以首先将哈希树140a的根哈希值145a与哈希树140b的根哈希值145b进行比较。由于根哈希值145a的值2843不同于根哈希值145b的值3492,因此哈希树140a的数据库架构115不同于哈希树140b的数据库架构115。数据库系统120可以通过分析两个哈希树140的对应分支(例如,分支330a与分支330b)来确定两个数据库架构115有何不同。如图所示,属性哈希值310a是通过对特性230a进行哈希化而生成的,而对应的属性哈希值310c是通过对特性230d进行哈希化而生成的。这导致表哈希值320a不同于表哈希值320c,并且根哈希值145a不同于根哈希值145b。结果,如图所示,分支330a不同于分支330b。在数据库系统120确定了分支330a不同于分支330b之后,数据库系统120可以进一步确定是什么导致了不同。这样,数据库系统120可以标识特性230a不同于特性230c。数据库系统120可以将该信息提供给系统100的用户以用于评估。
[0045]
现在参照图4,示出了以javascript对象符号(json)格式存储的哈希树140的一部分的示例的框图。将json格式用作示例;哈希树140可以以其他分层格式存储。所示出的哈希树140的部分对应于数据库表210。如图所示,数据库表210包括三个属性220a-c。因此,三个属性哈希值310a-c是基于这三个属性220的特性230生成的。数据库表210可以与索引相关联。在各实施方案中,将该索引的特性进行哈希化以形成索引哈希值410。可以将索引哈希值410作为输入与适当的属性哈希值310一起提供到哈希函数245中,以生成表哈希值320。作为示例,索引哈希值410和属性哈希值310a-c可以被一同哈希化来生成表哈希值320。
[0046]
现在参照图5,示出了能够使用快照130来将数据存储在数据库110中的示例性数据库系统120的框图。在所示实施方案中,数据库系统120包括输入引擎510。在一些实施方案中,数据库系统120可以以与所示方式不同的方式来实现。例如,输入引擎510能够生成哈
希树140b,而不是接收哈希树140b。
[0047]
在各实施方案中,输入引擎510是可执行用于使用所接收到的快照130在数据库110中存储数据的软件程序的集合。例如,输入引擎510可以对快照130进行解串行化(deserialize)并用它来形成租户——例如,通过在数据库110内重新创建租户的数据。如图所示,输入引擎510可以接收具有基于数据库架构115a创建的哈希树140a的快照130。快照130可以作为将数据输入到数据库110的输入请求的一部分而被接收。响应于该请求,输入引擎510可以导致创建基于数据库架构115b的哈希树140b——例如,通过与快照生成引擎240通信。
[0048]
创建了哈希树140b之后,输入引擎510可以将哈希树140a的根哈希值145与哈希树树140b的根哈希值145进行比较。如果这两个根哈希值145匹配,则输入引擎510可以继续将由快照130标识的数据输入到数据库110。如果两个根哈希值145不匹配,则输入引擎510可以不将所标识的数据输入到数据库110。输入引擎510可以返回指示输入快照130所标识的数据成功或失败的应答。在一些实施方案中,输入引擎510可以遍历哈希树140a和140b两者,以标识两个哈希树之间的什么哈希值是不同的。作为返回的应答的一部分,输入引擎510可以指示哈希树140a和140b如何不同——例如,通过标识哪些哈希值是不同的。
[0049]
现在参照图6,示出了方法600的流程图。方法600是由计算机系统(例如数据库系统120)执行用于创建快照(例如快照130)的方法的一个实施方案,该快照(例如快照130)包括根哈希值(例如根哈希值145),根哈希值标识数据库(例如数据库110)的第一数据库架构(例如数据库架构115)。在各种情况下,方法600可以通过执行存储在非瞬态计算机可读介质上的程序指令集合来执行。在一些实施方案中,方法600包括更多或更少的步骤——例如,方法600可包括计算机系统响应于确定第一数据库架构的根哈希值与第二数据库架构的根哈希值匹配而在第二数据库架构下存储(快照中捕获的)数据集合的步骤。
[0050]
方法600开始于步骤610,计算机系统接收用于为存储在具有第一数据库架构的数据库中的数据集合创建快照的请求(例如,快照请求125)。第一数据库架构可以限定多个数据库表(例如,数据库表210)。给定的数据库表可以与属性集合(set of attributes)(例如,属性220)相关联。给定的属性与特性集合(set of properties)(例如,特性230)相关联。在步骤620,响应于接收到请求,计算机系统为数据集合创建快照。
[0051]
在步骤622,作为创建快照的一部分,计算机系统基于第一数据库架构生成哈希值的第一层系(例如,哈希树140),哈希值的第一层系包括用于第一数据库架构的第一根哈希值。作为生成哈希值的第一层系的一部分,计算机系统可以针对给定的属性将哈希函数(例如,哈希函数245)应用于给定属性的特性集合中的一个或多个,以导出形成哈希值的第一层的一部分的哈希值(例如,属性哈希值310)。哈希值的第一层中所包含的特定哈希值集合可以对应于多个数据库表中的特定数据库表。作为生成哈希值的第一层系的一部分,计算机系统可以将哈希函数应用于该特定哈希值集合,以导出形成哈希值的第二层的一部分的哈希值(例如,数据库表哈希值320)。计算机系统可以将哈希函数应用于哈希值的第二层中所包含的哈希值,以导出第一根哈希值。
[0052]
在步骤624,作为创建快照的一部分,计算机系统与快照一起包括哈希值的第一层系。哈希值的第一层系可用于确定第一数据库架构是否不同于第二数据库架构。快照可用于将数据集输入到与沙箱环境相关联的数据库中。
[0053]
在一些实施方案中,计算机系统基于快照接收将数据集输入到具有第二数据库架构的数据库的第二请求。响应于该第二请求,计算机系统可以生成哈希值的第二层系,哈希值的第二层系包括用于第二数据库架构的第二根哈希值。计算机系统可以将第一根哈希值与第二根哈希值进行比较,以确定第一数据库架构是否不同于第二数据库架构。响应于确定第一数据库架构不同于第二数据库架构,计算机系统可以阻止将数据集合输入到具有第二数据库架构的数据库。计算机系统可以返回对第二请求的应答,该应答标识第一数据库架构与第二数据库架构之间的至少一个差异。
[0054]
在一些情况下,计算机系统可以在第一层系的哈希值的第一层与第二层系的哈希值的第一层之间标识至少一个不同的哈希值。至少一个不同的哈希值可以指示第一数据库架构与第二数据库架构之间的至少一个差异。第二数据库架构可以限定用于特定数据库表的属性,而第一数据库架构不限定用于该特定数据库表的属性。
[0055]
现在参照图7,示出了方法700的流程图。方法700是由计算机系统(例如,数据库系统120)执行的用于创建快照(例如快照130)的方法的一个实施方案,该快照具有标识数据库(例如,数据库110)的数据库架构(例如数据库架构115)的根哈希值(例如,根哈希值145)。在各种情况下,方法700可以通过执行存储在非瞬态计算机可读介质上的程序指令集合来执行。在一些实施方案中,方法700包括更多或更少的步骤——例如,方法700可包括计算机系统向另一计算机系统发送特定租户快照的步骤,该另一计算机系统管理具有第二数据库架构的第二数据库。另一计算机系统能够基于第二数据库架构生成第二哈希树,并将第二哈希树的第二根哈希值与特定租户快照中包括的第一根哈希值进行比较,以确定第一数据库架构是否不同于第二数据库架构。
[0056]
方法700开始于步骤710,计算机系统为存储用于计算机系统多个租户的数据的数据库维护第一数据库架构。第一数据库架构可以包括限定多个数据库表(例如,数据库表210)的元数据。作为限定多个数据库表的一部分,元数据可以限定属性集合(例如,属性220)以及用于这些属性之中每个的特性集合(例如,特性230)。
[0057]
在步骤720,计算机系统接收创建存储在数据库中的数据的租户快照(例如,快照130)的请求(例如,快照请求125)。租户快照可以与计算机系统的多个租户中的特定一个相关联。
[0058]
在步骤730,计算机系统创建标识特定租户的数据但并不标识第一数据库架构的元数据的特定租户快照。在一些情况下,多个数据库表中的特定数据库表可以存储该特定租户的数据的一部分和多个租户中的第二特定租户的数据。这样,特定租户快照可以标识该特定租户的数据的一部分,但并不标识存储在特定数据库表中的第二特定租户的数据。
[0059]
在步骤732,作为创建特定租户快照的一部分,计算机系统基于第一数据库架构生成第一哈希树(例如,哈希树140),第一哈希树包括对应于第一数据库架构的第一根哈希值。
[0060]
在步骤734,作为创建特定租户快照的一部分,计算机系统包括与特定租户快照一起包括第一哈希树。第一根哈希值可用于确定第一数据库架构是否不同于第二数据库架构。
[0061]
在各实施方案中,计算机系统可以接收用于使第二数据库(其可以是步骤710中提到的数据库)存储由特定租户快照标识的特定租户的数据的请求。第二数据库可以在第三
数据库架构下存储数据。因此,计算机系统可以确定第一数据库架构是否不同于第三数据库架构。作为确定过程的一部分,计算机系统可以基于第三数据库架构生成第二哈希树,该第二哈希树包括对应于第三数据库架构的第二根哈希值。计算机系统可以将第二根哈希值与第一根哈希值进行比较。响应于确定第一数据库架构与第三数据库架构不同,计算机系统可以阻止特定租户的数据存储在第二数据库。在一些实施方案中,计算机系统可以遍历第一哈希树的一个或多个分支以及第二哈希树的一个或多个对应分支,以标识第一哈希树与第二哈希树之间哈希值的差异集合。
[0062]
示例性计算机系统
[0063]
现在参照图8,示出了可以实现系统100、数据库110和/或数据库系统120的示例性计算机系统800的框图。计算机系统800包括经由互连860(例如,系统总线)联接到系统存储器820和i/o接口840的处理器子系统880。i/o接口840联接到一个或多个i/o设备850。计算机系统800可以是各种类型的设备中的任一种,包括但不限于:服务器系统,个人计算机系统,台式计算机,膝上型或笔记本型计算机,主计算机系统,平板计算机,手持式计算机,工作站,网络计算机,消费设备诸如移动电话、音乐播放器或个人数字助理(pda)。尽管为了方便起见在图8中示出了单个的计算机系统800,但是系统800也可以被实现为一起操作的两个或更多计算机系统。
[0064]
处理器子系统880可以包括一个或多个处理器或处理单元。在计算机系统800的各实施方案中,处理器子系统880的多个实例可以联接到互连860。在各实施方案中,处理器子系统880(或880内的每个处理器单元)可以包含缓存或其他形式的板载存储器。
[0065]
系统存储器820可用于存储可由处理器子系统880执行以使系统800执行本文所述的各种操作的操作指令。系统存储器820可以使用不同的物理存储器介质来实现,例如硬盘存储器、软盘存储器、可移动磁盘存储器、闪存、随机存取存储器(ram-sram、edo ram、sdram、ddr sdram、rambus ram等)、只读存储器(prom、eeprom等)等。计算机系统800中的存储器不限于主存储器诸如存储器820。相反,计算机系统800还可以包括其他形式的存储器,例如处理器子系统880中的高速缓冲存储器和i/o设备850上的辅助存储器(例如,硬盘驱动器、存储阵列等)。在一些实施方案中,这些其他形式的存储器还可以存储可由处理器子系统880执行的程序指令。在一些实施方案中,执行时实现快照生成引擎240、哈希函数245和输入引擎510的程序指令可被包括/存储在系统存储器820内。
[0066]
根据各实施方案,eo接口840可以是被配置为联接到其他设备并与其他设备通信的各种类型的接口中的任一种。在一个实施方案中,i/o接口840是从前端到一个或多个后端总线的桥接芯片(例如,南桥)。eo接口840可以经由一个或多个相应的总线或其他接口联接到一个或多个eo设备850。i/o设备850的示例包括存储设备(硬盘驱动器、光盘驱动器、可移动闪存驱动器、存储阵列、san或其相关联的控制器)、网络接口设备(例如,到局域网或广域网)或其他设备(例如,图形、用户接口设备等)。在一个实施方案中,计算机系统800经由网络接口设备850联接到网络(例如,被配置为通过wifi、蓝牙、以太网等进行通信)。
[0067]
本技术主题的实现包括但不限于以下实施例1至20。
[0068]
1、一种方法,其包括:
[0069]
由计算机系统接收用于为存储在具有第一数据库架构的数据库中的数据集合创建快照的请求;
[0070]
响应于接收到请求,计算机系统为数据集合创建快照,其中创建包括:
[0071]
基于第一数据库架构,生成哈希值的第一层系,哈希值的第一层系包括用于第一数据库架构的第一根哈希值;以及
[0072]
与快照一起包括哈希值的第一层系,其中哈希值的第一层系能用于确定第一数据库架构是否不同于第二数据库架构。
[0073]
2、根据实施例1的方法,其中第一数据库架构限定多个数据库表,给定的数据库表与属性集合相关联,并且给定的属性与特性集合相关联。
[0074]
3、根据实施例2的方法,其中,生成哈希值的第一层系包括:
[0075]
针对给定的属性,将哈希函数应用于给定属性的特性集合中的一个或多个以导出形成哈希值的第一层的一部分的哈希值。
[0076]
4、根据实施例3的方法,其中哈希值的第一层中包括的特定哈希值集合对应于多个数据库表中的特定数据库表,其中生成哈希值的第一层系包括:
[0077]
将哈希函数应用于特定哈希值集合以导出形成哈希值的第二层的一部分的哈希值。
[0078]
5、根据实施例4的方法,其中,生成哈希值的第一层系包括:
[0079]
将哈希函数应用于哈希值的第二层中包括的哈希值以导出第一根哈希值。
[0080]
6、根据实施例1的方法,还包括:
[0081]
由计算机系统接收用于基于快照将数据集合输入到具有第二数据库架构的数据库中的第二请求;
[0082]
响应于第二请求,计算机系统生成哈希值的第二层系,哈希值的第二层系包括用于第二数据库架构的第二根哈希值;以及由计算机系统对第一根哈希值和第二根哈希值进行比较,以确定第一数据库架构是否不同于第二数据库架构。
[0083]
7、根据实施例6的方法,还包括:
[0084]
响应于确定第一数据库架构不同于第二数据库架构,计算机系统阻止将数据集合输入到具有第二数据库架构的数据库中;以及
[0085]
由计算机系统返回对第二请求的应答,该应答标识第一数据库架构与第二数据库架构之间的至少一个差异。
[0086]
8、根据实施例7的方法,其中返回对第二请求的应答包括:
[0087]
由计算机系统在第一层系的哈希值的第一层与第二层系的哈希值的第一层之间标识至少一个不同的哈希值,其中第一层系的哈希值的第一层包括与第一数据库架构中限定的多个数据库表的属性相关联的特性的哈希值,并且其中至少一个不同的哈希值指示第一数据库架构与第二数据库架构之间的至少一个差异。
[0088]
9、根据实施例7的方法,其中第二数据库架构限定用于特定数据库表的属性,而所述第一数据库架构不限定用于该特定数据库表的属性。
[0089]
10、根据实施例1的方法,其中快照可用于将数据集合输入到与沙箱环境相关联的数据库中。
[0090]
11、一种其上存储有程序指令的非瞬态计算机可读介质,该程序指令能使计算机系统执行操作,操作包括:
[0091]
接收用于为存储在具有第一数据库架构的数据库中的数据集合创建快照的请求;
[0092]
响应于接收到请求,为数据集合创建快照,其中创建包括:
[0093]
基于第一数据库架构生成哈希值的层系,该哈希值的层系包括用于第一数据库架构的根哈希值;以及
[0094]
与快照一起包括哈希值的层系,其中哈希值的层系可用于确定第一数据库架构是否不同于第二数据库架构。
[0095]
12、根据实施例11的非瞬态计算机可读介质,其中第一数据库架构限定多个数据库表,给定的数据库表包括属性集合,给定的属性与特性集合相关联,其中生成哈希值的层系包括:
[0096]
针对多个数据库表中包括的数据库表的属性集合中的每个属性,将哈希函数应用于与该属性相关联的特性集合以产生形成该层系的哈希值的第一层的一部分的哈希值。
[0097]
13、根据实施例12的非瞬态计算机可读介质,其中哈希值的第一层的哈希值对应于两个或两个以上哈希值集合,并且其中生成哈希值的层系包括:
[0098]
针对两个或两个以上哈希值集合中的每个集合,将哈希函数应用于该哈希值集合,以产生形成该层系的哈希值的第二层的一部分的哈希值。
[0099]
14、根据实施例13的非瞬态计算机可读介质,其中,生成哈希值的层系包括:
[0100]
将哈希函数应用于层系的哈希值的第二层以产生根哈希值。
[0101]
15、根据实施例11的非瞬态计算机可读介质,其中操作还包括:
[0102]
接收用于在第二数据库架构下存储数据集合的请求;通过比较第一数据库架构的根哈希值与第二数据库架构的根哈希值来确定第一数据库架和第二数据库架构是否不同;以及
[0103]
响应于确定第一数据库架构的根哈希值与第二数据库架构的根哈希值匹配,在第二数据库架构下存储数据集合。
[0104]
16、一种方法,其包括:
[0105]
由计算机系统对用于为计算机系统的多个租户存储数据的数据库的第一数据库架构进行维护,其中第一数据库架构包括限定多个数据库表的元数据;
[0106]
由计算机系统接收用于创建数据库的租户快照的请求,其中租户快照与多个租户中的特定租户相关联;以及由计算机系统创建标识特定租户的数据但并不标识第一数据库架构的元数据的特定租户快照,其中所述创建包括:
[0107]
基于第一数据库架构生成第一哈希树,该第一哈希树包括对应于第一数据库架构的第一根哈希值;以及
[0108]
与特定租户快照一起包括第一哈希树,其中第一根哈希值可用于确定第一数据库架构是否不同于第二数据库架构。
[0109]
17、根据实施例16的方法,其还包括:
[0110]
由计算机系统接收用于使第二数据库存储由特定租户快照标识的特定租户的数据的请求,其中第二数据库在第三数据库架构下存储数据;以及
[0111]
由计算机系统确定第一数据库架构是否不同于第三数据库架构,包括通过:
[0112]
基于第三数据库架构生成第二哈希树,该第二哈希树包括对应于第三数据库架构的第二根哈希值;以及
[0113]
将第二根哈希值与第一根哈希值进行比较;以及响应于确定第一数据库架构与第
三数据库架构不同,计算机系统阻止将特定租户的数据存储在第二数据库。
[0114]
18、根据实施例17的方法,其还包括:
[0115]
由计算机系统遍历第一哈希树的一个或多个分支和第二哈希树的一个或多个对应分支,以标识第一哈希树和第二哈希树之间哈希值的差值集合,其中哈希值的差值集合可用于标识第一数据库架构与第三数据库架构中的差。
[0116]
19、根据实施例16的方法,其还包括:
[0117]
由计算机系统将特定租户快照发送到第二计算机系统,第二计算机系统管理包括第二数据库架构的第二数据库,其中第二计算机系统能够用第二数据库架构生成第二哈希树,并将第二哈希树的第二根哈希值与第一根哈希值进行比较以确定第一数据库架构是否不同于第二数据库架构。
[0118]
20、根据实施例16的方法,其中多个数据库表中的特定数据库表存储特定租户的数据的一部分和多个租户中第二特定租户的数据,并且其中特定租户快照标识特定租户的数据的一部分,但并不标识存储在特定数据库表中的第二特定租户的数据。
[0119]
尽管上面已经描述了具体的实施方案,即使在关于特定特征仅描述了单个实施方案的情况下,这些实施方案也并不旨在限制公开文本的范围。除非另有说明,否则在公开文本中提供的特征的示例是说明性的而不是限制性的。以上描述旨在涵盖对受益于公开文本的本领域技术人员来说显而易见的替换、修改和等同方案。
[0120]
公开文本的范围包括本文公开的任何特征或特征的组合(明确地或隐含地),或其任何概括,无论其是否解决了本文提出的任何或所有问题。因此,在本技术(或要求其优先权的申请)的审查期间,可以对任何这样的特征组合提出新的权利要求。特别地,参考所附权利要求,从属权利要求的特征可以与独立权利要求的特征相结合,并且各个独立权利要求中的特征可以以任何适当的方式组合,而不仅仅是以所附权利要求中列举的特定组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献