CN113297234B - 一种数据处理方法、装置、设备及计算机可读存储介质 - Google Patents
一种数据处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113297234B CN113297234B CN202011055653.1A CN202011055653A CN113297234B CN 113297234 B CN113297234 B CN 113297234B CN 202011055653 A CN202011055653 A CN 202011055653A CN 113297234 B CN113297234 B CN 113297234B
- Authority
- CN
- China
- Prior art keywords
- database
- slave
- data block
- data
- master 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
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)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据处理方法、装置、设备及计算机可读存储介质。本公开通过主数据库接收到客户端的数据处理请求后,执行该数据处理请求,并将执行该数据处理请求后的执行结果作为一条日志条目记录到主数据库本地的第一数据块中,主数据库将该日志条目同步到多个从数据库中每个从数据库的第二数据块中。由于该日志条目是主数据库执行该数据处理请求后的执行结果,该日志条目不仅可以作为日志数据,同时还可以作为提交后的数据,从而使得日志条目不需要经过拷贝即可从主数据库同步到从数据库,也就是说,同步过程中日志条目直接被写入从数据库的数据区域,从日志条目的同步到提交过程不需要拷贝日志条目,降低了同步延时,提高了数据库系统性能。
Description
技术领域
本公开涉及信息技术领域,尤其涉及一种数据处理方法、装置、设备及计算机可读存储介质。
背景技术
在数据库系统中,为了实现高可靠性,一般采用一个主数据库和至少两个从数据库的架构。
在工作过程中,主数据库可以接收客户端发送的请求,并根据该请求生成日志,以及根据该请求对自身的数据库数据进行操作。进一步,主数据库可以对其生成的日志进行持久化处理。另外,主数据库还可以将其生成的日志发送给从数据库。
从数据库需要先存储该日志,再对该日志进行回放执行,并将执行后得到的结果存储到从数据库的数据库数据中,从而使得从数据库中的数据和主数据库中的数据保持同步。但是这种同步方法的同步延时较大,导致数据库系统性能较低。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种数据处理方法、装置、设备及计算机可读存储介质,以提高数据库系统性能。
第一方面,本公开实施例提供一种数据处理方法,包括:
主数据库从客户端接收数据处理请求;
所述主数据库执行所述数据处理请求,并将执行结果作为日志条目;
所述主数据库将所述日志条目存储到所述主数据库的第一数据块中;
所述主数据库根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中。
第二方面,本公开实施例提供一种数据处理装置,包括:
接收模块,用于从客户端接收数据处理请求;
执行模块,用于执行所述数据处理请求,并将执行结果作为日志条目;
存储模块,用于将所述日志条目存储到所述主数据库的第一数据块中;
同步模块,用于根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中。
第三方面,本公开实施例提供一种电子设备,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面所述的方法。
第四方面,本公开实施例提供一种数据处理系统,包括:主数据库和多个从数据库,所述主数据库执行以实现如第一方面所述的方法。
第五方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现第一方面所述的方法。
本公开实施例提供的数据处理方法、装置、设备及计算机可读存储介质,通过主数据库接收到客户端的数据处理请求后,执行该数据处理请求,并将执行该数据处理请求后的执行结果作为一条日志条目记录到主数据库本地的第一数据块中,进一步,主数据库将该日志条目同步到多个从数据库中每个从数据库的第二数据块中。由于该日志条目是主数据库执行该数据处理请求后的执行结果,因此,该日志条目不仅可以作为日志数据,同时还可以作为提交后的数据,从而使得日志条目不需要经过拷贝即可从主数据库同步到从数据库,也就是说,同步过程中日志条目直接被写入从数据库的数据区域,从日志条目的同步到提交过程不需要拷贝日志条目,降低了同步延时,从而提高了数据库系统性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的数据处理方法流程图;
图2为本公开实施例提供的一种应用场景的示意图;
图3为本公开另一实施例提供的数据处理方法流程图;
图4为本公开实施例提供的一种主从数据库的示意图;
图5为本公开实施例提供的另一种主从数据库的示意图;
图6为本公开另一实施例提供的数据处理方法流程图;
图7为本公开另一实施例提供的数据处理方法流程图;
图8为本公开另一实施例提供的数据处理方法流程图;
图9为本公开实施例提供的另一种主从数据库的示意图;
图10为本公开实施例提供的数据处理装置的结构示意图;
图11为本公开实施例提供的电子设备实施例的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
通常情况下,在具有主数据库和至少两个从数据库的数据库系统中,主数据库可以接收客户端发送的请求,并根据该请求生成日志,以及根据该请求对自身的数据库数据进行操作。进一步,主数据库可以对其生成的日志进行持久化处理。另外,主数据库还可以将其生成的日志发送给从数据库。但是,从数据库需要先存储该日志,再对该日志进行回放执行,并将执行后得到的结果存储到从数据库的数据库数据中,这个过程耗费的时间较长,从而导致数据库系统性能较低。针对该问题,本公开实施例提供了一种数据处理方法,下面结合具体的实施例对该方法进行介绍。
图1为本公开实施例提供的数据处理方法流程图。该方法具体步骤如下:
S101、主数据库从客户端接收数据处理请求。
本实施例中的客户端具体可以是如图2所示的终端设备20中的应用程序(Application,APP)或终端设备20。终端设备20具体可以是手机、平板电脑、个人计算机等。具体的,终端设备20可以与数据库系统进行信息交互。其中,该数据库系统可包括多个数据库,每个数据库可以称为一个数据库节点或数据库服务器。该数据库系统中包括一个主数据库和至少两个从数据库。
具体的,该数据库系统中的多个数据库可以组成一个组(group),进一步,同一个组内的多个数据库可以根据分布式一致性协议,例如raft算法,选举出一个主数据库,该主数据库也可记为leader,除主数据库之外的数据库称为从数据库,从数据库可以记为follower。,其中,raft算法具体是一个用于日志复制、同步的一致性算法。主数据库和每个从数据库之间可以建立远程直接数据存取(remote direct memory access,rdma)连接。其中,主数据库也可以称为主数据库服务器,从数据库也可以称为从数据库服务器。例如,图2中的服务器21为主数据库服务器,服务器22和服务器23分别为从数据库服务器。此外,主数据库还可以称为主数据库节点,从数据库还可以称为从数据库节点。
具体的,终端设备20可以与数据库系统中的服务器21即主数据库服务器进行信息交互。例如,终端设备20向服务器21发送数据处理请求,服务器21接收该数据处理请求。
S102、所述主数据库执行所述数据处理请求,并将执行结果作为日志条目。
当服务器21接收到该数据处理请求后,服务器21可以执行该数据处理请求,并将执行该数据处理请求后的执行结果作为一条日志条目(log entry)。
S103、所述主数据库将所述日志条目存储到所述主数据库的第一数据块中。
可选的,所述主数据库将所述日志条目存储到所述主数据库的第一数据块中,包括:所述主数据库从所述主数据库的多个数据块中确定所述第一数据块;所述主数据库将所述日志条目存储到所述第一数据块中。
在本实施例中,数据库系统中的每个数据库即每个数据库节点的存储空间具体可以是非易失性内存(non-volatile memory,nvm)。每个数据库节点可以使用内存分配器管理本地的nvm空间。具体的,内存分配器可以按照slab算法将nvm空间中的数据区分割为多个数据块。其中,slab算法是Linux操作系统的一种内存分配机制。其中,多个数据块的大小可以相同,也可以不同。或者多个数据块中部分数据块的大小可以相同或不同。
当服务器21执行终端设备20的数据处理请求生成日志条目后,服务器21可以从本地的多个数据块中确定出一个数据块,该数据块可记为第一数据块,该第一数据块的大小与该日志条目的数据大小相匹配。进一步,服务器21将该日志条目写入该第一数据块中。
S104、所述主数据库根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中。
在本实施例中,主数据库可以预先存储有多个从数据库中每个从数据库的多个数据块的地址信息。例如,服务器21预先存储有服务器22的多个数据块的地址信息、以及服务器23的多个数据块的地址信息。服务器21可以从服务器22的多个数据块的地址信息中选取一个地址信息,该地址信息对应的数据块记为第二数据块。同理,服务器21可以从服务器23的多个数据块的地址信息中选取一个地址信息,该地址信息对应的数据块记为第二数据块。进一步,服务器21根据服务器22的第二数据块的地址信息和服务器23的第二数据块的地址信息,将该第一数据块中的日志条目同步到服务器22的第二数据块和服务器23的第二数据块中,即服务器21将该第一数据块中的日志条目直接写入到服务器22的第二数据块和服务器23的第二数据块中。
本公开实施例通过主数据库接收到客户端的数据处理请求后,执行该数据处理请求,并将执行该数据处理请求后的执行结果作为一条日志条目记录到主数据库本地的第一数据块中,进一步,主数据库将该日志条目同步到多个从数据库中每个从数据库的第二数据块中。由于该日志条目是主数据库执行该数据处理请求后的执行结果,因此,该日志条目不仅可以作为日志数据,同时还可以作为提交后的数据,从而使得日志条目不需要经过拷贝即可从主数据库同步到从数据库,也就是说,同步过程中日志条目直接被写入从数据库的数据区域,从日志条目的同步到提交过程不需要拷贝日志条目,降低了同步延时,从而提高了数据库系统性能。
在上述实施例的基础上,可选的,主数据库从客户端接收数据处理请求之前,所述方法还包括如图3所示的如下步骤:
S301、所述主数据库将本地的数据区划分为多个数据块,所述从数据库用于将所述从数据库的数据区划分为多个数据块。
例如在初始化阶段,多个数据库节点中的每个数据库节点可以通过内存分配器管理本地的nvm空间,将本地的nvm空间中的数据区分割为多个数据块。多个数据库节点组成一个组,多个数据库节点按照raft协议选举出leader,多个数据库节点中除了leader之外的节点作为follower。leader和多个follower之间可以建立rdma连接。
由于多个数据库节点中包括leader和follower,因此,leader例如服务器21可以通过内存分配器管理本地的nvm空间,将本地的nvm空间中的数据区分割为多个数据块。follower例如服务器22和服务器23可以分别通过内存分配器管理本地的nvm空间,将本地的nvm空间中的数据区分割为多个数据块。
S302、所述主数据库接收每个从数据库的多个数据块的地址信息。
例如,follower例如服务器22和服务器23可以分别将各自的多个数据块的地址信息发送给leader例如服务器21。
可选的,所述主数据库接收每个从数据库的多个数据块的地址信息,包括:所述主数据库和所述多个从数据库建立远程直接数据存取rdma连接;所述主数据库接收每个从数据库分别通过rdma发送指令发送的所述从数据库的多个数据块的地址信息。
例如,leader和多个follower建立rdma连接之后,每个follower可以通过rdma发送(send)指令将各自的多个数据块的地址信息发送给leader例如服务器21。相应的,leader例如服务器21可以接收到follower例如服务器22通过rdma send指令发送的服务器22的多个数据块的地址信息,以及leader例如服务器21可以接收到follower例如服务器23通过rdma send指令发送的服务器23的多个数据块的地址信息。
例如,图2所示的服务器22和服务器23可以分别将自己的nvm空间注册给服务器21,从而使得服务器21可以直接读写服务器22和服务器23的nvm空间。
具体的,服务器21和服务器22、以及服务器21和服务器23之间可以通过rdma协议进行通信。具体的,rdma协议包括多个协议命令,例如包括:rdma发送(send)指令和rdma写(write)指令。
服务器22可以通过rdma send指令将本地的多个数据块的地址信息发送给服务器21。服务器23通过rdma send指令将本地的多个数据块的地址信息发送给服务器21。其中,多个数据块的地址信息具体可以是多个数据块中每个数据块的首地址。相应的,服务器21接收服务器22和服务器23分别发送的多个数据块中每个数据块的首地址。服务器21通过rdmawrite指令将第一数据块中的日志条目写入服务器22的第二数据块和服务器23的第二数据块中。
S303、所述主数据库将每个从数据库的多个数据块的地址信息存储在缓存中。
例如,服务器21可以将服务器22和服务器23分别发送的多个数据块中每个数据块的首地址存储到本地。例如,服务器21可以采用循环缓冲区(ring buffer)存储服务器22和服务器23分别发送的多个数据块中每个数据块的首地址。
在一种可行的实现方式中,所述主数据库将每个从数据库的多个数据块的地址信息存储在缓存中,包括:所述主数据库将同一个从数据库的多个数据块的地址信息存储到同一个缓存中。
可选的,所述缓存为循环缓冲区;所述循环缓冲区包括多个子区域,每个子区域用于存储从数据库的一个数据块的地址信息;所述循环缓冲区的头指针指向所述多个子区域中的第一个子区域;所述循环缓冲区的尾指针指向所述多个子区域中的最后一个子区域。
例如,服务器21将服务器22发送的多个数据块中每个数据块的首地址缓存到ringbuffer1中,将服务器23发送的多个数据块中每个数据块的首地址缓存到ring buffer2中。如图4所示,服务器21具体为如图4所示的主数据库。服务器22具体为如图4所示的从数据库1。服务器23具体为如图4所示的从数据库2。从数据库1和从数据库2各自的本地的数据区域包括多个数据块。例如,从数据库1和从数据库2的数据区域中分别包括已经使用的数据块和空着的数据块。具体的,从数据库1可以将空着的多个数据块的首地址发送给主数据库。主数据库将该多个数据块的首地址缓存到循环缓冲区1中。
可以理解的是,从数据库1可以将本地全部空着的多个数据块的首地址发送给主数据库,或者可以将本地部分空着的数据块的首地址发送给主数据库。本实施例以后者为例,如图4所示的步骤(1),例如从数据库1只是将部分空着的数据块的首地址发送给主数据库,从而使得主数据库将该部分空着的数据块的首地址缓存到循环缓冲区1中。如图4所示,循环缓冲区1包括多个子区域(例如,子区域1-子区域7)、一个头指针(Head)和一个尾指针(Tail)。其中,头指针指向多个子区域中的第一个子区域,例如子区域1。尾指针指向多个子区域中的最后一个子区域,例如子区域7。由于子区域1存储的是数据块41的首地址,因此,头指针指向数据块41的首地址。由于子区域7存储的是数据块47的首地址,因此,尾指针指向数据块47的首地址。多个子区域中的每个子区域可存放从数据库1的一个数据块的首地址。
同理,主数据库将从数据库2发送的多个数据块的首地址缓存到循环缓冲区2中,具体存放过程此处不再赘述。可以理解的是,从数据库1的多个数据块的大小可以相同,也可以不同。例如,从数据库1的多个数据块的大小均为64B。同理,从数据库2的多个数据块的大小可以相同,也可以不同。例如,从数据库2的多个数据块的大小均为64B。
在另一种可行的实现方式中,所述主数据库将每个从数据库的多个数据块的地址信息存储在缓存中,包括:所述主数据库将同一个从数据库中大小相同的多个数据块的地址信息存储到同一个缓存中。
以从数据库1为例,从数据库1的多个数据块的大小不同。例如,从数据库1包括多个64B大小的数据块,以及多个96B大小的数据块。在这种情况下,从数据库1可以向主数据库发送多个64B大小的数据块的首地址和多个96B大小的数据块的首地址。另外,从数据库1还可以向主数据库发送每个数据块的大小,其中,数据块的大小和数据块的首地址可以同时发送,也可以不同时发送。主数据库可以将来自从数据库1的同一大小的数据块的首地址存放在同一个循环缓冲区中。例如,主数据库可以将来自从数据库1的多个64B大小的数据块的首地址缓存到循环缓冲区1中,将多个96B大小的数据块的首地址缓存到循环缓冲区2中。具体如图5所示的步骤(1)。
同理,如果从数据库2的多个数据块的大小相同,主数据库可以将从数据库2的多个数据块的首地址存放到循环缓冲区3中。进一步,主数据库还可以建立循环缓冲区1、循环缓冲区2和从数据库1之间的关联关系,以及建立循环缓冲区3和从数据库2之间的关联关系。
如果从数据库2的多个数据块的大小不同,例如,从数据库2也包括多个64B大小的数据块,以及多个96B大小的数据块。此时,主数据库可以将从数据库2的多个64B大小的数据块的首地址存放到循环缓冲区3中,将从数据库2的多个96B大小的数据块的首地址存放到循环缓冲区4中。进一步,主数据库还可以建立循环缓冲区1、循环缓冲区2和从数据库1之间的关联关系,以及建立循环缓冲区3、循环缓冲区4和从数据库2之间的关联关系。
本公开实施例通过主数据库从每个从数据库分别接收多个数据块的地址信息,并将同一个从数据库的多个数据块的地址信息存储到同一个循环缓冲区中,或者将同一个从数据库中大小相同的多个数据块的地址信息存储到同一个循环缓冲区中,使得主数据库可以实时的从循环缓冲区中查找到不同从数据库的数据块的地址信息。另外,通过循环缓冲区的头指针指向从数据库中空着的数据块的首地址,使得主数据库可以快速的获取到多个从数据库中空着的数据块的首地址,进一步降低了日志条目的同步时延。
在上述实施例的基础上,可选的,所述主数据库根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中,包括如图6所示的如下步骤:
S601、所述主数据库分别从每个从数据库的多个数据块中确定一个第二数据块,所述第二数据块的大小与所述第一数据块的大小相匹配。
可选的,所述主数据库分别从每个从数据库的多个数据块中确定一个第二数据块,包括:所述主数据库根据所述第一数据块的大小,确定每个从数据库对应的循环缓冲区;所述主数据库根据每个从数据库对应的循环缓冲区的头指针,确定每个从数据库的第二数据块。
例如,当主数据库将日志条目存储到本地的第一数据块之后,主数据库可以查询每个从数据库对应的循环缓冲区。如图4所示,从数据库1对应于循环缓冲区1,从数据库2对应于循环缓冲区2。循环缓冲区1的头指针指向从数据库1的数据块41的首地址。循环缓冲区2的头指针指向从数据库2的数据块42的首地址。其中,数据块41和数据块42分别记为第二数据块。第二数据块的大小和第一数据块的大小相匹配。
S602、所述主数据库根据每个从数据库对应的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中。
可选的,所述主数据库根据每个从数据库对应的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中,包括:所述主数据库根据每个从数据库对应的第二数据块的地址信息,通过rdma写指令将所述日志条目写入每个从数据库的第二数据块中。
例如,主数据库可以根据循环缓冲区1的头指针指向的从数据库1的数据块41的首地址,通过rdmawrite指令将第一数据块中的日志条目直接写入数据块41中。同理,主数据库可以根据循环缓冲区2的头指针指向的从数据库2的数据块42的首地址,通过rdmawrite指令将第一数据块中的日志条目直接写入数据块42中。其中,主数据库将日志条目同步到数据块41和数据块42的过程例如图4所示的步骤(2)。
在其他一些实施例中,如果从数据库本地的多个数据块的大小不同,则主数据库将日志条目存储到本地的第一数据块之后,还可以根据第一数据块的大小,从每个从数据库对应的多个循环缓冲区中,确定出与第一数据块的大小相匹配的第二数据块对应的循环缓冲区。如图5所示,从数据库1对应于循环缓冲区1和循环缓冲区2,如果第一数据块的大小为64B,则主数据库根据循环缓冲区1的头指针指向的从数据库1的数据块41的首地址,将日志条目同步到数据块41中。同理,主数据库根据将该日志条目同步到从数据库2中与第一数据块的大小相匹配的第二数据块中,该过程此处不再赘述。
本实施例通过主数据库根据本地第一数据块的大小,找到每个从数据库中与该第一数据块的大小相匹配的第二数据块,并将第一数据块中的日志条目同步到每个从数据库的第二数据块中,即通过主数据库的单向操作即可将日志条目同步到多个从数据库,从而不需要从数据库的中央处理器(central processing unit,CPU)介入同步过程,因此节省了从数据库的CPU资源消耗,同时进一步降低了同步延时。
可选的,所述主数据库根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中之后,所述方法还包括如图7所示的如下步骤:
S701、所述主数据库向每个从数据库发送持久化指令,所述持久化指令用于对所述从数据库中的所述第二数据块进行持久化处理。
如图4所示的步骤(2)即主数据库将日志条目同步到数据块41和数据块42之后,主数据库还可以通过rdma send向每个从数据库发送一个持久化指令,例如,persis消息。
可以理解的是,与主数据库建立连接的从数据库不限于如图4所示的从数据库1和从数据库2,例如,还可以有更多的从数据库。通过如上所述的方法,主数据库可以将日志条目同步到与该主数据库连接的从数据库中。进一步,主数据库可以向其连接的每个从数据库发送一个persis消息。
本实施例以从数据库1为例,当从数据库1接收到该persis消息后,从数据库1可以对数据块41进行持久化处理。例如,从数据库1可以对数据块41调用持久化处理程序(例如,fense和clwb)对数据块41中的日志条目进行持久化。
可选的,所述从数据库中的第二数据块和所述从数据库中已经存储有其他日志条目的数据块构成链表。
例如,主数据库通过rdmawrite指令将第一数据块中的日志条目直接写入数据块41后,从数据库1还可以修改数据块41的上一个数据块的尾指针,使得上一个数据块的尾指针指向数据块41的首地址。例如图4所示的数据块40是数据块41的上一个数据块。可选的,数据块的顺序是按照数据块中日志条目的写入顺序确定的。例如,(Key1,Value1)是数据块40中存储的日志条目,(Key2,Value2)是数据块41中存储的日志条目。由于(Key1,Value1)被写入到数据块40的时间早于(Key2,Value2)被写入到数据块41的时间,则数据块40是数据块41的上一个数据块。另外,如图4所示,数据块40还包括尾指针N2,从数据库1通过修改尾指针N2,使得尾指针N2指向数据块41的首地址,从而可以将数据块40和数据块41构成链表。同理,数据块41中的尾指针N3可以指向下一个被写入日志条目的数据块的首地址。可选的,该链表也可作为同步日志被持久化。同理,主数据库通过rdmawrite指令将第一数据块中的日志条目直接写入数据块42后,从数据库2也可以建立链表。其中,从数据库1和从数据库2分别建立链表的过程如图4所示的步骤(3)。
另外,如图4所示,当从数据库1的数据块41被写入日志条目后,循环缓冲区1的头指针指向会发生改变,例如,循环缓冲区1的头指针由原来的指向子区域1,变为指向子区域1的下一个子区域即子区域2。此时,子区域2可以变成循环缓冲区1中的第一个子区域,子区域1可以变成循环缓冲区1中的最后一个子区域,循环缓冲区1的尾指针由原来的指向子区域7,变为指向子区域1。
S702、所述主数据库接收从数据库发送的响应信息,所述响应信息包括第三数据块的地址信息,所述第三数据块是所述从数据库中空着的数据块。
例如,从数据库1可以将其本地的一个空着的数据块的首地址作为对persis消息的响应(response)回复给主数据库。其中,该空着的数据块可记为第三数据块,第三数据块的首地址是从数据库1没有向主数据库发送过的,并且第三数据块的大小和数据块41的大小可以是相同的,该第三数据块例如为图4所示的数据块43。
S703、所述主数据库将所述从数据库发送的第三数据块的地址信息存储到所述从数据库对应的缓存中。
当主数据库接收到数据块43的首地址后,将数据块43的首地址加入到循环缓冲区1中的最后一个子区域中,例如,子区域1。同理,从数据库2可以向主数据库回复第三数据块44的首地址,主数据库将第三数据块44的首地址加入到循环缓冲区2中的最后一个子区域中。其中,主数据库将每个从数据库的第三数据块的首地址加入到循环缓冲区的过程如图4所示的步骤(4)。
本实施例通过主数据库向每个从数据库发送持久化指令,使得从数据库对同步到第二数据块中的日志条目进行持久化处理,另外,从数据库还可以向主数据库反馈第三数据块的地址信息,使得主数据库将从数据库反馈的第三数据块的地址信息更新到该从数据库对应的循环缓冲区中,以便对循环缓冲区中的数据块的地址信息进行不断更新。
在上述实施例的基础上,所述方法还包括如图8所示的如下步骤:
S801、当所述主数据库确定发送所述响应信息的从数据库的个数大于或等于预设个数时,所述主数据库将当前已提交的日志的标识更新为所述日志条目的标识。
可以理解的是,主数据库可以向其连接的每个从数据库发送一个persis消息,但并不是每个从数据库都可以向主数据库反馈一个第三数据块的首地址作为persis消息的响应。例如,在一些情况下,主数据库连接的多个从数据库中可能有部分从数据库向主数据库反馈了第三数据块的首地址,其他从数据库没有向主数据库反馈第三数据块的首地址。在这种情况下,如果与主数据库连接的多个从数据库中超过半数的从数据库反馈了第三数据块的首地址,则主数据库可以将当前已提交的日志的标识更新为第一数据块中的日志条目的标识。其中,当前已提交的日志的标识记为commited index。也就是说,当前已提交的日志的标识表示当前已经成功同步到大多数从数据库的日志标识的最大值。
例如,主数据库向多个从数据库同步日志条目(Key2,Value2)之前,commitedindex为(Key1,Value1)的标识。当主数据库向多个从数据库同步日志条目(Key2,Value2)之后,并且多个从数据库中超过半数的从数据库反馈了第三数据块的首地址,则主数据库可以将commited index更新为(Key2,Value2)的标识。
S802、所述主数据库在内存中存储所述日志条目中的索引信息。
例如,主数据库可以将commited index更新为(Key2,Value2)的标识之后,主数据库还可以进一步提交(commit)数据,例如,主数据库可以在本地的内存中存储(Key2,Value2)中的索引信息即Key2。从而使得主数据库可以通过内存中的Key2找到nvm空间中包括(Key2,Value2)的数据块。
可选的,所述主数据库在内存中存储所述日志条目中的索引信息,包括:所述主数据库在内存中存储所述日志条目中的索引信息和所述第一数据块的地址信息。
例如,主数据库可以在本地的内存中存储(Key2,Value2)中的索引信息即Key2、以及第一数据块的地址信息。相比于主数据库通过内存中的Key2找到nvm空间中包括(Key2,Value2)的数据块,主数据库根据第一数据块的地址信息可以在nvm空间直接找到包括(Key2,Value2)的数据块。
S803、所述主数据库向所述客户端反馈数据处理成功响应。
可选的,所述主数据库将当前已提交的日志的标识更新为所述日志条目的标识之后,所述方法还包括:所述主数据库将所述日志条目的标识同步给所述每个从数据库,所述每个从数据库用于在其内存中存储所述日志条目中的索引信息和所述第二数据块的地址信息。
例如,当主数据库将commited index更新为(Key2,Value2)的标识之后,主数据库还可以将该更新后的commited index同步给每个从数据库,从而使得从数据库根据该更新后的commited index,在各自的内存中存储Key2和第二数据块的地址信息。例如,当如图4所示的从数据库1接收到更新后的commited index时,从数据库1可以在其内存中存储Key2和数据块41的首地址。当如图4所示的从数据库2接收到更新后的commited index时,从数据库2可以在其内存中存储Key2和数据块42的首地址。也就是说,从数据库通过建立指向(Key2,Value2)的指针即可完成提交(commit)数据的操作,并且该过程无数据拷贝。
本实施例通过超过半数的从数据库对主数据库发送下来的日志条目在本地持久化之后,主数据库再向客户端反馈数据处理成功响应,从而使得主数据库和从数据库之间的数据同步保持强一致性,从而避免主备切换时数据丢失。
可选的,所述主数据库将所述日志条目存储到所述第一数据块中之后,所述方法还包括:所述主数据库将所述第一数据块和所述主数据库中已经存储有其他日志条目的数据块构成链表。
在一种可能的实现方式中,当主数据库将日志条目同步到从数据库之前,主数据库可以将本地第一数据块的上一个数据块的尾指针修改为指向第一数据块的首地址,从而使得主数据库中已经被写入日志条目的多个数据块按照日志条目的写入顺序构成链表。
在另一种可能的实现方式中,当主数据库在提交(commit)数据的过程中将主数据库中已经被写入日志条目的多个数据块按照日志条目的写入顺序构成链表。
本实施例通过将主数据库或从数据库中已经存储有日志条目的多个数据块按照所述日志条目的写入顺序构成链表,使得主数据库或从数据库通过链表可以快速的查询到该链表中的某个数据块,从而提高了日志条目的查询效率。
在上述实施例的基础上,可选的,所述日志条目包括待处理的目标数据和所述目标数据的索引信息。
一种可能的情况,当该数据处理请求为数据写入请求时,该日志条目包括终端设备20请求写入主数据库的目标数据和该目标数据的索引信息。例如,图4所示的Value2表示终端设备20请求写入主数据库的目标数据,Key2表示Value2的索引。当主数据库接收到该数据写入请求时,将日志条目(Key2,Value2)同步给与其连接的从数据库,即主数据库将日志条目(Key2,Value2)直接写入从数据库的第二数据块中。
另一种可能的情况:当该数据处理请求为数据删除请求时,该日志条目包括终端设备20请求删除的目标数据的索引信息和NULL。
例如,终端设备20向主数据库发送数据删除请求,该数据删除请求具体用于删除(Key2,Value2),则主数据库可以先在本地的数据块中记录一个删除日志条目(delete logentry),该delete log entry具体可以是(Key2,NULL)。进一步,主数据库将delete logentry同步给每个从数据库,该同步过程与上述写入(Key2,Value2)的过程类似,此处不再赘述。如图9所示,以从数据库1为例,主数据库将(Key2,NULL)写入到从数据库1的数据块45中。从数据库1对(Key2,Value2)的删除操作可以在后台延时进行。
再一种可能的情况:当该数据处理请求为数据修改请求时,该日志条目包括修改后的目标数据和该目标数据的索引信息。
例如,终端设备20向主数据库发送数据修改请求,该数据修改请求用于将(Key2,Value2)修改为(Key2,Value3)。在这种情况下,主数据库可以先删除(Key2,Value2),然后再重新写入(Key2,Value3)。其中,删除操作和写入操作均如上所述,此处不再赘述。
下面结合一个具体的实施例对本公开实施例提供的数据处理方法进行介绍。该数据处理方法包括初始化阶段和客户端请求处理阶段。
例如,在初始化阶段包括如下步骤:
1)多个数据库节点中的每个数据库节点通过内存分配器管理本地的nvm空间,将本地的nvm空间中的数据区按照slab算法划分为多个数据块。
2)多个数据库节点组成一个group,多个数据库节点按照raft协议选举出leader,leader和多个follower之间可以建立rdma连接。
3)每个follower通过rdma send将各自的多个数据块的首地址发送给leader,leader使用ring buffer存储各个follower的多个数据块的首地址。
例如,在客户端请求处理阶段包括如下步骤:
1)leader接收客户端发送的数据处理请求,该数据处理请求例如为数据写入请求。leader对该数据写入请求执行后将执行结果作为一条log entry,将该log entry存储到leader本地的一个数据块中。
2)leader根据该log entry的大小,查找每个follower对应的ring buffer,例如,leader查找到的ring buffer中的每个数据块首地址指向的数据块的大小与该log entry的大小相同。进一步,leader通过rdma write将该log entry写入到每个follower对应的ring buffer的头指针指向的数据块中。
3)leader通过rdma send向每个follower发送persis消息。
4)follower接收到persis消息后,首先会调用持久化处理程序对写入该logentry的数据块进行持久化。然后,follower可以修改上一个log entry的尾指针,使得上一个log entry的尾指针指向当前的log entry。最后,follower可以从本地选取一个与当前的log entry同样大小的新的数据块,并将该新的数据块的首地址作为response回复给leader,leader将该新的数据块的首地址加入到该follower对应的ring buffer的尾部。
5)当超过半数的follower返回response后,leader可以更新commited index,并commit数据,然后向客户端反馈数据处理成功响应。
6)leader可以将更新后的commited index同步给所有的follower,follower接收到更新后的commited index后commit数据,此时follower只需要更新索引指向log entry即可完成commit,该过程无需数据拷贝。
本公开实施例还提供一种数据处理装置。
图10为本公开实施例提供的数据处理装置的结构示意图。该数据处理装置具体可以是如上所述的主数据库或主数据库中的部件。本公开实施例提供的数据处理装置可以执行数据处理方法实施例提供的处理流程,如图10所示,数据处理装置100包括:
接收模块101,用于从客户端接收数据处理请求;
执行模块102,用于执行所述数据处理请求,并将执行结果作为日志条目;
存储模块103,用于将所述日志条目存储到所述主数据库的第一数据块中;
同步模块104,用于根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中。
可选的,存储模块103将所述日志条目存储到所述主数据库的第一数据块中时,具体用于:从所述主数据库的多个数据块中确定所述第一数据块;将所述日志条目存储到所述第一数据块中。
可选的,数据处理装置100还包括:链表构成模块105,用于存储模块103将所述日志条目存储到所述第一数据块中之后,将所述第一数据块和所述主数据库中已经存储有其他日志条目的数据块构成链表。
可选的,数据处理装置100还包括:划分模块106,用于接收模块101从客户端接收数据处理请求之前,将本地的数据区划分为多个数据块,所述从数据库用于将所述从数据库的数据区划分为多个数据块;接收模块101还用于:接收每个从数据库的多个数据块的地址信息;存储模块103用于将每个从数据库的多个数据块的地址信息存储在缓存中。
可选的,数据处理装置100还包括:连接建立模块107,用于和所述多个从数据库建立远程直接数据存取rdma连接;接收模块101用于接收每个从数据库分别通过rdma发送指令发送的所述从数据库的多个数据块的地址信息。
可选的,存储模块103用于将同一个从数据库的多个数据块的地址信息存储到同一个缓存中。
可选的,存储模块103用于将同一个从数据库中大小相同的多个数据块的地址信息存储到同一个缓存中。
可选的,所述缓存为循环缓冲区;
所述循环缓冲区包括多个子区域,每个子区域用于存储从数据库的一个数据块的地址信息;
所述循环缓冲区的头指针指向所述多个子区域中的第一个子区域;
所述循环缓冲区的尾指针指向所述多个子区域中的最后一个子区域。
可选的,同步模块104具体用于:
分别从每个从数据库的多个数据块中确定一个第二数据块,所述第二数据块的大小与所述第一数据块的大小相匹配;
根据每个从数据库对应的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中。
可选的,同步模块104具体用于:
根据所述第一数据块的大小,确定每个从数据库对应的循环缓冲区;
根据每个从数据库对应的循环缓冲区的头指针,确定每个从数据库的第二数据块。
可选的,同步模块104具体用于:
根据每个从数据库对应的第二数据块的地址信息,通过rdma写指令将所述日志条目写入每个从数据库的第二数据块中。
可选的,所述从数据库中的第二数据块和所述从数据库中已经存储有其他日志条目的数据块构成链表。可选的,所述日志条目包括待处理的目标数据和所述目标数据的索引信息。
可选的,数据处理装置100还包括:
发送模块108,用于同步模块104根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中之后,向每个从数据库发送持久化指令,所述持久化指令用于对所述从数据库中的所述第二数据块进行持久化处理;
接收模块101还用于接收从数据库发送的响应信息,所述响应信息包括第三数据块的地址信息,所述第三数据块是所述从数据库中空着的数据块;
发送模块108还用于将所述从数据库发送的第三数据块的地址信息存储到所述从数据库对应的缓存中。
可选的,数据处理装置100还包括:
更新模块109,用于当发送所述响应信息的从数据库的个数大于或等于预设个数时,将当前已提交的日志的标识更新为所述日志条目的标识;
存储模块103还用于:在内存中存储所述日志条目中的索引信息;
发送模块108还用于向所述客户端反馈数据处理成功响应。
可选的,存储模块103在内存中存储所述日志条目中的索引信息时,具体用于:在内存中存储所述日志条目中的索引信息和所述第一数据块的地址信息。
可选的,同步模块104还用于:在更新模块106将当前已提交的日志的标识更新为所述日志条目的标识之后,将所述日志条目的标识同步给所述每个从数据库,所述每个从数据库用于在其内存中存储所述日志条目中的索引信息和所述第二数据块的地址信息。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上描述了数据处理装置的内部功能和结构,该装置可实现为一种电子设备。如图11为本公开实施例提供的电子设备实施例的结构示意图。如图11所示,该电子设备包括存储器111、处理器112和通讯接口113。
存储器111,用于存储程序。除上述程序之外,存储器111还可被配置为存储其它各种数据以支持在电子设备上的操作。
存储器111可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。处理器112,与存储器111耦合,执行存储器111所存储的程序,以执行如上所述的数据处理方法。
另外,本公开实施例还提供了一个或多个机器可读介质,当由一个或多个处理器执行时,使得装置执行如上所述的数据处理方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。
Claims (20)
1.一种数据处理方法,所述方法包括:
主数据库从客户端接收数据处理请求;
所述主数据库执行所述数据处理请求,并将执行结果作为日志条目;
所述主数据库将所述日志条目存储到所述主数据库的第一数据块中;
所述主数据库根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中;
所述主数据库根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中之后,所述方法还包括:
所述主数据库向每个从数据库发送持久化指令,所述持久化指令用于对所述从数据库中的所述第二数据块进行持久化处理;
所述主数据库接收从数据库发送的响应信息,所述响应信息包括第三数据块的地址信息,所述第三数据块是所述从数据库中空着的数据块;
所述主数据库将所述从数据库发送的第三数据块的地址信息存储到所述从数据库对应的缓存中。
2.根据权利要求1所述的方法,所述主数据库将所述日志条目存储到所述主数据库的第一数据块中,包括:
所述主数据库从所述主数据库的多个数据块中确定所述第一数据块;
所述主数据库将所述日志条目存储到所述第一数据块中。
3.根据权利要求2所述的方法,所述主数据库将所述日志条目存储到所述第一数据块中之后,所述方法还包括:
所述主数据库将所述第一数据块和所述主数据库中已经存储有其他日志条目的数据块构成链表。
4.根据权利要求1所述的方法,主数据库从客户端接收数据处理请求之前,所述方法还包括:
所述主数据库将本地的数据区划分为多个数据块,所述从数据库用于将所述从数据库的数据区划分为多个数据块;
所述主数据库接收每个从数据库的多个数据块的地址信息;
所述主数据库将每个从数据库的多个数据块的地址信息存储在缓存中。
5.根据权利要求4所述的方法,所述主数据库接收每个从数据库的多个数据块的地址信息,包括:所述主数据库和所述多个从数据库建立远程直接数据存取rdma连接;
所述主数据库接收每个从数据库分别通过rdma发送指令发送的所述从数据库的多个数据块的地址信息。
6.根据权利要求4所述的方法,所述主数据库将每个从数据库的多个数据块的地址信息存储在缓存中,包括:
所述主数据库将同一个从数据库的多个数据块的地址信息存储到同一个缓存中。
7.根据权利要求4所述的方法,所述主数据库将每个从数据库的多个数据块的地址信息存储在缓存中,包括:
所述主数据库将同一个从数据库中大小相同的多个数据块的地址信息存储到同一个缓存中。
8.根据权利要求4-7任一项所述的方法,所述缓存为循环缓冲区;
所述循环缓冲区包括多个子区域,每个子区域用于存储从数据库的一个数据块的地址信息;
所述循环缓冲区的头指针指向所述多个子区域中的第一个子区域;
所述循环缓冲区的尾指针指向所述多个子区域中的最后一个子区域。
9.根据权利要求8所述的方法,所述主数据库根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中,包括:
所述主数据库分别从每个从数据库的多个数据块中确定一个第二数据块,所述第二数据块的大小与所述第一数据块的大小相匹配;
所述主数据库根据每个从数据库对应的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中。
10.根据权利要求9所述的方法,所述主数据库分别从每个从数据库的多个数据块中确定一个第二数据块,包括:
所述主数据库根据所述第一数据块的大小,确定每个从数据库对应的循环缓冲区;
所述主数据库根据每个从数据库对应的循环缓冲区的头指针,确定每个从数据库的第二数据块。
11.根据权利要求9所述的方法,所述主数据库根据每个从数据库对应的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中,包括:
所述主数据库根据每个从数据库对应的第二数据块的地址信息,通过rdma写指令将所述日志条目写入每个从数据库的第二数据块中。
12.根据权利要求11所述的方法,所述从数据库中的第二数据块和所述从数据库中已经存储有其他日志条目的数据块构成链表。
13.根据权利要求1所述的方法,所述日志条目包括待处理的目标数据和所述目标数据的索引信息。
14.根据权利要求1所述的方法,所述方法还包括:
当所述主数据库确定发送所述响应信息的从数据库的个数大于或等于预设个数时,所述主数据库将当前已提交的日志的标识更新为所述日志条目的标识;
所述主数据库在内存中存储所述日志条目中的索引信息;
所述主数据库向所述客户端反馈数据处理成功响应。
15.根据权利要求14所述的方法,所述主数据库在内存中存储所述日志条目中的索引信息,包括:
所述主数据库在内存中存储所述日志条目中的索引信息和所述第一数据块的地址信息。
16.根据权利要求14或15所述的方法,所述主数据库将当前已提交的日志的标识更新为所述日志条目的标识之后,所述方法还包括:
所述主数据库将所述日志条目的标识同步给所述每个从数据库,所述每个从数据库用于在其内存中存储所述日志条目中的索引信息和所述第二数据块的地址信息。
17.一种数据处理装置,包括:
接收模块,用于从客户端接收数据处理请求;
执行模块,用于执行所述数据处理请求,并将执行结果作为日志条目;
存储模块,用于将所述日志条目存储到主数据库的第一数据块中;
同步模块,用于根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中;
数据处理装置还包括:
发送模块,用于所述同步模块根据多个从数据库中每个从数据库的第二数据块的地址信息,将所述日志条目同步到每个从数据库的第二数据块中之后,向每个从数据库发送持久化指令,所述持久化指令用于对所述从数据库中的所述第二数据块进行持久化处理;
所述接收模块还用于接收从数据库发送的响应信息,所述响应信息包括第三数据块的地址信息,所述第三数据块是所述从数据库中空着的数据块;
所述发送模块还用于将所述从数据库发送的第三数据块的地址信息存储到所述从数据库对应的缓存中。
18.一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-16中一个或多个所述的方法。
19.一种数据处理系统,包括:主数据库和多个从数据库,所述主数据库执行如权利要求1-16中一个或多个所述的方法。
20.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如权利要求1-16中一个或多个所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011055653.1A CN113297234B (zh) | 2020-09-30 | 2020-09-30 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011055653.1A CN113297234B (zh) | 2020-09-30 | 2020-09-30 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113297234A CN113297234A (zh) | 2021-08-24 |
CN113297234B true CN113297234B (zh) | 2023-03-14 |
Family
ID=77318290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011055653.1A Active CN113297234B (zh) | 2020-09-30 | 2020-09-30 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113297234B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115017223B (zh) * | 2022-08-04 | 2022-10-25 | 成都运荔枝科技有限公司 | 一种支持大数据量导入导出的系统 |
CN115237875B (zh) * | 2022-09-26 | 2023-01-24 | 成都卫士通信息产业股份有限公司 | 一种日志数据处理方法、装置、设备、存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103493029A (zh) * | 2011-02-28 | 2014-01-01 | 甲骨文国际公司 | 通用高速缓存管理系统 |
JP2017167654A (ja) * | 2016-03-14 | 2017-09-21 | 株式会社日立ソリューションズ | データ管理装置及びデータベースの管理方法 |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
CN110691062A (zh) * | 2018-07-06 | 2020-01-14 | 浙江大学 | 一种数据写入方法、装置及其设备 |
CN111046051A (zh) * | 2019-11-08 | 2020-04-21 | 网联清算有限公司 | 数据一致性实现方法、装置及存储介质 |
CN111095225A (zh) * | 2017-09-29 | 2020-05-01 | 甲骨文国际公司 | 使用rdma读取存储在非易失性高速缓存中的数据的方法 |
CN111400267A (zh) * | 2019-11-19 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 记录日志的方法和装置 |
-
2020
- 2020-09-30 CN CN202011055653.1A patent/CN113297234B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103493029A (zh) * | 2011-02-28 | 2014-01-01 | 甲骨文国际公司 | 通用高速缓存管理系统 |
JP2017167654A (ja) * | 2016-03-14 | 2017-09-21 | 株式会社日立ソリューションズ | データ管理装置及びデータベースの管理方法 |
CN111095225A (zh) * | 2017-09-29 | 2020-05-01 | 甲骨文国际公司 | 使用rdma读取存储在非易失性高速缓存中的数据的方法 |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
CN110691062A (zh) * | 2018-07-06 | 2020-01-14 | 浙江大学 | 一种数据写入方法、装置及其设备 |
CN111046051A (zh) * | 2019-11-08 | 2020-04-21 | 网联清算有限公司 | 数据一致性实现方法、装置及存储介质 |
CN111400267A (zh) * | 2019-11-19 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 记录日志的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113297234A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933503B (zh) | 在基于哈希的存储系统中从异步到同步复制的一致转变 | |
US11016941B2 (en) | Delayed asynchronous file replication in a distributed file system | |
US10831612B2 (en) | Primary node-standby node data transmission method, control node, and database system | |
EP2821925B1 (en) | Distributed data processing method and apparatus | |
CN113297234B (zh) | 一种数据处理方法、装置、设备及计算机可读存储介质 | |
CN109379432A (zh) | 数据处理方法、装置、服务器及计算机可读存储介质 | |
CN115599747B (zh) | 一种分布式存储系统的元数据同步方法、系统及设备 | |
CN109933312B (zh) | 一种有效降低容器化关系型数据库i/o消耗的方法 | |
CN108762668B (zh) | 一种处理写入冲突的方法及装置 | |
US10620851B1 (en) | Dynamic memory buffering using containers | |
CN113094430B (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
CN112988680B (zh) | 数据加速方法、缓存单元、电子设备及存储介质 | |
CN113010549A (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
CN113407639A (zh) | 数据处理方法、装置、系统及存储介质 | |
US8892535B2 (en) | Database management method | |
WO2020037625A1 (zh) | 分布式存储系统及其数据读写方法、存储终端及存储介质 | |
US10067843B1 (en) | Synchronizing control nodes and a recovery from a failure of a primary control node of a storage system | |
US10579604B2 (en) | Database system, information processing device, method and medium | |
CN109726211B (zh) | 一种分布式时序数据库 | |
US10853314B1 (en) | Overlay snaps | |
CN107145302B (zh) | 一种用于在分布式存储系统中执行文件写入的方法与设备 | |
US11269735B2 (en) | Methods and systems for performing data backups | |
CN109992447B (zh) | 数据复制方法、装置及存储介质 | |
CN107608623B (zh) | 一种异步远程复制的方法、装置和系统 | |
WO2015145586A1 (ja) | データベースシステム、情報処理装置、方法およびプログラム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |