数据存储方法及系统与流程

未命名 07-23 阅读:98 评论:0
1.本说明书实施例涉及计算机
技术领域
:,特别涉及一种数据存储方法。
背景技术
::2.随着计算机技术的发展,以“处理器+动态存储介质+硬盘”的为代表的多层计算存储架构,随着持久性存储介质(persistentmemory,pm)的出现,发生了极大的改变。应用持久性存储介质,给数据库系统带来了多方面的提升:与dram(dynamicrandomaccessmemory,动态随机存取存储介质)为代表的动态存储介质相比,持久性存储介质的存储容量更大且存储内容具有持久性;与ssd(solidstatedisk,固态硬盘)为代表的硬盘相比,持久性存储介质提供了字节寻址能力,读写速度更快。3.目前,直接用持久性存储介质替换计算节点中的内存,由于计算节点的硬件数量限制,扩展性不足。利用持久性存储介质构建分布式的持久性存储节点,由于计算节点不仅存在大量的数据读写操作,同时存在大量的日志读写操作,对于计算节点和持久性存储节点之间的有限带宽,是一个极大的数据读写压力,容易造成阻塞,造成数据存储效率和稳定性不足。因此,亟需一种可以高扩展性、高效率和高稳定性的数据存储方法。技术实现要素:4.有鉴于此,本说明书实施例提供了数据存储方法。本说明书一个或者多个实施例同时涉及一种数据存储系统,一种数据存储装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序。5.根据本说明书实施例的第一方面,提供了一种数据存储方法,应用于数据存储系统中的计算节点,数据存储系统还包括独立设置的内存节点,包括:6.获取待处理数据;7.对待处理数据进行数据处理,得到日志数据;8.将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点上配置有持久性存储介质。9.根据本说明书实施例的第二方面,提供了一种数据存储方法,应用于数据存储系统中独立设置的内存节点,内存节点上配置有持久性存储介质,包括:10.接收计算节点发送的日志数据;11.对日志数据进行日志回放,得到数据处理结果;12.对数据处理结果和日志数据进行存储。13.根据本说明书实施例的第三方面,提供了一种数据存储系统,包括:计算节点和内存节点;14.计算节点,用于获取待处理数据,对待处理数据进行数据处理,得到日志数据,将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点上配置有持久性存储介质;15.内存节点,用于接收计算节点发送的日志数据,对日志数据进行日志回放,得到数据处理结果,对数据处理结果和日志数据进行存储。16.根据本说明书实施例的第四方面,提供了一种数据存储装置,应用于数据存储系统中的计算节点,数据存储系统还包括独立设置的内存节点,包括:17.获取模块,被配置为获取待处理数据;18.处理模块,被配置为对待处理数据进行数据处理,得到日志数据;19.第一发送模块,被配置为将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点上配置有持久性存储介质。20.根据本说明书实施例的第五方面,提供了一种数据存储装置,应用于数据存储系统中独立设置的内存节点,内存节点上配置有持久性存储介质,包括:21.接收模块,被配置为接收计算节点发送的日志数据;22.回放模块,被配置为对日志数据进行日志回放,得到数据处理结果;23.第一存储模块,被配置为对数据处理结果和日志数据进行存储。24.根据本说明书实施例的第六方面,提供了一种计算设备,包括:25.存储器和处理器;26.所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据存储方法的步骤。27.根据本说明书实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述数据存储方法的步骤。28.根据本说明书实施例的第八方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据存储方法的步骤。29.本说明书一个或多个实施例中,获取待处理数据;对待处理数据进行数据处理,得到日志数据;将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点上配置有持久性存储介质。通过分离架构的计算节点和内存节点,内存节点作为单独的抽象出内存特性的节点,为计算节点提供数据存储服务,提供了良好的可拓展性,在计算节点上完成数据处理后,将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放,还原出数据处理结果,降低了向内存节点发送的数据量,充分利用了有限带宽,降低了阻塞概率,提升了数据存储的效率和稳定性。附图说明30.图1是本说明书一个实施例提供的一种数据存储方法的流程图;31.图2是本说明书一个实施例提供的另一种数据存储方法的流程图;32.图3是本说明书一个实施例提供的一种应用于分布式数据库的数据存储方法的处理过程流程图;33.图4是本说明书一个实施例提供的一种数据存储系统的结构示意图;34.图5是本说明书一个实施例提供的一种数据存储系统的架构图;35.图6是本说明书一个实施例提供的一种数据存储系统中计算节点的数据结构图;36.图7是本说明书一个实施例提供的一种数据存储系统中内存节点的存储结构图;37.图8是本说明书一个实施例提供的一种数据存储系统中内存节点的数据结构图;38.图9是本说明书一个实施例提供的一种数据存储装置的结构示意图;39.图10是本说明书一个实施例提供的另一种数据存储装置的结构示意图;40.图11是本说明书一个实施例提供的一种计算设备的结构框图。具体实施方式41.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。42.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。43.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。44.此外,需要说明的是,本说明书一个或多个实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。45.首先,对本说明书一个或多个实施例涉及的名词术语进行解释。46.持久化存储介质(pm,persistentmemory):一种具有字节寻址能力的大容量存储介质,具有高读写速度、大容量存储和持久化存储的特点。与dram相比,pm容量更大同时还有具有持久性。与ssd相比,pm提供了字节寻址能力,与大多数ssd型号相比,性能更高。同时,pm产品的成本仍然大大高于高端ssd,并对处理器要求更高。作为对dram分离架构的替代或补充方案,pm可用于建立可扩展的弹性的云原生数据库。47.持久化存储节点(pmn,persistentmemorynode):一种与计算节点分离设置的远程存储节点,持久化存储节点上配置有持久化存储介质,持久化存储节点上设置有远程缓存池。48.计算节点(cn,computingnode):用于进行数据处理的本地节点,计算节点上配置有处理器和动态存储介质(内存),具有更高的读写速度、小容量存储和动态存储的特点。49.rdma(remotedirectmemoryaccess,远程直接数据存取):一种远程数据存储协议,通过rdma通过网络直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,解决了远程数据存储过程中,远程存储节点的数据处理延迟问题。50.单边rdma:一端在确定了另一端动态存储地址的前提条件下,直接向另一端发送数据,不需要另一端的处理器参与。51.双边rdma:一端向另一端发送数据,在另一端预先准备动态存储空间的情况下,才能向另一端发送数据。52.dram(dynamicrandomaccessmemory,动态随机存取存储介质):一种动态存储介质,具有更高的读写速度、小容量存储和动态存储的特点。53.wal(write-aheadlogging,预写日志算法):采用wal日志的数据库系统在事务提交时,磁盘写操作只有传统的回滚日志的一半左右,大大提高了数据库磁盘i/o操作的效率,从而提高了数据库的性能。54.cdlog(computingdrivinglog,计算驱动日志):一种由计算节点进行驱动的日志机制。55.lsn(logsequencenumber,日志序列号):是一个一直递增的整形数字,表示数据处理记录写入到日志的字节总量。56.mini-page:迷你数据页,通过将数据处理结果的数据页划分为多个子页得到的。57.ssd(solidstatedisk,固态硬盘):一种由控制单元和存储单元组成的持久性存储介质。58.hdd(harddiskdrive,机械硬盘):由盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成的持久性存储介质。59.数据页:对存储介质上固定大小的存储空间进行划分,将数据写入对应的部分存储空间,形成数据页。例如,对16k的存储空间进行划分,得到7个部分存储空间,将数据写入对应的部分存储空间,构成数据页。60.持久性:数据处理结果在发送后就不能回滚,数据处理结果是永久性的。61.事务提交:计算节点将日志发送至持久性存储节点,对数据处理结果和日志数据进行持久性存储的操作。62.数据库引擎:用于存储、处理和保护数据的核心服务程序,为客户端的用户提供数据访问功能,本说明书中一个或多个实施例中数据库引擎为mysql数据库引擎。63.脏位(dirtybit):又称页面重写标志位,表示该数据页是否被写过。64.元数据表(metadatatable)是一张数据的地址索引表,元数据表利用哈希表实现,配合开放寻址方法。其中,元数据表的行键=数据页的id+数据页存储地址,用于数据的定位以及一些元数据服务。65.在本说明书中,提供了数据存储方法,本说明书同时涉及一种数据存储系统,一种数据存储装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,在下面的实施例中逐一进行详细说明。66.参见图1,图1示出了根据本说明书一个实施例提供的一种数据存储方法的流程图,该方法应用于数据存储系统中的计算节点,数据存储系统还包括独立设置的内存节点,包括如下具体步骤:67.步骤102:获取待处理数据。68.本说明书应用于数据存储系统中的计算节点,数据存储系统包括但不限于计算节点、内存节点和数据存储节点,计算节点上配置有处理器和动态存储介质,内存节点为一种持久性存储节点,配置有持久性存储介质。计算节点与内存节点之间通过数据传输信道相连接,数据传输信道的数据传输速率高,保证了数据存储的高效率。内存节点上留有一个对应于计算节点的动态存储接口。内存节点一般为多个,是一种分布式存储节点,具有高扩展性。计算节点可以连接到多个内存节点,以分布式或者日志复制的方式保证高可用性。在一组持久性存储节点中,有一个将被指定为主副本,为应用程序提取日志数据。69.待处理数据为用于进行数据处理的初始数据。例如,待处理数据为表格数据,数据处理为对表格数据进行数值统计;待处理数据为图片数据,数据处理对图片数据进行图像裁切。待处理数据可以为预先写入处理器的缓存中,也可以预先写入计算节点的动态存储介质中,还可以从数据存储节点上获取并写入计算节点的动态存储介质中,在此不作限定。待处理数据可以为之前数据处理的处理结果,用于此次数据处理的待处理数据,也可以为新获取的待处理数据,在此不作限定。70.需要说明的是,获取待处理数据是在接收用户发送的数据处理请求后,经过数据库引擎的解析、处理,获取待处理数据。71.示例性地,从计算节点的动态存储介质中,获取预先写入的待处理数据data_a。72.获取待处理数据,为后续进行数据处理,得到日志数据,提供了初始数据,奠定了基础。73.步骤104:对待处理数据进行数据处理,得到日志数据。74.数据处理为对数据进行任务处理,例如,对待处理数据进行数据分类,对待处理数据进行数值计算,对待处理数据进行数据插入、删除、修改,等。75.日志数据为记录有对待处理数据进行数据处理记录的数据,包括至少一个数据处理记录,日志数据可以为物理日志数据,也可以为逻辑日志数据,其中,物理日志数据的日志回放效率高于逻辑日志数据。76.对待处理数据进行数据处理,得到日志数据,具体方式为:对待处理数据进行数据处理,得到数据处理记录,整合数据处理记录,得到日志数据。77.需要说明的是,对待处理数据进行数据处理,得到数据处理记录,整合数据处理记录,得到日志数据,是通过调用数据库引擎来对动态存储介质中数据页执行读写操作来实现的。78.示例性地,对待处理数据data_a进行数值计算和数据修改,得到数据处理记录record(record_1、record_2……record_n),整合数据处理记录,得到日志数据log。79.对待处理数据进行数据处理,得到日志数据,为后续发送日志数据至内存节点,进行日志回放和存储,奠定了日志数据的基础。80.步骤106:将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点上配置有持久性存储介质。81.由于计算节点上的动态存储介质的存储容量较小且为动态存储,计算节点上会对数据处理结果进行覆盖,在存储容量较高且读写速度的持久性存储介质上对数据处理结果进行存储,可以保证数据存储的持久性,且不会占用计算节点上的存储空间,同时,相比于数据存储节点上的硬盘存储介质,具有更高的读写速度,数据存储的效率更高。82.数据处理结果为对待处理数据进行数据处理得到的结果数据。例如,待处理数据为表格数据,数据处理为对表格数据进行数值统计,数据处理结果为数值统计结果;待处理数据为图像数据,数据处理为对图像数据进行裁切,数据处理结果为裁切后的图像数据。数据处理结果可以为写入处理器的缓存中,也可以写入计算节点的动态存储介质中,还可以不进行写入,即不得到数据处理结果,在此不作限定。83.日志回放为根据日志数据中的数据处理记录,再执行数据处理,得到数据处理结果。84.内存节点上设置有用于存储数据处理结果的持久性存储介质,以及用于存储日志数据的持久性存储介质。85.需要说明的是,步骤102获取待处理数据,也为一种数据处理,也会得到日志数据,即为初始化数据。将该日志数据发送至持久性存储节点后,进行日志回放,得到初始化的待处理数据,根据后续的日志数据,进行日志回放,得到数据处理结果。86.需要说明的是,待处理数据和数据处理结果的数据量都远远大于日志数据的数据量,本说明书实施例通过向内存节点发送数据量小的日志数据,即可在内存节点上通过日志回放,还原得到数据处理结果,避免了大数据量占用计算节点和内存节点之间的带宽,降低了阻塞的概率,提升了数据存储的效率和稳定性。87.需要说明的是,在内存节点上存储了数据处理结果后,在后续计算节点需要对数据处理结果进行再处理的情况下,可以将数据处理结果发送至计算节点,也可以将数据处理结果对应的日志数据发送至计算节点,在计算节点进行日志回放,得到数据处理结果。88.将日志数据发送至内存节点,具体方式为:按照预设的远程数据存储协议,将日志数据发送至内存节点。其中,远程数据存储协议包括单边rdma和双边rdma。由于双边的rdma可以更好保证计算节点驱动持久性存储节点进行数据存储的持久性,需要持久性存储节点上的处理器大量参与数据存储,因而双边rdma的延迟更高,而单边rdma具有更低的延迟,本说明书实施例中,使用单边rdma有效降低了延迟,提升了数据存储效率。89.对日志数据进行日志回放得到数据处理结果,具体方式为:根据日志数据中的数据处理记录,对持久性存储节点上的待处理数据进行数据处理,得到数据处理结果。90.对数据处理结果和日志数据进行存储,具体方式为:将数据处理结果存储至对应的数据存储介质,将日志数据存储至对应的日志存储介质,其中,数据存储介质和日志存储介质为预先划分的用于存储对应类型数据的持久性存储介质。91.示例性地,按照单边rdma,将日志数据log发送至内存节点,以使内存节点根据日志数据中的数据处理记录record(record_1、record_2……record_n),对持久性存储节点上的待处理数据data_a进行数值计算和数据修改,得到数据处理结果data_b,将数据处理结果存储至对应的数据存储介质,将日志数据存储至对应的日志存储介质,其中,数据存储介质和日志存储介质为预先划分的用于存储对应类型数据的持久性存储介质。92.本说明书实施例中,获取待处理数据;对待处理数据进行数据处理,得到日志数据;将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点上配置有持久性存储介质。通过分离架构的计算节点和内存节点,内存节点作为单独的抽象出内存特性的节点,为计算节点提供数据存储服务,提供了良好的可拓展性,在计算节点上完成数据处理后,将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放,还原出数据处理结果,降低了向内存节点发送的数据量,充分利用了有限带宽,降低了阻塞概率,提升了数据存储的效率和稳定性。93.本说明书一种可选实施例中,步骤102包括如下具体步骤:94.接收数据存储节点发送的待处理数据。95.数据存储节点为配置有硬盘存储介质的远程存储节点,数据存储节点与计算节点分离设置。计算节点利用分布式文件系统与数据存储节点连接,构建数据传输信道。其中,数据存储节点一般为多个,是一种分布式存储节点,相比于持久性存储节点上的持久性存储介质,数据存储节点上的硬盘存储介质的读写速率较慢,但存储容量较大,成本较低。96.接收数据存储节点发送的待处理数据,具体方式为:向数据存储节点发送数据获取请求,其中,数据获取请求携带有待处理数据的相关信息,接收数据存储节点发送的根据相关信息获取的待处理数据。97.需要说明的是,计算节点在接收数据存储节点发送的待处理数据后,将待处理数据写入动态存储介质中,用于后续的数据处理。98.示例性地,向数据存储节点发送数据获取请求request,其中,数据获取请求携带有待处理数据data_a的相关信息infodata_a,接收数据存储节点发送的根据相关信息获取的待处理数据。99.接收数据存储节点发送的待处理数据,为后续进行数据处理,得到日志数据,提供了初始数据,奠定了基础。100.本说明书一种可选实施例中,步骤104包括如下具体步骤:101.对待处理数据进行数据处理,得到数据处理结果和日志数据。102.对待处理数据进行数据处理,得到数据处理结果和日志数据,具体方式为:对待处理数据进行数据处理,得到数据处理结果和数据处理记录,整合数据处理记录,得到日志数据。103.需要说明的是,数据处理的具体过程是调用数据库引擎对动态存储介质上的数据页进行读写操作,来实现数据处理,并写入数据处理记录,在完成数据读写后,动态存储介质上更新数据页,即为数据处理结果,通过整合数据处理记录,得到日志数据,用于后续的事务提交。104.示例性地,对待处理数据data_a进行数值计算和数据修改,得到数据处理结果data_b和数据处理记录record(record_1、record_2……record_n),整合数据处理记录,得到日志数据log。105.对待处理数据进行数据处理,得到数据处理结果和日志数据,为后续发送日志数据至内存节点,进行日志回放和存储,奠定了数据处理结果和日志数据的基础。106.本说明书一种可选实施例中,其中,待处理数据包括待处理数据页,数据处理结果包括至少一个数据处理结果子页,日志数据包括至少一个数据处理结果子页对应的数据处理记录;107.对应地,对待处理数据进行数据处理,得到数据处理结果和日志数据,包括如下具体步骤:108.将待处理数据页划分为多个待处理数据子页;109.对至少一个待处理数据子页进行数据处理,获得至少一个数据处理结果子页和对应的数据处理记录。110.待处理数据页为动态存储介质上用于进行数据处理的初始数据页。待处理数据子页为对待处理数据页进行逻辑划分后的初始数据子页,即mini-page(迷你数据页)。111.数据处理结果子页为对待处理数据子页进行数据处理后得到的更新数据子页。112.在对任一待处理数据子页进行数据处理,得到更新后的数据处理结果子页的过程中,对数据处理操作进行记录,得到对应的数据处理记录。113.需要说明的是,在将待处理数据页划分为多个待处理数据子页之后,对各待处理数据子页添加脏位标记,用以标注经过写入操作的待处理数据子页,并根据脏位标记,为经过写入操作的待处理数据子页分配日志序列号,用于记录对应的数据处理记录。只需要整合经过写入操作的数据处理子页对应的数据处理记录,得到日志数据,并进行发送,降低了发送的数据量,避免过多占用内存节点的写入带宽,降低了阻塞概率,提升了数据存储效率。114.将待处理数据页划分为多个待处理数据子页,具体方式为:将待处理数据页逻辑划分为多个待处理数据子页。其中,逻辑划分可以为根据待处理数据页的数据类型、数据量、数据读写逻辑等进行划分。115.示例性地,将待处理数据页data_a.page逻辑划分为7个待处理数据子页mini-page(data_a1.page、data_a2.page……data_a7.page),对至少一个待处理数据子页进行数据处理,获得至少一个数据处理结果子页mini-page(data_b1.page、data_b2.page……data_b7.page)和对应的数据处理记录record(record_1、record_2……record_7)。116.将待处理数据页划分为多个待处理数据子页,对至少一个待处理数据子页进行数据处理,获得至少一个数据处理结果子页和对应的数据处理记录,降低了发送的数据量,进一步避免过多占用内存节点的写入带宽,进一步降低了阻塞概率,进一步提升了数据存储效率。117.本说明书一种可选实施例中,步骤106包括如下具体步骤:118.为至少一个数据处理结果子页配置对应的第一存储地址;119.将至少一个数据处理记录和对应的第一存储地址发送至内存节点,以使内存节点对各数据处理记录进行日志回放,得到对应的数据处理结果子页,将各数据处理结果子页存储至对应的第一存储地址中,其中,第一存储地址为持久性存储介质上的存储地址。120.第一存储地址为内存节点上的持久性存储介质上的存储地址。预先在计算节点上为各数据处理结果子页配置对应的第一存储地址,以使内存节点根据第一存储地址,对日志回放得到的数据处理结果子页进行准确的存储。121.为至少一个数据处理结果子页配置对应的第一存储地址,具体方式为:根据预设的数据页的元数据表,为至少一个数据处理结果子页配置对应的第一存储地址。其中,元数据表上记录每个数据处理结果子页的元数据包含4个字段:第二存储地址表示当前数据子页在本地动态存储介质中的存储地址,脏位向量用于追踪脏位标记的数据处理结果子页。本地日志序列号用于记录数据子页最新修改的日志序列号,第一存储地址是当前数据子页在持久性存储介质上的存储地址。122.将至少一个数据处理记录和对应的第一存储地址发送至内存节点,具体方式为:按照预设的远程数据存储协议,将至少一个数据处理记录和对应的第一存储地址发送至内存节点。其中,远程数据存储协议包括单边rdma和双边rdma。123.对各数据处理记录进行日志回放,得到对应的数据处理结果子页,具体方式为:根据各数据处理记录,对持久性存储节点上的对应的待处理数据子页进行数据处理,得到数据处理结果子页。124.示例性地,根据预设的数据页的元数据表metadatatable,为7个数据处理结果子页mini-page(data_b1.page、data_b2.page……data_b7.page)配置对应的第一存储地址rbp(rbp1、rbp2……rbp7),按照单边rdma,将7个数据处理记录和对应的第一存储地址发送至内存节点,以使内存节点根据各数据处理记录record(record_1、record_2……record_n),对持久性存储节点上的对应的7个待处理数据子页mini-page(data_a1.page、data_a2.page……data_a7.page)进行数值计算和数据修改,得到数据处理结果子页,将各数据处理结果子页存储至对应的第一存储地址中。125.为至少一个数据处理结果子页配置对应的第一存储地址,将至少一个数据处理记录和对应的第一存储地址发送至内存节点,以使内存节点对各数据处理记录进行日志回放,得到对应的数据处理结果子页,将各数据处理结果子页存储至对应的第一存储地址中,其中,第一存储地址为持久性存储介质上的存储地址,保证了对内存节点上日志回放得到的数据处理结果子页进行准确的存储,提升了数据存储的稳定性。126.本说明书一种可选实施例中,其中,计算节点上配置有动态存储介质;127.对应地,在对待处理数据进行数据处理,得到数据处理结果和日志数据之后,还包括如下具体步骤:128.将数据处理结果存储至动态存储介质中。129.由于数据处理结果可能用于后续的数据处理,因而,在获得数据处理结果后,将其存储在计算节点的动态存储介质中,保证了后续数据处理的处理效率。130.将数据处理结果存储至动态存储介质中,可以是通过调用数据库引擎,对动态存储介质上的数据表进行读写操作,实现对数据页的更新,得到数据处理结果,即将其直接存储在动态存储介质中。也可以是将动态存储介质中的待处理数据写入处理器的缓存中,通过调用数据库引擎,对缓存上的数据表进行读写操作,实现对数据页的更新,得到数据处理结果,再将数据处理结果存储至动态存储介质中。131.可选地,动态存储介质中配置有本地缓存池,用于存储高读写频率的数据处理结果。132.通过将数据处理结果存储至动态存储介质中,保证了后续数据处理的处理效率。133.本说明书一种可选实施例中,在对待处理数据进行数据处理,得到数据处理结果和日志数据之后,还包括如下具体步骤:134.将数据处理结果发送至数据存储节点,以使数据存储节点对数据处理结果进行存储。135.由于动态存储介质是一种动态存储的存储介质,会随着后续的数据处理,得到更新的数据处理结果,进而对初始的数据处理结果进行覆盖,因而,为了保证对数据处理结果的持久性存储,需要将其存储至配置有硬件存储介质的数据存储节点,保证了存储的数据处理结果的持久性,提升了数据存储的稳定性。136.将数据处理结果发送至数据存储节点,以使数据存储节点对数据处理结果进行存储,具体方式为:为数据处理结果配置对应的第三存储地址,其中,第三存储地址为数据存储节点的硬盘存储介质上的存储地址,将数据处理结果发送至数据存储节点,以使数据存储节点将数据处理结果存储至第三存储地址。更进一步地,为数据处理结果配置对应的第三存储地址,具体方式为:根据预设的元数据表,为数据处理结果配置对应的第三存储地址。更进一步地,将数据处理结果发送至数据存储节点,具体方式为:按照预设的远程数据存储协议,将数据处理结果发送至数据存储节点。其中,远程数据存储协议包括单边rdma和双边rdma。137.示例性地,根据预设的元数据表metadatatable,为数据处理结果data_b配置对应的第三存储地址addr,按照单边rdma,将数据处理结果发送至数据存储节点,以使数据存储节点将数据处理结果存储至第三存储地址。138.将数据处理结果发送至数据存储节点,以使数据存储节点对数据处理结果进行存储,保证了存储的数据处理结果的持久性,提升了数据存储的稳定性。139.本说明书一种可选实施例中,在步骤106之后,还包括如下具体步骤:140.在对已被覆盖的数据处理结果进行数据处理的情况下,从内存节点获取历史数据处理结果;141.判断历史数据处理结果是否为已被覆盖的数据处理结果;142.若否,从内存节点获取历史数据处理结果对应的历史日志数据,并对历史日志数据进行日志回放,得到数据处理结果。143.由于动态存储介质是一种动态存储的存储介质,会随着后续的数据处理,用其他数据对数据处理结果进行覆盖,当后续需要对覆盖的数据处理结果进行再处理的时候,可以从内存节点中获取。然而,内存节点在接收到计算节点发送的日志数据,对日志数据进行日志回放的过程,需要一定的耗时,在日志回放的过程中,从内存节点中获取历史数据处理结果,可能不是最新的数据处理结果,不能对其直接进行数据处理,需要判断是否为已被覆盖的数据处理结果,在是的情况下,对其进行数据处理,在否的情况下,需要先对历史日志数据进行日志回放,得到最新的数据处理结果,再对其进行数据处理。144.需要说明的是,内存节点上留有一个对应于计算节点的动态存储接口,因而计算节点可以直接从内存节点上获取历史处理数据和历史日志数据。145.历史数据处理结果为内存节点上日志回放得到的数据处理结果。历史日志数据为记录有对历史数据处理结果进行数据处理记录的数据,包括至少一个数据处理记录,历史日志数据可以为物理日志数据,也可以为逻辑日志数据,其中,物理日志数据的日志回放效率高于逻辑日志数据。例如,已被覆盖的数据处理结果为数据2,历史数据处理结果为数据1,历史日志数据记录有对数据1进行数据处理,得到数据2的数据处理记录,计算节点获取历史数据处理结果,日志回放得到数据2。146.对历史日志数据进行日志回放,得到数据处理结果,具体方式为:根据历史日志数据中的数据处理记录,对历史数据处理结果进行数据处理,得到数据处理结果。例如,计算机节点上,对历史数据处理结果data_a进行数据处理,得到数据处理结果data_b,得到对应的;历史日志数据log,并将历史日志数据log发送至内存节点进行日志回放,此时计算节点上,数据处理结果data_b已被覆盖,且需要对数据处理结果data_b进行数据处理,从内存节点获取该历史数据处理结果data_a,判断历史数据处理结果data_a不为已被覆盖的数据处理结果data_b,从内存节点获取历史数据处理结果data_a对应的历史日志数据log,并对历史日志数据log进行日志回放,得到数据处理结果data_b。147.示例性地,在对已被覆盖的数据处理结果data_b进行数据处理的情况下,从内存节点获取历史数据处理结果data_a,判断历史数据处理结果是否为已被覆盖的数据处理结果,若否,从内存节点获取历史数据处理结果data_a对应的历史日志数据log,并根据历史日志数据中的数据处理记录record(record_1、record_2……record_n),对历史数据处理结果data_a进行数据处理,得到数据处理结果data_b。148.在对已被覆盖的数据处理结果进行数据处理的情况下,从内存节点获取历史数据处理结果,判断历史数据处理结果是否为已被覆盖的数据处理结果,若否,从内存节点获取历史数据处理结果对应的历史日志数据,并对历史日志数据进行日志回放,得到数据处理结果,提升了数据处理的稳定性和适用性。149.参见图2,图2示出了根据本说明书一个实施例提供的另一种数据存储方法的流程图,该方法应用于数据存储系统中独立设置的内存节点,内存节点上配置有持久性存储介质,包括如下具体步骤:150.步骤202:接收计算节点发送的日志数据。151.本说明书实施例应用于数据存储系统中独立设置的内存节点,数据存储系统包括但不限于计算节点、内存节点和数据存储节点,计算节点上配置有处理器和动态存储介质,内存节点为一种持久性存储节点,配置有持久性存储介质。内存节点与计算节点之间通过数据传输信道相连接,数据传输信道的数据传输速率高,保证了数据存储的高效率。内存节点上留有一个对应于计算节点的动态存储接口。内存节点一般为多个,是一种分布式存储节点,具有高扩展性。152.由于计算节点上的动态存储介质的存储容量较小且为动态存储,计算节点上的动态存储节点中有大数据吞吐量,会用其他数据对数据处理结果进行覆盖,在存储容量较高且读写速度的持久性存储介质上对数据处理结果进行存储,可以保证数据的持久性,且不会占用计算节点上的存储空间,同时,相比于数据存储节点上的硬盘存储介质,具有更高的读写速度,数据存储的效率更高。153.日志数据为记录有对待处理数据进行数据处理记录的数据,包括至少一个数据处理记录。日志数据可以为物理日志数据,也可以为逻辑日志数据,其中,物理日志数据的日志回放效率高于逻辑日志数据。154.接收计算节点发送的日志数据,具体方式为:按照预设的远程数据存储协议,接收计算节点发送的日志数据。其中,远程数据存储协议包括单边rdma和双边rdma。由于双边的rdma可以更好保证计算节点驱动持久性存储节点进行数据存储的持久性,需要持久性存储节点上的处理器大量参与数据存储,因而双边rdma的延迟更高,而单边rdma具有更低的延迟,本说明书实施例中,使用单边rdma有效降低了延迟,提升了数据存储效率。155.示例性地,按照单边rdma,接收计算节点发送的日志数据log。156.接收计算节点发送的日志数据,为后续进行日志回放,得到数据处理结果,奠定了基础。157.步骤204:对日志数据进行日志回放,得到数据处理结果。158.日志回放为根据日志数据中的数据处理记录,再执行数据处理,得到数据处理结果。159.需要说明的是,计算节点在获取待处理数据,也为一种数据处理,也会得到日志数据,即为初始化数据。将接收计算节点发送的日志数据,进行日志回放,得到初始化的待处理数据,根据后续的日志数据,进行日志回放,得到数据处理结果。160.对日志数据进行日志回放,得到数据处理结果,具体方式为:根据日志数据中的数据处理记录,对持久性存储节点上的待处理数据进行数据处理,得到数据处理结果。161.示例性地,根据日志数据log中的数据处理记录record(record_1、record_2……record_n),对持久性存储节点上的待处理数据data_a进行数值计算和数据修改,得到数据处理结果data_b。162.对日志数据进行日志回放,得到数据处理结果,实现了数据处理结果的还原,保证了数据的持久性。163.步骤206:对数据处理结果和日志数据进行存储。164.持久性存储节点上设置有用于存储数据处理结果的持久性存储介质,以及用于存储日志数据的持久性存储介质。165.对数据处理结果和日志数据进行存储,具体方式为:将数据处理结果存储至对应的数据存储介质,将日志数据存储至对应的日志存储介质,其中,数据存储介质和日志存储介质为预先划分的用于存储对应类型数据的持久性存储介质。166.示例性地,将数据处理结果data_b存储至对应的数据存储介质,将日志数据log存储至对应的日志存储介质,其中,数据存储介质和日志存储介质为预先划分的用于存储对应类型数据的持久性存储介质。167.本说明书实施例中,接收计算节点发送的日志数据;对日志数据进行日志回放,得到数据处理结果;对数据处理结果和日志数据进行存储。通过分离架构的计算节点和内存节点,内存节点作为单独的抽象出内存特性的节点,为计算节点提供数据存储服务,提供了良好的可拓展性,接收计算节点发送的日志数据,对日志数据进行日志回放,还原出数据处理结果,降低了接收内存节点发送的数据量,充分利用了有限带宽,降低了阻塞概率,提升了数据存储的效率和稳定性。168.本说明书一种可选实施例中,其中,日志数据包括至少一个数据处理结果子页对应的数据处理记录;169.对应地,步骤204包括如下具体步骤:170.对各数据处理记录进行日志回放,得到对应的数据处理结果子页,其中,各数据处理记录和对应的数据处理结果子页为计算节点将待处理数据页划分为多个待处理数据子页,对至少一个待处理数据子页进行数据处理得到的。171.待处理数据页为动态存储介质上用于进行数据处理的初始数据页。待处理数据子页为对待处理数据页进行逻辑划分后的初始数据子页,即mini-page(迷你数据页)。172.数据处理结果子页为对待处理数据子页进行数据处理后得到的更新数据子页。173.在计算节点上,对任一待处理数据子页进行数据处理,得到更新后的数据处理结果子页的过程中,对数据处理操作进行记录,得到对应的数据处理记录。174.需要说明的是,在计算节点上,在将待处理数据页划分为多个待处理数据子页之后,对各待处理数据子页添加脏位标记,用以标注经过写入操作的待处理数据子页,并根据脏位标记,为经过写入操作的待处理数据子页分配日志序列号,用于记录对应的数据处理记录。只需要整合经过写入操作的数据处理子页对应的数据处理记录,得到日志数据,并进行发送,降低了发送的数据量,避免过多占用内存节点的写入带宽,降低了阻塞概率,提升了数据存储效率。175.将待处理数据页划分为多个待处理数据子页,具体方式为:将待处理数据页逻辑划分为多个待处理数据子页。其中,逻辑划分可以为根据待处理数据页的数据类型、数据量、数据读写逻辑等进行划分。176.对各数据处理记录进行日志回放,得到对应的数据处理结果子页,具体方式为:根据各数据处理记录,对持久性存储节点上的待处理数据子页进行数据处理,得到对应的数据处理结果子页。177.示例性地,根据7个数据处理记录record(record_1、record_2……record_7),对持久性存储节点上的7个待处理数据子页mini-page(data_a1.page、data_a2.page……data_a7.page)进行数据处理,得到对应的7个数据处理结果子页mini-page(data_b1.page、data_b2.page……data_b7.page)。178.对各数据处理记录进行日志回放,得到对应的数据处理结果子页,其中,各数据处理记录和对应的数据处理结果子页为计算节点将待处理数据页划分为多个待处理数据子页,对至少一个待处理数据子页进行数据处理得到的,降低了接收的数据量,进一步避免过多占用内存节点的写入带宽,进一步降低了阻塞概率,进一步提升了数据存储效率。179.本说明书一种可选实施例中,步骤202包括如下具体步骤:180.接收计算节点发送的至少一个数据处理记录和对应的第一存储地址,其中,第一存储地址为持久性存储介质上的存储地址,第一存储地址为计算节点为至少一个数据处理结果子页子页分配的;181.对应地,步骤206包括如下具体步骤:182.将各数据处理结果子页存储至对应的第一存储地址中。183.第一存储地址为内存节点上的持久性存储介质上的存储地址。预先在计算节点上为各数据处理结果子页配置对应的第一存储地址,以使内存节点根据第一存储地址,对日志回放得到的数据处理结果子页进行准确的存储。184.为至少一个数据处理结果子页配置对应的第一存储地址,具体方式为:根据预设的数据页的元数据表,为至少一个数据处理结果子页配置对应的第一存储地址。其中,元数据表上记录每个数据处理结果子页的元数据包含4个字段:第二存储地址表示当前数据子页在本地动态存储介质中的存储地址,脏位向量用于追踪脏位标记的数据处理结果子页。本地日志序列号用于记录数据子页最新修改的日志序列号,第一存储地址是当前数据子页在持久性存储介质上的存储地址。185.接收计算节点发送的至少一个数据处理记录和对应的第一存储地址,具体方式为:按照预设的远程数据存储协议,接收计算节点发送的至少一个数据处理记录和对应的第一存储地址。其中,远程数据存储协议包括单边rdma和双边rdma。186.示例性地,按照单边rdma,接收计算节点发送的7个数据处理记录record(record_1、record_2……record_7)和对应的第一存储地址rbp(rbp1、rbp2……rbp7),根据7个数据处理记录,对持久性存储节点上的7个待处理数据子页mini-page(data_a1.page、data_a2.page……data_a7.page)进行数据处理,得到对应的7个数据处理结果子页mini-page(data_b1.page、data_b2.page……data_b7.page),将各数据处理结果子页存储至对应的第一存储地址中。187.接收计算节点发送的至少一个数据处理记录和对应的第一存储地址,其中,第一存储地址为持久性存储介质上的存储地址,第一存储地址为计算节点为至少一个数据处理结果子页子页分配的,将各数据处理结果子页存储至对应的第一存储地址中,保证了对内存节点上日志回放得到的数据处理结果子页进行准确的存储,提升了数据存储的稳定性。188.本说明书一种可选实施例中,其中,内存节点上配置有日志缓存和地址缓存;189.在接收计算节点发送的至少一个数据处理记录和对应的第一存储地址之后,还包括如下具体步骤:190.将各数据处理记录写入日志缓存,并将第一存储地址写入地址缓存。191.cdlog的存储包含两个环形缓存区:一个是日志缓存,用来存储数据处理记录,另一个是地址缓存,用来存储第一存储地址。日志缓存用来直接存储数据处理记录,例如,mysql数据库的日志缓存区。每个第一存储地址主要包含三个字段:第一个字段是第一存储地址a,记录数据处理结果子页在当前回放的日志序列号,第二个字段是第一存储地址b,记录对应内容是数据处理结果子页,最后一个字段是日志序列号。计算节点将数据处理记录发送至内存节点时,都会同时向日志缓存和地址缓存中追加写入相对应的内容,写操作都是通过单边rdma完成的。内存节点上会有设置有对应的日志回放线程,通过读取日志缓存和地址缓存的内容,将相应的数据处理记录回放到内存节点的数据缓存中,从而更新对应的数据处理结果子页。192.内存节点上还配置有数据缓存,数据缓存中存储有各数据处理结果子页,其中任意数据处理结果子页都包含有对应的第一存储地址,即当前回放的当前日志序列号和需要回放的目标日志序列号。193.将各数据处理记录写入日志缓存,并将第一存储地址写入地址缓存,保证了对日志回放的准确性和数据存储的准确性,提升了数据存储的稳定性。194.下述结合附图3,以本说明书提供的数据存储方法在数据存储的应用为例,对所述数据存储方法进行进一步说明。其中,图3示出了本说明书一个实施例提供的一种数据存储方法的处理过程流程图,该方法应用于数据存储系统中的计算节点,数据存储系统还包括独立设置的内存节点,具体包括以下步骤。195.步骤302:接收数据存储节点发送的待处理数据页。196.步骤304:将待处理数据页划分为多个待处理数据子页。197.步骤306:对至少一个待处理数据子页进行数据处理,获得至少一个数据处理结果子页和对应的数据处理记录。198.步骤308:为至少一个数据处理结果子页配置对应的第一存储地址。199.步骤310:将至少一个数据处理记录和对应的第一存储地址发送至内存节点,以使内存节点对各数据处理记录进行日志回放,得到对应的数据处理结果子页,将各数据处理结果子页存储至对应的第一存储地址中。200.其中,第一存储地址为持久性存储介质上的存储地址。201.步骤312:将至少一个数据处理结果子页存储至动态存储介质中。202.步骤314:在对已被覆盖的数据处理结果子页进行数据处理的情况下,从内存节点获取历史数据处理结果子页。203.步骤316:判断历史数据处理结果子页是否为已被覆盖的数据处理结果子页。204.步骤318:若否,从内存节点获取历史数据处理结果对应的历史数据处理记录,并对历史数据处理记录进行日志回放,得到数据处理结果子页。205.步骤320:对数据处理结果子页进行数据处理,获得更新数据处理结果子页和对应的更新数据处理记录。206.步骤322:为更新数据处理结果子页配置对应的第一存储地址。207.步骤324:将更新数据处理记录和对应的第一存储地址发送至内存节点,以使内存节点对更新数据处理记录进行日志回放,得到对应的更新数据处理结果子页,将更新数据处理结果子页存储至对应的第一存储地址中。208.本说明书实施例中,是一种由计算节点驱动的日志机制。它允许计算节点只向远程独立设置的内存节点写wal数据,并且将日志回放卸载到内存节点上,利用持久性存储介质的字节寻址能力,重新设计了日志数据的放置方式。不仅减少了从计算节点到内存节点的网络流量,而且还避免了日志解析带来的开销,允许计算节点乐观地执行远程读取,如果检索到的内存节点缓存的数据不是最新的,计算节点会远程读取内存节点的数据,并在本地回放这些数据来得到更新处理结果子页。209.与上述方法实施例相对应,本说明书还提供了数据存储系统实施例,图4示出了本说明书一个实施例提供的一种数据存储系统的结构示意图。如图4所示,该系统包括:210.计算节点402,用于获取待处理数据,对待处理数据进行数据处理,得到日志数据,将日志数据发送至内存节点404,以使内存节点404对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点404上配置有持久性存储介质;211.内存节点404,用于接收计算节点402发送的日志数据,对日志数据进行日志回放,得到数据处理结果,对数据处理结果和日志数据进行存储。212.需要说明的是,本说明书实施例中的计算节点402、内存节点404和数据存储节点都为至少一个,不仅仅局限于图4中的结构。213.本说明书实施例中,计算节点,用于获取待处理数据,对待处理数据进行数据处理,得到日志数据,将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点上配置有持久性存储介质;内存节点,用于接收计算节点发送的日志数据,对日志数据进行日志回放,得到数据处理结果,对数据处理结果和日志数据进行存储。通过分离架构的计算节点和内存节点,内存节点作为单独的抽象出内存特性的节点,为计算节点提供数据存储服务,提供了良好的可拓展性,在计算节点上完成数据处理后,将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放,还原出数据处理结果,降低了向内存节点发送的数据量,充分利用了有限带宽,降低了阻塞概率,提升了数据存储的效率和稳定性。214.上述为本实施例的一种数据存储系统的示意性方案。需要说明的是,该数据存储系统的技术方案与上述的数据存储方法的技术方案属于同一构思,数据存储系统的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。215.图5示出了本说明书一个实施例提供的一种数据存储系统的架构图。如图5所示:216.数据存储系统包括计算节点、内存节点和数据存储节点。其中,计算节点上配置有足够的cpu(centralprocessingunit,中央处理器)资源和有限的动态存储介质(内存),用于处理用户查询。每个计算节点都包含一个中等规模的本地缓存池(lbp),以在动态存储介质中缓存最热的数据。持久性存储介质上配置有多个持久性存储介质,是由于一组包含大量持久性存储介质的服务器构成,并向计算节点暴露了一个内存接口。可以提供一定量的持久性存储空间为数据库提升性能。对应的内存节点通常包含两个分区:一个远程缓存池(其大小通常比本地缓存池要大得多)和一个较小的日志区(用于快速wal持久化)。计算节点可以连接到多个内存节点,以分布式或者日志复制的方式保证高可用性。在一组持久性存储介质的副本中,有一个将被指定为主副本,为应用程序提取日志数据。数据存储节点上配置有多个固态硬盘和机械硬盘,作为持久性和低成本的存储,每个计算节点利用分布式文件系统进一步连接到一组存储节点,数据存储节点上配置有分布式文件系统,分布式文件系统中存储有数据页。217.在计算节点上,通过数据库引擎,解析、处理sql请求,对待处理数据进行数据处理,得到日志数据,将本地缓存池中的日志数据发送至内存节点。在内存节点上,调用日志回放线程,执行计算节点驱动的日志机制(cdlog),对日志数据进行日志回放,得到数据处理结果,并将数据处理结果存储至内存节点的远程缓存池中,在后续计算节点需要对数据处理结果进行再处理的情况下,从远程缓存池中获取数据处理结果,重新进行解析、处理。218.图6示出了本说明书一个实施例提供的一种数据存储系统中计算节点的数据结构图。如图6所示:219.计算节点上,在接收到用户发送的sql请求后,调用数据库引擎解析处理sql请求,转换为事务语义并执行,用户请求会首先进入到这个模块。对本地缓存池的数据页的读写操作,得到本地缓存池的数据页:日志序列号[0,1,2……]和脏位[010101……1]。根据数据页的元数据表,确定第一存储地址,其中,数据页的元数据表记录有:本地缓存储池中数据页对应的第一存储地址1,脏位向量对应的第一存储地址2,本地日志序列号对应的第一存储地址3,远程缓存池中数据页对应的第一存储地址4。根据本地缓存池的数据页,实现写日志后进行事务提交。其中,数据页的元数据表是维护了数据页的元数据数据信息,利用哈希表实现。从数据页的编号映射到数据页元数据的第一存储地址,由开放寻址法实现。每个数据页的元数据包含4个字段:第一存储地址1表示当前数据在本地动态存储介质中的地址,脏位向量对应的第一存储地址2用于追踪标记被修改的迷你数据页。本地日志序列号对应的第一存储地址3记录数据页最新修改的日志序列号,远程缓存池中数据页对应的第一存储地址4e是当前页面在远程动态存储介质上的存储地址。具体的工作流程是,用户请求到达计算节点后,经过sql解析,通过事务接口访问底层存储,修改数据页面,数据页逻辑上预先被分为多个迷你数据页,在修改数据页过程,事务引擎会在脏位向量上标记数据修改的迷你数据页,并为每个修改的迷你数据页分配对应的日志序列号,保存在本地日志序列号对应的第一存储地址3上。在事务提交时,我们把所有的修改的迷你数据页,利用rdma发送到远程持久性存储节点。[0220]图7示出了本说明书一个实施例提供的一种数据存储系统中内存节点的存储结构图。如图7所示:[0221]cdlog的存储包含两个环形缓存区:一个是日志缓存,用来存储数据处理记录,另一个是地址缓存,用来存储第一存储地址。日志缓存用来直接存储数据处理记录,例如,mysql数据库的日志缓存区。每个第一存储地址主要包含三个字段:第一个字段是第一存储地址a,记录数据处理结果子页在当前回放的日志序列号,第二个字段是第一存储地址b,记录对应内容是数据处理结果子页,最后一个字段是日志序列号。计算节点将数据处理记录发送至内存节点时,都会同时向日志缓存和地址缓存中追加写入相对应的内容,写操作都是通过单边rdma完成的。内存节点上会有设置有对应的日志回放线程,通过读取日志缓存和地址缓存的内容,将相应的数据处理记录回放到内存节点的数据缓存中,从而更新对应的数据处理结果子页。当前持久性存储节点上已经回放到的日志序列号,计算节点通过读取该值避免将内存节点上的有效数据覆盖写入,日志回放线程是一种后台线程,用于回放日志。[0222]图8示出了本说明书一个实施例提供的一种数据存储系统中内存节点的数据结构图。如图8所示:[0223]在日志缓存节点的远程缓存池中,数据页被对应换分为64个迷你页,用于存入数据处理结果子页:数据处理结果子页0……数据处理结果子页63,其中任意数据处理结果子页都包含有对应的第一存储地址,即当前回放的当前日志序列号(890、960)和需要回放的目标日志序列号(1000、1063)。[0224]与上述方法实施例相对应,本说明书还提供了数据存储装置实施例,图9示出了本说明书一个实施例提供的一种数据存储装置的结构示意图。如图9所示,该装置应用于计算节点,该装置包括:[0225]获取模块902,被配置为获取待处理数据;[0226]处理模块904,被配置为对待处理数据进行数据处理,得到日志数据;[0227]第一发送模块906,被配置为将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点上配置有持久性存储介质。[0228]可选地,处理模块904被进一步配置为:[0229]对待处理数据进行数据处理,得到数据处理结果和日志数据。[0230]可选地,其中,待处理数据包括待处理数据页,数据处理结果包括至少一个数据处理结果子页,日志数据包括至少一个数据处理结果子页对应的数据处理记录;[0231]对应地,处理模块904被进一步配置为:[0232]将待处理数据页划分为多个待处理数据子页;对至少一个待处理数据子页进行数据处理,获得至少一个数据处理结果子页和对应的数据处理记录。[0233]可选地,第一发送模块906被进一步配置为:[0234]为至少一个数据处理结果子页配置对应的第一存储地址;将至少一个数据处理记录和对应的第一存储地址发送至内存节点,以使内存节点对各数据处理记录进行日志回放,得到对应的数据处理结果子页,将各数据处理结果子页存储至对应的第一存储地址中,其中,第一存储地址为持久性存储介质上的存储地址。[0235]可选地,其中,计算节点上配置有动态存储介质;[0236]对应地,该装置还包括:[0237]第二存储模块,被配置为将数据处理结果存储至动态存储介质中。[0238]可选地,该装置还包括:[0239]第二发送模块,被配置为将数据处理结果发送至数据存储节点,以使数据存储节点对数据处理结果进行存储。[0240]可选地,该装置还包括:[0241]还原模块,被配置为在对已被覆盖的数据处理结果进行数据处理的情况下,从内存节点获取历史数据处理结果;判断历史数据处理结果是否为已被覆盖的数据处理结果;若否,从内存节点获取历史数据处理结果对应的历史日志数据,并对历史日志数据进行日志回放,得到数据处理结果。[0242]本说明书实施例中,获取待处理数据;对待处理数据进行数据处理,得到日志数据;将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点上配置有持久性存储介质。通过分离架构的计算节点和内存节点,内存节点作为单独的抽象出内存特性的节点,为计算节点提供数据存储服务,提供了良好的可拓展性,在计算节点上完成数据处理后,将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放,还原出数据处理结果,降低了向内存节点发送的数据量,充分利用了有限带宽,降低了阻塞概率,提升了数据存储的效率和稳定性。[0243]上述为本实施例的一种数据存储装置的示意性方案。需要说明的是,该数据存储装置的技术方案与上述的数据存储方法的技术方案属于同一构思,数据存储装置的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。[0244]与上述方法实施例相对应,本说明书还提供了数据存储装置实施例,图10示出了本说明书一个实施例提供的另一种数据存储装置的结构示意图。如图10所示,该装置应用于内存节点,内存节点上配置有持久性存储介质,该装置包括:[0245]接收模块1002,被配置为接收计算节点发送的日志数据;[0246]回放模块1004,被配置为对日志数据进行日志回放,得到数据处理结果;[0247]第一存储模块1006,被配置为对数据处理结果和日志数据进行存储。[0248]可选地,其中,日志数据包括至少一个数据处理结果子页对应的数据处理记录;[0249]对应地,回放模块1004被进一步配置为:[0250]对各数据处理记录进行日志回放,得到对应的数据处理结果子页,其中,各数据处理记录和对应的数据处理结果子页为计算节点将待处理数据页划分为多个待处理数据子页,对至少一个待处理数据子页进行数据处理得到的。[0251]可选地,接收模块1002被进一步配置为:[0252]接收计算节点发送的至少一个数据处理记录和对应的第一存储地址,其中,第一存储地址为持久性存储介质上的存储地址,第一存储地址为计算节点为至少一个数据处理结果子页子页分配的;[0253]对应地,第一存储模块1006被进一步配置为:[0254]将各数据处理结果子页存储至对应的第一存储地址中。[0255]可选地,其中,内存节点上配置有日志缓存和地址缓存;[0256]对应地,该装置还包括:[0257]写入模块,被配置为将各数据处理记录写入日志缓存,并将第一存储地址写入地址缓存。[0258]本说明书实施例中,接收计算节点发送的日志数据;对日志数据进行日志回放,得到数据处理结果;对数据处理结果和日志数据进行存储。通过分离架构的计算节点和内存节点,内存节点作为单独的抽象出内存特性的节点,为计算节点提供数据存储服务,提供了良好的可拓展性,接收计算节点发送的日志数据,对日志数据进行日志回放,还原出数据处理结果,降低了接收内存节点发送的数据量,充分利用了有限带宽,降低了阻塞概率,提升了数据存储的效率和稳定性。[0259]上述为本实施例的一种数据存储装置的示意性方案。需要说明的是,该数据存储装置的技术方案与上述的数据存储方法的技术方案属于同一构思,数据存储装置的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。[0260]图11示出了根据本说明书一个实施例提供的一种计算设备的结构框图。该计算设备1100的部件包括但不限于存储器1110和处理器1120。处理器1120与存储器1110通过总线1130相连接,数据库1150用于保存数据。[0261]计算设备1100还包括接入设备1140,接入设备1140使得计算设备1100能够经由一个或多个网络1160通信。这些网络的示例包括公用交换电话网(pstn,publicswitchedtelephonenetwork)、局域网(lan,localareanetwork)、广域网(wan,wideareanetwork)、个域网(pan,personalareanetwork)或诸如因特网的通信网络的组合。接入设备1140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic,networkinterfacecontroller))中的一个或多个,诸如ieee802.11无线局域网(wlan,wirelesslocalareanetwork)无线接口、全球微波互联接入(wi-max,worldwideinteroperabilityformicrowaveaccess)接口、以太网接口、通用串行总线(usb,universalserialbus)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc,nearfieldcommunication)。[0262]在本说明书的一个实施例中,计算设备1100的上述部件以及图11中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图11所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。[0263]计算设备1100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(pc,personalcomputer)的静止计算设备。计算设备1100还可以是移动式或静止式的服务器。[0264]其中,处理器1120用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据存储方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。[0265]本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据存储方法的步骤。[0266]上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据存储方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。[0267]本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据存储方法的步骤。[0268]上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的数据存储方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。[0269]上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。[0270]所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。[0271]需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。[0272]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。[0273]以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属
技术领域
:技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。当前第1页12当前第1页12
技术特征:
1.一种数据存储方法,应用于数据存储系统中的计算节点,所述数据存储系统还包括独立设置的内存节点,包括:获取待处理数据;对所述待处理数据进行数据处理,得到日志数据;将所述日志数据发送至所述内存节点,以使所述内存节点对所述日志数据进行日志回放得到数据处理结果,对所述数据处理结果和所述日志数据进行存储,其中,所述内存节点上配置有持久性存储介质。2.根据权利要求1所述的方法,所述对所述待处理数据进行数据处理,得到日志数据,包括:对所述待处理数据进行数据处理,得到数据处理结果和日志数据。3.根据权利要求2所述的方法,其中,所述待处理数据包括待处理数据页,所述数据处理结果包括至少一个数据处理结果子页,所述日志数据包括所述至少一个数据处理结果子页对应的数据处理记录;所述对所述待处理数据进行数据处理,得到数据处理结果和日志数据,包括:将所述待处理数据页划分为多个待处理数据子页;对至少一个待处理数据子页进行数据处理,获得所述至少一个数据处理结果子页和对应的数据处理记录。4.根据权利要求3所述的方法,所述将所述日志数据发送至所述内存节点,包括:为所述至少一个数据处理结果子页配置对应的第一存储地址;将所述至少一个数据处理记录和对应的第一存储地址发送至所述内存节点,以使所述内存节点对各数据处理记录进行日志回放,得到对应的数据处理结果子页,将各数据处理结果子页存储至对应的第一存储地址中,其中,所述第一存储地址为所述持久性存储介质上的存储地址。5.根据权利要求2所述的方法,其中,所述计算节点上配置有动态存储介质;在所述对所述待处理数据进行数据处理,得到数据处理结果和日志数据之后,还包括:将所述数据处理结果存储至所述动态存储介质中。6.根据权利要求2所述的方法,在所述对所述待处理数据进行数据处理,得到数据处理结果和日志数据之后,还包括:将所述数据处理结果发送至数据存储节点,以使所述数据存储节点对所述数据处理结果进行存储。7.根据权利要求1所述的方法,在将所述日志数据发送至内存节点之后,还包括:在对已被覆盖的数据处理结果进行数据处理的情况下,从所述内存节点获取历史数据处理结果;判断所述历史数据处理结果是否为所述已被覆盖的数据处理结果;若否,从所述内存节点获取所述历史数据处理结果对应的历史日志数据,并对所述历史日志数据进行日志回放,得到所述数据处理结果。8.一种数据存储方法,应用于数据存储系统中独立设置的内存节点,所述内存节点上配置有持久性存储介质,包括:接收计算节点发送的日志数据;
对所述日志数据进行日志回放,得到数据处理结果;对所述数据处理结果和所述日志数据进行存储。9.根据权利要求8所述的方法,其中,所述日志数据包括至少一个数据处理结果子页对应的数据处理记录;所述对所述日志数据进行日志回放,得到数据处理结果,包括:对各数据处理记录进行日志回放,得到对应的数据处理结果子页,其中,各数据处理记录和对应的数据处理结果子页为所述计算节点将待处理数据页划分为多个待处理数据子页,对至少一个待处理数据子页进行数据处理得到的。10.根据权利要求9所述的方法,所述接收计算节点发送的日志数据,包括:接收所述计算节点发送的至少一个数据处理记录和对应的第一存储地址,其中,所述第一存储地址为所述持久性存储介质上的存储地址,第一存储地址为所述计算节点为所述至少一个数据处理结果子页子页分配的;所述对所述数据处理结果进行存储,包括:将各数据处理结果子页存储至对应的第一存储地址中。11.根据权利要求10所述的方法,其中,所述内存节点上配置有日志缓存和地址缓存;在所述接收所述计算节点发送的至少一个数据处理记录和对应的第一存储地址之后,还包括:将各数据处理记录写入所述日志缓存,并将所述第一存储地址写入所述地址缓存。12.一种数据存储系统,包括:计算节点和内存节点;所述计算节点,用于实现权利要求1至7任意一项所述的数据存储方法;所述内存节点,用于实现权利要求8至11任意一项所述的数据存储方法。13.一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至11任意一项所述数据存储方法的步骤。14.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至11任意一项所述数据存储方法的步骤。

技术总结
本说明书实施例提供一种数据存储方法及系统,其中所述数据存储方法包括:获取待处理数据;对待处理数据进行数据处理,得到日志数据;将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放得到数据处理结果,对数据处理结果和日志数据进行存储,其中,内存节点上配置有持久性存储介质。通过分离架构的计算节点和内存节点,内存节点作为单独的抽象出内存特性的节点,为计算节点提供数据存储服务,具有良好的可拓展性,在计算节点上完成数据处理后,将日志数据发送至内存节点,以使内存节点对日志数据进行日志回放,还原数据处理结果,降低了向内存节点发送的数据量,充分利用了有限带宽,降低了阻塞概率,提升了数据存储的效率和稳定性。储的效率和稳定性。储的效率和稳定性。


技术研发人员:章颖强 陈浩
受保护的技术使用者:阿里云计算有限公司
技术研发日:2023.03.24
技术公布日:2023/7/21
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐