可扩展分布式数据库的系统和方法与流程

文档序号:15257662发布日期:2018-08-24 20:53阅读:184来源:国知局

本申请要求于2017年2月3日提交的美国临时专利申请62499662的优先权,该美国临时专利申请的公开内容通过引用并入本文中。

本发明总体涉及数字数据存储和检索。更具体地说,本发明涉及可扩展的分布式数据库的系统和方法。



背景技术:

传统的分布式数据库系统将数据存储在通常由多个数据库服务器组成的集群中。当数据库系统中的数据量达到数据库系统的满容量或容量阈值时,引入新的计算机服务器并将其添加到数据库系统以存储更多的数据。这种向现有服务器添加新服务器并使新数据库服务器能够接受更多数据的过程通常被称为分布式数据库系统的水平扩展。

这些传统的分布式数据库系统中的水平扩展需要数据库服务器之间的数据重新分配。也就是说,已经存储在现有数据库服务器中的一部分或全部数据被迁移到一个或多个新的数据库服务器。这些服务器之间的该数据交换过程成本高、耗时且需要资源。当系统中的总数据量较大时,该迁移可能需要很长时间(以小时或天计)。扩展过程可能会在生产系统中造成很长的停机时间。



技术实现要素:

本发明涉及在数据库扩展过程期间不需要数据重新分配的系统和方法。

不需要数据重新分配(也称为数据迁移)可以在数据库扩展过程期间节省数小时、或者数天甚至数周的开销。本发明的实施方式公开了在数据库服务器之间仅交换控制消息。控制消息可以包括系统配置信息、网络拓扑信息、数据库和表格结构信息以及任何其它种类的元数据信息。在所述实施方式中,将数据库服务器分组为集群。数据库服务器可以是物理计算机或虚拟服务器。存储在现有数据库服务器中的数据不会迁移到新服务器。将新的数据库服务器添加到分布式数据库系统时,会形成新集群以包含该新的服务器。最初,分布式数据库系统可以由一个或多个集群组成。每个集群由一个服务器或多个服务器组成。现有集群包括现有的数据库服务器并管理现有的数据库服务器。该新集群包括新的数据库服务器并管理新的数据库服务器。将进入系统的新数据存储在新集群的数据库服务器中。现有集群仍可用于数据更新、数据删除、数据搜索和其它操作。现有集群仍然可以接受更多的新数据,但新数据主要被该新集群所接受。通过现有集群接受数据有助于扩展过程的平稳过渡。该新集群可用于包括更新操作、删除操作、搜索操作、插入操作和其它操作的所有数据操作。或者,可以引入两个或更多新集群并将其添加到现有集群。哈希(hashing)、舍入(round-bin)或可配置的策略可以用来选择新集群或一组新集群来插入新的数据。

附图说明

参照以下附图可以更好地理解本发明的许多方面。附图中的部件不一定按比例绘制,而是着重于清楚地示出本发明的原理。此外,在附图中,贯穿若干视图,相同的附图标记表示相应的部分。

图1示意性地示出根据本发明的各个实施方式的数据库服务器的现有集群以及包含新数据库服务器的新集群。

图2示出根据本发明的各个实施方式的由数据库客户端对数据库记录的操作。

图3示出根据本发明的各个实施方式的数据库交换机针对客户端请求选择数据库集群。

图4示出根据本发明的各个实施方式的所选数据库集群接收对数据库记录的操作。

图5示出使用哈希方法访问数据库记录的一个实施方式。

图6示出使用范围方法访问数据库记录的另一个实施方式。

具体实施方式

本发明涉及在数据库扩展过程期间不需要数据重新分配的系统和方法。

本发明的实施方式公开了将分布式数据库服务器在逻辑上组织成集群的分布式数据库系统。也就是说,每个集群由一个或多个数据库服务器组成。在所述分布式数据库系统的正常操作状态下,存在一个或多个服务器集群以服务于在系统中添加新数据、更新现有数据、删除现有数据、搜索数据或对数据或元数据进行任何其它类型的操作的请求。在扩展过程中,将要添加到系统的新服务器在逻辑上分组到一个新集群中。

现在参考图1中所示的示意图,集群1和集群2表示根据本发明的实施方式的分布式数据库系统中的现有集群。在集群1和集群2中存在多个现有的数据库服务器s1、s2、s3、s4、s5、s6。集群3表示包含新增数据库服务器s7、s8、s9的新集群。在这些实施方式中,任何集群中的数据库服务器的数量不是固定的,并且可以是大于零的任何数。所有的服务器都与以太网(ethernet)、无限带宽(infiniband)、wifi、gprs、5g等网络通信线路相互连接,以及它们可以将数据发送到分布式数据库系统中的其它服务器或从分布式数据库系统中的其它服务器接收数据。

图2是示出根据本发明的实施方式的对现有集群和新集群中的数据库记录的不同操作的示意图。客户端计算机连接到现有集群(集群1)和新集群(集群3)中的数据库服务器。客户端计算机可以是集群外的外部计算机或集群内的内部计算机服务器,例如计算机主机、台式pc、便携式pc、智能手机或移动设备。对于新集群(集群3)中的任何一个服务器,都可以执行对数据记录或元数据记录的插入操作、更新操作、删除操作、选择操作和其它任何操作。元数据信息包括数据库模式信息、服务器配置信息或关于系统的任何其它系统或网络相关信息。插入操作指的是向系统添加新的数据。更新操作指的是更新系统中的数据。删除操作指的是删除系统中的数据。选择操作指的是从系统中搜索或读取数据。

根据本发明的某些实施方式,对于现有集群(集群1)中的任何服务器,除了插入操作之外,允许新集群(集群3)中所允许的所有操作。在某些情况下,可以在现有集群中执行插入操作。例如,可能会出现以下情况:在一个或多个现有集群中删除了许多数据记录,并且这些集群上的存储空间可再次用以存储新数据。在这样的情况下,根据一个实施方式,系统可以被配置为使得这些集群可以用于插入新的数据。该信息可以在控制消息(在交换机中)中提供,并且系统将知道使用哪些集群来插入新的数据记录。实际上,新集群中的服务器接受大部分(如果不是全部的话)新的数据库记录。

在本发明的实施方式中,关于集群的信息由一个或多个数据库交换机存储、更新和管理。该一个或多个数据库交换机存储当前系统中的集群数量、每个集群的属性、每个集群中的每个成员服务器的属性以及其它相关信息。集群属性包括表示集群是新集群还是现有集群的标志、记录存储的数据库记录的时间戳或一系列时间戳、集群中成员服务器的数量、总存储容量、系统中集群的序列号、允许对集群进行的操作、管理元数据信息的服务器的规范以及关于集群的任何其它信息。数据库服务器的属性包括服务器存储容量、集群中服务器的序列号、指示是否可以管理元数据信息的标志、硬件规范以及关于服务器的任何其它信息。

图3示意性地示出了,根据本发明的实施方式,数据库交换机被嵌入在任何数据库服务器或数据库客户端中。当新数据库服务器添加到系统或从系统中移除时,所有交换机中的信息都会更新和同步。当客户端连接到服务器时,存储在交换机中的信息从一个或多个服务器被检索,并且可以通过在所有服务器和客户端之间交换消息来同步。在本发明的另一个实施方式中,独立交换机保持在任何服务器或客户端之外。服务器和客户端首先与独立交换机建立网络连接,然后请求其管理的信息。

图4示出了,根据本发明的实施方式,数据库交换机用于将客户端请求路由到分布式数据库系统中的仅所选集群或全部集群。如果客户端请求包含时间数据记录,则交换机可以查找集群的时间戳范围,并将该请求路由到满足时间条件的集群。例如,客户端可以请求2017年生成的记录,那么只需要查询已存储2017年数据的集群。可以使用任何其它条件,使得针对相关的数据记录,只有几个集群需要被查询。在最坏的情况下,并行(同时)查询所有集群,然后将结果发送回到客户端。客户端请求可以是任何类型的操作,包括选择、更新、插入、删除和其它操作。在一个明显的决定中,插入操作只被路由到新集群。选择集群的标准可以基于关键字、一个或多个主关键字、索引关键字或数据库记录的其它信息。对于在单个记录上执行的操作,可以选择单个集群。对于影响多个记录的操作,可以选择多个集群。期望最少数量的集群来满足客户端请求,从而降低总系统成本。

一旦交换机选择集群进行一操作,就需要在集群中选择数据库服务器来接受该操作。在本发明的一个实施方式中,可以选择集群中的所有服务器。在本发明的另一个实施方式中,选择单个服务器或多个服务器用于操作。选择服务器可以基于数据库关键字的哈希值、关键字范围或关键字的任何其它标准。只有选定的服务器才会接收到操作命令。

图5示意性地描述了,根据本发明的实施方式,使用数据库关键字或复合关键字的哈希码来选择集群中的数据库服务器。当新记录进入数据库系统时,将记录的关键字提取并哈希处理为与集群中的多个数据库服务器中的一个数据库服务器相对应的整数值。计算关键字的初始哈希码,然后得到具有集群中服务器数量的码的模值。模值被映射到其中一个服务器。新记录被存储在由取模的哈希码确定的服务器中。通常新的数据记录被存储在新集群中。在任何时刻,系统中通常只有一个新集群。当使用关键字选择记录时,可以并行查询多个或所有集群,但只查询每个集群中的一个服务器以检索相同关键字的记录。在数据库服务器内部,记录和关键字可以由任何类型的记录管理子系统进行管理,该记录管理子系统包括b+树索引(treeindexes)、lsm树索引、sea数组索引(arrayindexes)以及任何其它索引系统或没有任何索引的简单的平面文件(flatfile)。数据库服务器可以是运行数据管理服务的任何软件或硬件。选择用于更新记录和删除记录的数据库服务器与选择记录类似地执行。

图6示意性地描述了使用数据库关键字或复合关键字的关键字范围选择集群中的数据库服务器。当新记录进入数据库系统时,从记录中提取关键字,并将其与集群中所有数据库服务器的关键字范围进行比较。关键字范围由数据库交换机管理。该新记录被存储在其关键字范围涵盖新记录中的关键字的服务器中。当使用关键字选择记录时,并行查询多个或所有集群,但只能查询每个集群中的一个服务器,以便通过关键字范围查找来检索相同关键字的记录。选择用于更新记录和删除记录的服务器与选择记录类似地执行。除了基于哈希的方法和基于关键字范围的方法之外,还可以使用任何其它计算方法为集群中的数据库关键字选择服务器。所选择的服务器负责存储、更新、删除和选择在其本地存储器中的数据库记录。

本文描述的包括软件或代码的任何逻辑或应用程序可在任何非暂时性计算机可读介质中实施,以供指令执行系统(例如在计算机系统或其它系统中的处理器)使用或与该指令执行系统结合。在这个意义上,逻辑可以包括例如包括可以从计算机可读介质提取并且由指令执行系统执行的指令和声明的语句。在本发明的上下文中,“计算机可读介质”可以是能够包含、存储或保持本文描述的逻辑或应用程序的任何介质,该任何介质由指令执行系统使用或与指令执行系统结合。计算机可读介质可以包括许多物理介质中的任何一种,诸如磁性介质、光学介质或半导体介质。合适的计算机可读介质的更具体的示例将包括但不限于磁带、磁性软盘、磁性硬盘驱动器、存储卡、固态驱动器、usb闪存驱动器或光盘。此外,计算机可读介质可以是包括例如静态随机存取存储器(staticrandomaccessmemory,sram)和动态随机存取存储器(dynamicrandomaccessmemory,dram)或磁性随机存取存储器(magneticrandomaccessmemory,mram)的随机存取存储器(randomaccessmemory,ram)。另外,计算机可读介质可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmableread-onlymemory,prom)、可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom)、电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)或其它类型的存储设备。

应该强调的是,本发明的上述实施方式仅仅是为了清楚地理解本发明的原理而阐述的实现的可能示例。在不实质上偏离本发明的精神和原理的情况下,可以对上述实施方式做出许多变化和修改。所有这样的修改和变化旨在被包括在本发明的范围内并且由权利要求书保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1