分布式数据库系统和分布式数据库系统中的数据处理方法与流程

文档序号:12063816阅读:199来源:国知局
分布式数据库系统和分布式数据库系统中的数据处理方法与流程

本申请涉及存储领域,尤其涉及分布式数据库系统和分布式数据库系统中的数据处理方法。



背景技术:

随着技术的发展,将分布式数据库与存储技术融合的需求越来越大。将分布式数据库与存储技术融合,可以大幅度提升分布式数据库的性能。

目前,分布式数据库与存储技术融合的方案中,分布式数据库中与数据相关的内容,如重做日志,是直接映射并存储到存储节点上的。这种存储方式使得存储节点不能动态扩容。

具体而言,当分布式数据库的容量达到一定程度,需要扩充存储节点时,通常情况下,需要用户对分布式数据库进行分库,或对分布式数据库中的表进行分表。这种扩容方式,操作繁琐,灵活性较差。



技术实现要素:

本申请提供一种分布式数据库系统和分布式数据库系统中的数据处理方法,使得该分布式数据库系统可以灵活动态地扩容。

第一方面,本申请提供了一种分布式数据库系统中的数据处理方法,所述分布式数据库系统包括数据库引擎和至少一个存储节点,所述至少一个存储节点中的每个存储节点包括至少一个分区,所述数据处理方法包括:所述数据库引擎接收插入数据请求消息,所述插入数据请求消息携带第一数据;所述数据库引擎确定所述第一数据所属的目标页的标识信息;所述数据库引擎生成第一重做日志,所述第一重做日志包括所述第一数据和所述目标页的标识信息;所述数据库引擎根据所述第一重做日志中所述目标页的标识信息,确定所述至少一个分区中与所述目标页对应的目标分区;所述数据库引擎将所述第一重做日志中的所述第一数据和所述目标页的标识信息,存入所述目标分区中用于存储所述目标页的重做日志的物理地址空间,所述目标分区为所述至少一个存储节点中的目标存储节点所包括的分区。

本申请中的分布式数据库系统中的数据处理方法,将重做日志先映射到存储系统的存储分区上,然后再将重做日志写入存储分区在对应的存储节点中包括的物理地址空间,使得该分布式数据库系统在进行扩容时,只需修改存储分区与存储节点,以及存储分区在存储节点中包括的物理地址空间的映射关系即可。这样,不经能够灵活动态地实现存储系统的扩容,而且使得扩容时用户不会有所感知,提高用户的体验度。

在一种可能的实现方式中,所述数据处理方法还包括:所述目标存储节点读取所述目标分区中的所述第一重做日志;所述目标存储节点将所述第一重做日志中的所述第一数据写入所述目标分区中用于存储所述目标页的数据的物理地址空间。

在一种可能的实现方式中,所述数据处理方法还包括:所述数据库引擎确定所述数据库引擎对应的内存中是否存在待查询数据;若所述数据库引擎确定所述内存中存在所述待查询数据,则返回所述待查询数据。

在一种可能的实现方式中,若所述数据库引擎确定所述内存中不存在所述待查询数据,则所述数据处理方法还包括:所述数据库引擎确定所述带查询数据所属的待查询页的标识信息;所述数据库引擎根据所述待查询页的标识信息,确定所述带查询页所属的待查询分区;所述数据库引擎根据所述待查询分区中存储的所述待查询页中的数据和所述带查询分区中存储的所述待查询页的重做日志中的数据,反馈所述待查询数据。

在一种可能的实现方式中,所述数据处理方法还包括:所述数据库引擎向所述目标存储节点发送分区数据迁移指示信息,所述分区数据迁移指示信息用于指示所述目标存储节点将所述目标分区中存储的内容,迁移到所述至少一个存储节点中的另一存储节点中的迁移目标分区;所述目标存储节点接收所述分区数据迁移指示信息;所述目标存储节点根据所述分区数据迁移指示信息,将所述目标分区中的内容,迁移到所述另一存储节点中的所述迁移目标分区。

第二方面,本申请提供了一种分布式数据库系统,所述分布式数据库系统包括计算设备和至少一个存储节点,所述至少一个存储节点中的每个存储节点包括至少一个分区。所述计算设备用于执行第一方面或任意一种可能的实现方式的数据处理方法中由数据库引擎执行的过程,所述至少一个存储节点中的任意一个节点用于执行第一方面或任意一种可能的实现方式的数据处理方法中由目标存储节点执行的过程。

第三方面,本申请提供了一种分布式数据库系统,所述分布式数据库系统包括计算设备和至少一个存储节点,所述至少一个存储节点中的每个存储节点包括至少一个分区,所述计算设备包括接收器、发送器、处理器和存储器,所述存储器用于存储代码,所述处理器用于执行所述存储器中的代码,所述接收器和发送器用于与其他设备通信。当所述代码被执行时,所述处理器调用所述接收器和发送器实现第一方面或第一方面中任意一种可能的实现方式的数据处理方法中由数据库引擎执行的过程,所述至少一个存储节点中的任意一个节点用于执行第一方面或任意一种可能的实现方式的数据处理方法中由目标存储节点执行的过程。

第四方面,本申请提供了一种计算机可读介质,所述计算机可读介质存储用于分布式管理系统中的计算设备执行的程序代码,所述程序代码包括用于执行第一方面中或第一方面中任意一种可能的实现方式的数据处理方法中由数据库引擎执行的指令。

附图说明

图1是本申请实施例的分布式数据库系统的示意性架构图。

图2是本申请实施例的分布式数据库系统中的数据处理方法的示意性流程图。

图3是本申请实施例的分布式数据库系统的示意性结构图。

具体实施方式

为了便于理解,先从整体上描述能够实施本申请实施例的数据处理方法的分布式数据库系统的示例性架构图。应理解,本申请实施例并不限于图1所示的系统架构中,此外,图1中的装置可以是硬件,也可以是从功能上划分的软件或者以上二者的结合。

图1所示的分布式数据库系统包括数据库客户端110、数据库引擎120和存储节点130。

其中,数据库客户端110可以是一个或者是多个,存储节点130也可以是一个或多个。每个存储节点130可以分成一个或多个分区131。每个分区负责所属的存储节点中的某一段物理地址空间。

其中,数据库引擎120还可以包括分区客户端。数据库引擎120可以通过该分区客户端来访问存储节点及存储节点中的分区。

其中,数据库客户端110与数据库引擎120可以部署在同一个虚拟机或物理主机上,也可以分别部署在不同的虚拟机或物理主机上。

数据库引擎120可以部署在存储节点130上,也可以部署在其他物理主机或虚拟机上。

分布式数据库系统中的数据和数据相关的日志,如重做日志(redolog)、撤销日志等(undolog),可以按页(page)存储在存储节点130的对应分区中。

数据库引擎120可以通过数据库引擎与存储节点之间的接口对存储在存储节点中的数据或日志进行操作。

用户可以操作数据库客户端110,通过数据库引擎120向存储节点130中的分区131中插入数据,或者通过数据库引擎120修改或查询存储节点130中的分区131中的数据。

下面结合图2介绍图1所示的分布式数据库系统中的数据处理方法。应理解,图2示出了该数据处理方法的步骤或操作,但这些步骤或操作仅是示例,本申请实施例还可以执行其他操作或者图2中的各个操作的变形。此外,有可能并非要执行图2中的全部操作。

S210,数据库引擎接收插入数据请求消息,插入数据请求消息携带第一数据。

其中,该插入(insert)数据库请求消息可以是用户通过数据库客户端输入的插入数据库请求消息。

具体而言,该插入数据库请求消息可以携带将要写入分布式数据库系统的数据库中的某些页中的数据(为了后续描述方便,将该数据成为第一数据)。

S220,数据库引擎确定第一数据所属的目标页的标识信息。

具体而言,当数据库引擎接收到插入数据库请求消息后,会确定插入数据库请求消息中的第一数据所属的页的信息。为了后续描述方便,将第一数据所属的页成为目标页。目标页的信息具体可以是目标页的标识信息,如目标页的page number。

S230,数据库引擎生成第一重做日志,第一重做日志包括第一数据和目标页的标识信息。

具体而言,数据库引擎可以生成第一数据对应的重做日志。为了后续描述方便,将该重做日志成为第一重做日志。

第一重做日志可以包括第一数据和目标页的标识信息,即第一重做日志记录了第一数据将要写入的页的信息。

S240,数据库引擎根据第一重做日志中目标页的标识信息,确定至少一个分区中与目标页对应的目标分区。

具体而言,数据库引擎生成第一重做日志后,可以将该第一重做日志持久化到存储设备上,即存储节点上。

数据库引擎将第一重做日志持久化到存储节点上时,先要提取出第一重做日志中的目标页的标识信息,然后根据目标页的标识信息确定所有分区中用于存储该目标页的内容的分区是哪个。为了后面描述方便,将此处确定的分区成为目标分区。

通常情况下,页与分区之间的对应关系,分区与存储节点之间的对应关系是预先配置好的,数据库引擎可以获知。然后数据引擎可以根据这些对应关系确定目标页对应的目标分区。

S250,数据库引擎将第一重做日志中的第一数据和目标页的标识信息,存入目标分区中用于存储目标页的重做日志的物理地址空间,目标分区为至少一个存储节点中的目标存储节点所包括的分区。

具体而言,数据库引擎确定第一重做日志应写入的分区后,可以该第一重做日志中的第一数据和目标页的标识信息,写入对应的存储节点中对应的分区在该存储节点中所占的物理地址空间。为了后续描述方便,将该存储节点称为目标存储节点。

本申请实施例的分布式数据系统的数据处理方法中,将存储节点以分区为单元进行划分,使得数据库引擎可以以更细更小的粒度来访问存储节点中的数据。这样,当需要对存储节点进行扩容时,可以增加新的存储节点,然后重新对存储节点进行分区划分即可。

当扩容后的存储节点重新划分分区后,数据库可以向所有的存储节点中的任意存储节点(如上述目标存储及诶单)发送分区数据迁移指示信息,该分区数据迁移指示信息用于指示存储节点将该存储节点对应的分区(如目标分区)在存储节点中包括的内容(如第一重做日志或第一数据),迁移到其他存储节点上重新划分的分区中的某个分区(为了后续描述方便,将该分区称为迁移目标分区)。

存储节点接收数据库引擎发送的分区数据迁移指示信息后,可以根据该分区数据迁移指示信息的指示,将该存储节点上指定分区中的内容(如日志或数据表),迁移到指定的存储节点中的指定分区中。

由此可以看出,本申请实施例的分布式数据库系统中的数据处理方法,使得分布式数据库系统的存储节点在扩容时,不需要对分布式数据库中的数据或日志等内容进行分库或分表操作,即可灵活简便地实现存储空间的扩容。

可选地,本申请实施例的分布式数据库系统中,每个分区可以在其他存储节点上有备份分区。即写入目标分区中的数据或日志均可以同步或异步地写入该目标分区对应的备份分区中。通常情况下,每个目标分区对应的备份分区为两个。

当数据库引擎需要从备份分区中读取备份的重做日志或数据等内容时,可以选择从备份分区中与该目标分区网络距离最近,或访问量最小的备份分区中读取重做日志或数据等内容。

应说明的是,插入数据请求消息中携带的第一数据可以对应多个页,这多个页也可以对应多个分区,这多个分区也可以对应多个存储节点。也就是说,第一重做日志中的可以包括多个页的标识信息。对应地,数据库引擎可以将第一重做日志中的第一数据和多个页的标识信息打散,分别存储到每个页对应的分区中区。具体而言,将第一重做日志中的第一数据中的子数据与该子数据对应的页的标识信息写入该子数据对应的页所对应的分区中。最后,第一重做日志中的内容可能会分散存储到多个存储节点中的多个分区中。

通常情况下,分布式数据库系统中的数据与该数据对应的日志,如重做日志存储在相同的分区中。在此情况下,本申请实施例的分布式数据库系统中的数据处理方法中,可选地,还可以包括以下步骤:

分布式数据系统中的至少一个存储节点中的任意存储节点读取该存储节点中某个分区中某个页中的重做日志;然后将该重做日志中的数据写入该分区中用于存储数据的页中。

上述根据重做日志将重做日志中的数据写入对应的页的过程,也可以称为日志回放流程。

存储节点可以在数据库引擎的触发下,根据该存储节点上的回放策略启动日志回放流程。每个存储节点进行该存储节点上的日志的回放时,可以不需要与其他存储节点进行交互。

本申请实施例的分布式数据库系统中的数据处理方法中,可选地,还可以包括以下步骤:数据库引擎确定数据库引擎对应的内存中是否存在待查询数据;若数据库引擎确定内存中存在待查询数据,则返回待查询数据。

若所述数据库引擎确定所述内存中不存在所述待查询数据。则数据库引擎确定带查询数据所属的待查询页的标识信息;数据库引擎根据待查询页的标识信息,确定带查询页所属的待查询分区;数据库引擎根据待查询分区中存储的待查询页中的数据和带查询分区中存储的待查询页的重做日志中的数据,反馈待查询数据。

也就是说,当数据库引擎进行数据查询时,可以先在数据库引擎对应的内存或缓存中查询有无待查询数据。若没有,则数据库引擎可以先确定待查询的数据所属的页对应的分区,并下发IO到该分区所属的存储节点,以读取存储节点中该分区中该页中的数据。

存储节点接收到数据库引擎发送的IO请求后,从对应的分区中读取对应的页中的待查询数据,以及读取该页中的重做日志。存储节点判断读取的重做日志中有无对该页中的待查询数据的修改,若没有,则返回该页中的待查询数据;若有,则将该页中的待查询数据与重做日志中记录的修改后的待查询数据进行整合,得到最新的待查询数据,然后返回整合后的待发送数据。

图2所示的数据处理方法中,数据库引擎可以运行在分布式数据库系统中的计算设备上。即本申请实施例的分布式数据库系统可以包括计算设备和至少一个存储节点,其中,计算设备用于执行图2所示的数据处理方法中数据库引擎执行的步骤,任意存储节点用于执行图2所示的数据处理方法中由目标存储节点执行的步骤。为了简介,此处不再赘述。

如图3所示,分布式数据库系统中的计算设备310可以包括存储器311、处理器312和通信接口313。

应理解,图3示出的分布式数据库系统仅是示例,本申请实施例的分布式数据库系统还可包括其他设备或单元,或者包括与图3中的各个模块的功能相似的模块。

存储器311用于存储程序,处理器312用于执行存储器311中存储的程序,通信接口313用于与其他设备和存储节点通信。

当处理器312执行存储器311中的程序时,处理器具体用于调用通信接口313实现图2所示的数据处理方法中,由数据库引擎执行的过程。为了简介,此处不再赘述。

图3所示的分布式数据库系统中的存储节点320用于执行图2所示的数据处理方法中由目标存储节点执行的步骤。为了简介,此处不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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