CN117873405A - 数据存储方法、装置、计算机设备和存储介质 - Google Patents

数据存储方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN117873405A
CN117873405A CN202410271793.4A CN202410271793A CN117873405A CN 117873405 A CN117873405 A CN 117873405A CN 202410271793 A CN202410271793 A CN 202410271793A CN 117873405 A CN117873405 A CN 117873405A
Authority
CN
China
Prior art keywords
data
log
data page
partition
page
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.)
Granted
Application number
CN202410271793.4A
Other languages
English (en)
Other versions
CN117873405B (zh
Inventor
葛凯凯
邬沛君
李志阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202410271793.4A priority Critical patent/CN117873405B/zh
Publication of CN117873405A publication Critical patent/CN117873405A/zh
Application granted granted Critical
Publication of CN117873405B publication Critical patent/CN117873405B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种数据存储方法、装置、计算机设备、存储介质和计算机程序产品,可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景。所述方法包括:获取用于记录数据库中数据修改产生更新变化的日志数据;根据日志数据携带的数据页标识确定数据页分区;数据页分区,是数据页虚拟存储器中用于存储数据页标识所标识数据页的分区;基于日志数据,对数据页分区中存储的数据页标识所标识的数据页进行日志回放,获得数据页对应更新后的数据页;将更新后的数据页和日志数据存储到数据页分区相对应的至少一个物理存储器中。采用本方法能够提高数据存储的处理效率。

Description

数据存储方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据存储方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,致力于如何组织和存储数据,如何高效地获取和处理数据的数据库技术得到了迅速的发展和广泛的应用。数据库是按照数据结构来组织、存储和管理数据的仓库,为满足计算存储分离以及可扩展性方面的需求,往往会采用分布式存储方式来替换本地磁盘单机存储,以将数据进行分散存储。
然而,在将数据库中数据进行分布式存储时,通过网络传输的数据量大,会占用大量存储带宽,影响数据存储的处理效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高数据存储处理效率的数据存储方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据存储方法。所述方法包括:
获取用于记录数据库中数据更新变化的日志数据;
根据日志数据携带的数据页标识确定数据页分区;数据页分区,是数据页虚拟存储器中用于存储数据页标识所标识数据页的分区;
基于日志数据,对数据页分区中存储的数据页标识所标识的数据页进行日志回放,获得数据页对应更新后的数据页;
将更新后的数据页和日志数据存储到数据页分区相对应的至少一个物理存储器中。
第二方面,本申请还提供了一种数据存储装置。所述装置包括:
日志数据获取模块,用于获取用于记录数据库中数据更新变化的日志数据;
数据页分区确定模块,用于根据日志数据携带的数据页标识确定数据页分区;数据页分区,是数据页虚拟存储器中用于存储数据页标识所标识数据页的分区;
日志回放模块,用于基于日志数据,对数据页分区中存储的数据页标识所标识的数据页进行日志回放,获得数据页对应更新后的数据页;
数据落盘处理模块,用于将更新后的数据页和日志数据存储到数据页分区相对应的至少一个物理存储器中。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以上数据存储方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以上数据存储方法的步骤。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以上数据存储方法的步骤。
上述数据存储方法、装置、计算机设备、存储介质和计算机程序产品,对于获取的记录数据库中数据更新变化的日志数据,根据日志数据携带的数据页标识确定数据页虚拟存储器中的数据页分区,基于日志数据对数据页分区中存储的数据页标识所标识的数据页进行日志回放,并将日志回放得到的更新后的数据页以及日志数据存储到数据页分区相对应的至少一个物理存储器中,实现了对数据库中数据的存储。通过获取记录数据库中数据更新变化的日志数据,通过日志数据对数据页分区中存储的数据页进行日志回放,以得到对应更新后的数据页,并针对更新后的数据页和日志数据进行存储,可以通过传输日志数据针对数据库的数据进行存储,能够减小传输的数据量,降低存储带宽占用率,从而提高数据存储的处理效率。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中数据存储方法的应用环境图;
图2为一个实施例中数据存储方法的流程示意图;
图3为一个实施例中数据存储方法的示意框图;
图4为一个实施例中获得更新后的数据页的示意框图;
图5为一个实施例中确定数据页分区的流程示意图;
图6为传统技术中存算分离数据组织的示意图;
图7为一个实施例中数据库数据组织分布的示意图;
图8为一个实施例中多块设备联合分区组织的示意图;
图9为一个实施例中数据页磁盘和日志磁盘联合表征的示意图;
图10为一个实施例中磁盘划分分区的示意图;
图11为一个实施例中数据页编号与分区关联的示意图;
图12为一个实施例中日志文件轮转处理的示意图;
图13为一个实施例中针对日志流进行日志回放处理的示意图;
图14为一个实施例中分区数据物理分布的示意图;
图15为一个实施例中日志空间基于快照轮转的示意图;
图16为一个实施例中日志磁盘分区重定向的示意图;
图17为一个实施例中数据存储装置的结构框图;
图18为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术(Cloudtechnology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储*** (以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。目前,存储***的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。 客户端在某一逻辑卷上存储数据,也就是将数据存储在文件***上,文件***将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity) 等额外的信息,文件***将每个对象分别写入该逻辑卷的物理存储空间,且文件***会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件***能够根据每个对象的存储位置信息让客户端对数据进行访问。存储***为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理***(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件***,一般具有存储、截取、安全保障、备份等基础功能。数据库管理***可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible MarkupLanguage,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言(Structured QueryLanguage)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
本申请实施例提供的数据存储方法,可以应用于如图1所示的应用环境中。其中,该应用环境包括中包括各种计算机设备,具体第一终端102通过网络与第一服务器104进行通信,第一数据存储***可以存储第一服务器104需要处理的数据。第一数据存储***可以单独设置,也可以集成在第一服务器104上,也可以放在云上或其他服务器上。第二终端106通过网络分别与第一数据存储***和第二服务器108进行通信,第二数据存储***可以存储第二服务器108需要处理的数据。第二数据存储***可以单独设置,也可以集成在第二服务器108上,也可以放在云上或其他服务器上。
第一终端102上可以安装有各种应用程序,以在运行各种应用程序的过程中产生各种应用数据,如通过第一终端102的各种应用程序可以产生视频数据、文本数据或者图像数据等各种数据;第一服务器104可以是第一终端102的各种应用程序对应的后台服务器,以针对提供各种应用程序对应功能。第一数据存储***可以包括数据库,用于存储各种应用程序数据。第一数据存储***中的数据库可以通过第二终端106向第二服务器108发送需要进行分离存储的日志数据,日志数据用于记录第一数据存储***中数据库的数据更新变化。对于获取的日志数据,第二服务器108根据日志数据携带的数据页标识确定数据页虚拟存储器中的数据页分区,基于日志数据对数据页分区中存储的数据页标识所标识的数据页进行日志回放,并将日志回放得到的更新后的数据页以及日志数据存储到数据页分区相对应的至少一个物理存储器中,如可以存储到第二数据存储***的物理存储器中,从而实现对第一数据存储***中数据的分离存储。
其中,第一终端102和第二终端106可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、飞行器、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。第一服务器104和第二服务器108可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
在一个示例性的实施例中,如图2所示,提供了一种数据存储方法,该方法由计算机设备执行,具体可以由终端或服务器等计算机设备单独执行,也可以由终端和服务器共同执行,在本申请实施例中,以该方法应用于图1中的计算机设备为例进行说明,包括以下步骤202至步骤208。其中:
步骤202,获取用于记录数据库中数据更新变化的日志数据。
其中,数据库是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合,通过数据库可以对数据进行存储以及删除等操作。日志(Log)数据用于记录数据库中数据的更新变化,具体可以记录针对数据库中数据内容的数据更新信息,如可以包括但不限于包括增加数据、修改数据、删除数据等各种修改信息。日志数据可以在数据库中数据发送更新变化时对应产生,以记录数据的更新变化情况。
具体地,计算机设备可以获取日志数据,日志数据可以基于数据库获得,通过日志数据可以针对数据库中各个数据的更新变化进行准确记录。例如,计算机设备可以获取Mysql数据库的日志数据,日志数据可以由Mysql数据库通过数据传输接口向计算机设备进行网络传输。
步骤204,根据日志数据携带的数据页标识确定数据页分区;数据页分区,是数据页虚拟存储器中用于存储数据页标识所标识数据页的分区。
其中,数据页标识用于标识数据页(Page),数据页是数据库中数据存储的基本单位,默认为16KB(Kilobyte,千字节)大小。在计算机应用中,磁盘和内存之间交互的基本单位为数据页,也即是一次最少从磁盘中读取16KB的内容到内存中,或者一次最少把内存中的16KB内容刷新到磁盘中。在数据库中,不论读一行,还是读多行,都是将这些行所在的数据页进行加载。也就是说,数据库管理存储空间的基本单位是数据页,数据库I/O(输入/输出)操作的最小单位是页,而一个页中可以存储多个行记录。不同的数据页可以通过不同的数据页标识进行区分,具体可以通过不同的数据页编号、数据页名称区分各个数据页。
数据页分区是用于存储数据页标识所标识数据页的分区,数据页分区是在数据页虚拟存储器中划分出的分区。数据页虚拟存储器是计算机设备根据需要分配的逻辑虚拟磁盘,可以用于存储数据。通过将数据页虚拟存储器进行划分,可以得到各个分区,每个分区可以用于存储不同的数据页。
可选地,计算机设备可以确定日志数据所携带的数据页标识,不同的日志数据可以针对记录不同数据页的数据更新变化,而数据页通过数据页标识进行标识区分。日志数据携带数据页标识,从而表明该日志数据所针对记录数据更新变化所属的数据页。在一些实施例中,计算机设备可以针对日志数据进行解析,如可以针对日志数据的各个字段进行解析,从而从数据页标识字段中确定日志数据所携带的数据页标识。计算机设备根据数据页标识从数据页虚拟存储器中确定数据页分区,具体计算机设备可以在数据页虚拟存储器中,按照数据页标识进行查询,从而确定出在数据页虚拟存储器中数据页标识所标识的分区,并将该分区确定为数据页分区,该数据页分区用于存储数据页分区所标识的数据页。
步骤206,基于日志数据,对数据页分区中存储的数据页标识所标识的数据页进行日志回放,获得数据页对应更新后的数据页。
其中,日志回放是指按照日志数据所记录的修改信息,针对对应数据页进行更新的处理,通过日志回放可以获得数据页在按照日志数据所记录的修改信息进行更新后的数据页。也就是说,日志回放是指按照日志数据所记录的修改信息对应更新数据页的处理。更新后的数据页是日志数据所记录的修改信息作用于数据页后所得到的结果。例如,对于数据页A,日志数据1包括针对数据页A中数据m进行删除的修改信息,则按照日志数据1针对数据页A进行日志回放时,计算机设备可以按照日志数据1记录的针对数据m进行删除的修改信息,将数据页A中数据m进行删除,从而得到更新后的数据页A’,相比于数据页A,数据页A’中数据m已被删除。
示例性地,计算机设备可以基于日志数据针对数据页分区中存储的数据页进行日志回放,具体计算机设备可以按照日志数据中的修改信息,针对数据页分区中存储的数据页进行数据更新,从而更新后的数据页,更新后的数据页是数据页标识所标识的数据页在日志数据中修改信息的作用下得到的数据更新结果。在具体实现中,计算机设备可以直接按照日志数据针对数据页分区中存储的数据页进行更新,得到更新后的数据页。在一些实施例中,计算机设备可以先从数据页分区中读取所存储的数据页,并按照日志数据针对所读取的数据页进行更新,再将更新后的数据页存储到数据页分区中,以覆盖更新前的原始数据页。
步骤208,将更新后的数据页和日志数据存储到数据页分区相对应的至少一个物理存储器中。
其中,物理存储器是指真实存在的存储器,而非逻辑分配的虚拟磁盘,具体可以包括真实存在的物理磁盘,如软盘、硬盘等各种磁盘。物理存储器可以包括至少一个,每个物理存储器相对于数据库可以分离设置,即数据库中数据处理与物理存储器中的数据存储之间相对独立。
可选地,计算机设备可以将日志数据和更新后的数据页进行存储,具体可以将日志数据和更新后的数据页存储到数据页分区相对应的至少一个物理存储器中。在具体实现中,物理存储器可以与数据页分区对应设置,即不同的物理存储器可以用于记录不同数据页分区中的数据页以及日志数据。例如,计算机设备可以确定数据页分区相对应的至少一个物理存储器中,具体可以数据页分区的分区标识以及预先设定的映射关系,确定相对应的至少一个物理存储器,计算机设备可以将得到的日志数据和更新后的数据页存储到确定出的物理存储器中。
在一个具体应用中,如图3所示,计算机设备从数据库中获取记录数据库中数据更新变化的日志数据,日志数据中携带有数据页标识。计算机设备根据数据页标识从数据页虚拟存储器(图中以虚线表征为虚拟存储器)中确定数据页分区,数据页分区用于存储数据页标识所标识的数据页。计算机设备基于日志数据针对数据页进行日志回放,得到对应更新后的数据页。计算机设备将得到的更新后的数据页和日志数据存储到数据页分区相对应的物理存储器(图中以实线表征为真实存储器)中,物理存储器可以包括至少一个。针对数据库中数据的存储处理中,计算机设备可以获取记录数据更新变化的日志数据,基于日志数据针对数据页虚拟存储器中数据页分区存储的数据页进行日志回放,得到更新后的数据页,将更新后的数据页和日志数据存储到物理存储器中,可以实现针对数据库中数据的存储。在数据存储过程中不需要从数据库中传输更新后的数据页,而是基于日志数据进行日志回放得到,减小了传输的数据量,能够降低存储带宽占用率,从而提高数据存储的处理效率。
上述数据存储方法中,对于获取的记录数据库中数据更新变化的日志数据,计算机设备根据日志数据携带的数据页标识确定数据页虚拟存储器中的数据页分区,基于日志数据对数据页分区中存储的数据页标识所标识的数据页进行日志回放,并将日志回放得到的更新后的数据页以及日志数据存储到数据页分区相对应的至少一个物理存储器中,实现了对数据库中数据的存储。通过获取记录数据库中数据更新变化的日志数据,通过日志数据对数据页分区中存储的数据页进行日志回放,以得到对应更新后的数据页,并针对更新后的数据页和日志数据进行存储,可以通过传输日志数据针对数据库的数据进行存储,能够减小传输的数据量,降低存储带宽占用率,从而提高数据存储的处理效率。
在一个示例性的实施例中,基于日志数据,对数据页分区中存储的数据页标识所标识的数据页进行日志回放,获得数据页对应更新后的数据页,包括:基于日志数据确定针对数据页标识所标识数据页的数据更新信息;按照数据更新信息对数据页进行数据更新,得到更新后的数据页。
其中,数据更新信息可以包括针对数据页的各种修改信息,如可以包括针对数据页的增添、删除、修改等各种修改信息。具体地,计算机设备可以基于日志数据确定数据更新信息,数据更新信息可以包括针对数据页标识所标识数据页的各种修改信息。在一些实施例中,计算机设备可以针对日志数据进行解析,如可以针对日志数据的各个字段进行解析,以从日志数据中提取得到针对数据页标识所标识数据页的数据更新信息。计算机设备可以按照数据更新信息对数据页进行更新,具体可以按照数据更新信息中的修改信息针对数据页中的数据进行修改,得到更新后的数据页,更新后的数据页是需要针对进行存储的数据页。
本实施例中,计算机设备基于日志数据确定数据更新信息,并按照数据更新信息针对数据页标识所标识数据页进行更新,从而实现基于日志数据的日志回放,得到需要进行存储的更新后的数据页,能够避免通过网络传输数据页,大大减少网络传输的数据量,从而提高数据存储的处理效率。
在一个示例性的实施例中,按照数据更新信息对数据页进行数据更新,得到更新后的数据页,包括:从数据页分区中读取数据页;按照数据更新信息对读取的数据页中的数据进行更新,获得更新后的数据页;将更新后的数据页写入到数据页分区中,以替换数据页。
其中,数据页存储在数据页虚拟存储器的数据页分区中,计算机设备可以从数据页分区中读取得到需要进行日志回放的数据页。具体地,计算机设备可以直接从数据页分区中读取得到数据页,计算机设备按照数据更新信息对读取得到的数据页中的数据进行更新,具体可以按照数据更新信息中记录的修改信息对应修改数据页中的数据,得到更新后的数据页。计算机设备可以将更新后的数据页再写入到数据页分区中,并替换原始的数据页,从而针对更新后的数据页进行存储。
在一个具体应用中,如图4所示,计算机设备根据获得的日志数据确定数据更新信息,并按照数据更新信息对从数据页分区中读取得到的数据页进行更新,获得更新后的数据页。其中,数据页存储在数据页虚拟存储器(图中以虚线表征为虚拟存储器)的数据页分区中。计算机设备将更新后的数据页重新写入到数据页分区中,以覆盖原始的数据页,从而在数据页虚拟存储器的数据页分区中存储更新后的数据页。
本实施例中,计算机设备从数据页分区中读取数据页,并按照数据更新信息对读取的数据页进行更新,再将得到的更新后的数据页替换数据页分区中的数据页,从而对数据页虚拟存储器的数据页分区中存储的数据页版本进行更新,可以确保数据页分区中数据页数据的有效性,从而能够基于数据页分区中存储的数据页数据进行日志回放以直接获得需要存储的数据页,从而有利于提高数据存储的处理效率。
在一个示例性的实施例中,如图5所示,确定数据页分区的处理,即根据日志数据携带的数据页标识确定数据页分区,包括:
步骤502,确定日志数据携带的数据页标识。
具体地,计算机设备可以针对日志数据进行解析,从而确定日志数据所携带的数据页标识,如可以从日志数据的数据页标识字段中解析得到数据页标识。数据页标识用于标识各个数据页,数据页标识的具体形式可以根据实际需要进行设置,如数据页标识可以包括数据页名称、数据页编号等标识信息。
步骤504,基于数据页标识和分区划分单位,确定与数据页标识所标识数据页对应的分区标识。
其中,分区划分单位是指针对存储空间进行分区划分的单元,基于分区划分单位可以将相应的存储空间划分成多个分区。例如,分区划分单位可以为N个数据页,即按照N个数据页为单位针对存储空间划分,每N个数据页对应的存储空间可以划分为一个分区。分区标识用于区分存储控件中的各个分区,具体可以包括分区的编号、分区名称等各种标识信息。
示例性地,计算机设备可以确定分区划分单位,并根据数据页标识和分区划分单位计算得到分区标识,该分区标识与数据页标识所标识数据页相对应。在具体应用中,分区标识可以应用于不同的存储空间,如可以应用于虚拟存储器、物理存储器中,即在虚拟存储器和物理存储器均通过相同的分区标识来标识各个分区。在一些实施例中,数据页标识可以包括数据页编号M,分区划分单位可以为N个数据页,则计算机设备可以数据页编号M/分区划分单位N+1计算得到数据页标识所标识数据页对应的分区标识。按照该分区标识,可以从各种存储中间中确定数据页标识所标识数据页对应的分区,如可以确定在数据页虚拟存储器中的数据页分区,又如可以确定在日志虚拟存储器中的日志分区,日志分区可以是日志虚拟存储器中用于存储日志数据的分区。
步骤506,根据分区标识,从数据页虚拟存储器中确定用于存储数据页标识所标识数据页的数据页分区。
其中,分区标识可以用于标识数据页虚拟存储器中的各个分区。可选地,计算机设备可以按照分区标识遍历数据页虚拟存储器中的各个分区,从而从数据页虚拟存储器中确定数据页分区,该数据页分区用于存储数据页标识所标识数据页。
本实施例中,计算机设备根据日志数据携带的数据页标识和分区划分单位确定分区标识,并根据分区标识从数据页虚拟存储器中确定相应的数据页分区,可以基于数据页标识基于数据页虚拟存储器中各个分区进行准确映射,能够确保数据页分区确定的准确性,从而确保数据存储的准确性。
在一个示例性的实施例中,数据存储方法还包括:将日志数据存储到日志虚拟存储器的日志分区中;日志虚拟存储器与数据页虚拟存储器联合表征相同的数据存储空间。
其中,日志虚拟存储器是计算机设备根据需要分配的逻辑虚拟磁盘,可以用于存储数据。通过将日志虚拟存储器进行划分,可以得到各个日志分区,每个日志分区可以用于存储不同的日志数据。日志虚拟存储器与数据页虚拟存储器联合表征相同的数据存储空间,即日志虚拟存储器与数据页虚拟存储器联合起来可以针对数据库中数据进行完整的存储。具体地,日志虚拟存储器用于存储日志数据,数据页虚拟存储器用于存储数据页,日志虚拟存储器与数据页虚拟存储器联合表征的可以是存储数据库中数据的数据存储空间。即存储数据库中数据的数据存储空间可以根据存储数据类型的不同,逻辑上分离为日志虚拟存储器与数据页虚拟存储器,从而可以将日志数据和数据页分别通过不同的虚拟存储器进行存储。
具体地,在得到日志数据后,计算机设备可以将日志数据进行存储,如可以通过预先分配的日志虚拟存储器进行存储。在应用时,计算机设备可以在接收到日志数据时即将日志数据进行存储,即计算机设备可以在基于日志数据,对数据页分区中存储的数据页标识所标识的数据页进行日志回放,获得数据页对应更新后的数据页之前,将日志数据进行存储。在具体实现中,计算机设备可以确定与数据页虚拟存储器相关联的日志虚拟存储器,并从日志虚拟存储器中确定日志分区,计算机设备可以将日志数据存储到该日志分区中,从而实现针对日志数据的存储。在一些实施例中,日志虚拟存储器与数据页虚拟存储器之间的关联关系可以预先进行设置,从而可以根据日志虚拟存储器与数据页虚拟存储器二者中的任一个查询确定相关联的另一者。
进一步地,基于日志数据,对数据页分区中存储的数据页标识所标识的数据页进行日志回放,获得数据页对应更新后的数据页,包括:从日志分区中读取日志数据,并基于读取得到的日志数据对数据页分区中存储的数据页标识所标识的数据页进行日志回放,获得数据页对应更新后的数据页。
可选地,在进行日志回放时,计算机设备可以从日志分区中读取得到相应的日志数据。具体地,计算机设备可以日志分区中进行数据读取,从而读取得到日志,计算机设备基于读取得到的日志数据对数据页分区中存储的数据页标识所标识的数据页进行日志回放,从而得到对应更新后的数据页。在一些实施例中,计算机设备可以监测是否满足日志回放触发条件,如日志数据的数量是否达到触发阈值,是否达到日志回放处理周期等,在满足日志回放触发条件的情况下,计算机设备可以触发从日志分区中读取日志数据进行日志回放处理。
进一步地,将更新后的数据页和日志数据存储到数据页分区相对应的至少一个物理存储器中,包括:从数据页分区中读取更新后的数据页;将读取得到的日志数据和更新后的数据页,存储到数据页分区相对应的至少一个物理存储器中。
其中,在基于日志数据进行日志回放后,更新后的数据页可以存储在数据页分区中,计算机设备可以从数据页分区中读取得到更新后的数据页。示例性地,计算机设备可以将读取得到的日志数据和更新后的数据页存储到物理存储器中,具体存储到数据页分区相对应的至少一个物理存储器中。在具体应用中,计算机设备可以根据数据页分区确定相对应的至少一个物理存储器,并将读取得到的日志数据和更新后的数据页分别存储到每个物理存储器中。在具体应用时,物理存储器包括至少两个时,对于每个物理存储器均可以同时存储有读取得到的日志数据和更新后的数据页。
本实施例中,计算机设备通过将日志数据存储到日志虚拟存储器的日志分区中,从日志分区中读取日志数据进行日志回放,从数据页分区中读取更新后的数据页,并将读取得到的日志数据和更新后的数据页进行落盘到物理存储器中,即存储到物理存储器中,可以确保日志数据和更新后的数据页的准确性,从而确保数据存储的可靠性。
在一个示例性的实施例中,将日志数据存储到日志虚拟存储器的日志分区中,包括:确定与数据页虚拟存储器关联的日志虚拟存储器;根据数据页分区的分区标识,从日志虚拟存储器中确定日志分区;分区标识是基于数据页标识和分区划分单位确定的;将日志数据存储到日志分区中。
其中,日志虚拟存储器与数据页虚拟存储器相关联,具体日志虚拟存储器与数据页虚拟存储器联合表征相同的数据存储空间,从而可以协同针对相同数据库的数据进行存储。分区标识用于标识存储空间的分区,具体可以根据数据页标识和分区划分单位确定。基于分区标识可以从日志虚拟存储器中确定用于存储当前日志数据的日志分区。
可选地,计算机设备可以确定与数据页虚拟存储器关联的日志虚拟存储器,具体计算机设备可以查询预先设置的虚拟存储器映射关系,基于该虚拟存储器映射关系可以查询确定与数据页虚拟存储器关联的日志虚拟存储器。计算机设备可以从日志虚拟存储器中确定用于存储日志数据的日志分区,具体计算机设备可以确定数据页分区的分区标识,分区标识基于数据页标识和分区划分单位确定得到。计算机设备按照分区标识遍历日志虚拟存储器中的各个分区,从而确定用于存储当前日志数据的、由分区标识所标识的日志分区。计算机设备可以将日志数据存储到确定出的日志分区中。
在具体实现中,对于相关联的数据页虚拟存储器和日志虚拟存储器,二者可以具有相同的存储空间大小,并按照相同的分区划分单位进行分区,从而得到相同数量的分区。数据页虚拟存储器和日志虚拟存储器各自的分区之间也可以设置关联关系,如可以将数据页虚拟存储器和日志虚拟存储器各自具有相同分区标识的分区建立关联,使得关联的分区可以联合表征数据存储空间的分区。例如,对于数据页虚拟存储器和日志虚拟存储器各自的存储空间大小均为32T,并按照5GB的分区划分单位进行分区,则得到相同数据的数据页分区和日志分区。针对各个分区可以通过分区标识进行区分,如可以通过分区编号进行标识。对于数据页虚拟存储器和日志虚拟存储器中具有相同分区编号的分区之间可以建立关联,以联合表征相同的数据存储空间分区。如对于分区编号为K的数据页分区K和日志分区K,数据页分区K用于存储分区编号为K的数据页,日志分区K用于存储分区编号为K的日志数据,从而数据页分区K和日志分区K可以协同存储分区编号为K的完整数据库数据。
本实施例中,计算机设备根据数据页分区的分区标识从日志虚拟存储器中确定日志分区,并将日志数据存储到该日志分区中,从而通过日志虚拟存储器针对日志数据存储,可以确保日志数据的数据安全,从而确保数据存储的可靠性。
在一个示例性的实施例中,数据存储方法还包括:当日志分区的存储空间饱和,创建与日志分区的逻辑地址空间相同的快照,并将日志数据存储到快照中;当快照满足释放判定条件,将快照删除。
其中,逻辑地址空间是指日志分区和快照在日志虚拟存储器中的存储空间。日志分区和快照具有相同的逻辑地址空间,即快照并非在日志虚拟存储器中针对日志空间的扩展。快照可以是数据再现的一个副本或者复制,对于文件***来说,文件***快照是文件***的一个即时拷贝,它包合了文件***在快照生成时刻所有的信息,本身也是一个完整可用的副本。通过创建快照,可以根据实际需要针对日志分区的存储空间进行扩展,以确保日志数据的正常获取。释放判定条件用于判定是否需要针对创建的快照进行删除,以释放相应存储空间。例如,释放判定条件可以包括达到快照释放周期、快照中日志数据完成数据存储处理等。
示例性地,计算机设备可以将获取的各个日志数据存储到日志分区中,在日志分区的存储空间饱和时,表明日志分区可能无法进一步存储日志数据,则计算机设备可以创建快照,快照与日志分区的逻辑地址空间相同。计算机设备可以将获取的日志数据存储到快照中,快照可以重定向到物理存储器,即快照中的数据可以实际存储到物理存储器中。在创建多个快照时,各个快照的逻辑地址空间与日志分区的逻辑地址空间相同,即各个快照在日志虚拟存储器中保持隔离。进一步地,计算机终端可以监测是否满足针对快照的释放判定条件,在满足释放判定条件时,计算机设备可以将创建的快照删除,从而释放相应的存储空间,如快照重定向到物理存储器时,计算机设备可以从物理存储器中删除快照,从而释放物理存储器的存储空间。例如,在快照中存储的日志数据完成数据存储,即快照汇总存储的日志数据已经存储到相应的物理存储器中时,计算机设备可以认为满足释放判定条件,并将快照进行删除,从而释放快照对应的存储空间。
本实施例中,计算机设备通过创建与日志分区的逻辑地址空间相同的快照进行日志数据存储,并对快照进行动态释放,可以确保日志数据的高效获取和存储,从而确保日志数据的数据安全,有利于提高数据存储的可靠性。
在一个示例性的实施例中,创建与日志分区的逻辑地址空间相同的快照,包括:基于日志分区创建快照,并根据日志分区的逻辑地址空间将快照重定向到至少一个物理存储器中。
示例性地,计算机设备可以基于日志分区创建快照,快照的存储空间大小与日志分区的存储空间大小相同,且快照的逻辑地址空间与日志分区的逻辑地址空间也相同,即均指向日志虚拟存储器中相同的日志分区。计算机设备根据日志分区的逻辑地址空间将快照进行重定向,具体重定向到至少一个物理存储器中,从而通过至少一个物理存储器为快照提供存储空间,以确保日志数据的正常获取和存储。
进一步地,当快照满足释放判定条件,将快照删除,包括:当快照中存储的日志数据完成相应的数据存储处理,将快照删除,并从至少一个物理存储器中释放快照的存储空间。
可选地,计算机设备可以监测快照中所存储日志数据的处理进度,在确定快照中所存储日志数据完成相应的数据存储处理,即快照中所存储日志数据均已存储到相应的物理存储器时,计算机设备可以认为满足释放判定条件,以将该快照删除,计算机设备还可以将物理存储器中快照所占用的存储空间进行释放,如可以解除快照到物理存储器的重定向关系。
本实施例中,计算机设备通过创建与日志分区的逻辑地址空间相同的快照,将快照重定向到物理存储器,以通过物理存储器进行日志数据存储,并对快照进行动态释放,可以确保日志数据的高效获取和存储,从而确保日志数据的数据安全,有利于提高数据存储的可靠性。
在一个示例性的实施例中,日志数据是针对数据页标识所标识数据页的首个日志数据;数据存储方法还包括:基于日志数据生成数据页标识所标识的数据页;将生成得到的数据页作为更新后的数据页写入到数据页分区中。
其中,日志数据属于首个日志数据,即在该日志数据之前不存在更新的数据页。可选地,计算机设备可以直接基于日志数据生成对应的数据页,并将生成的数据页作为更新后的数据页。计算机设备还可以将更新后的数据页直接写入到数据页虚拟存储器的数据页分区中。
本实施例中,对于首个日志数据,计算机设备直接根据该首个日志数据生成更新后的数据页并写入到数据页分区中进行存储,以确保数据页的数据安全,有利于提高数据存储的可靠性。
在一个示例性的实施例中,将更新后的数据页和日志数据存储到数据页分区相对应的至少一个物理存储器中,包括:确定基于分布式设置的至少两个物理存储器;针对至少两个物理存储器中的每个物理存储器,从所针对物理存储器中确定与数据页分区相对应的存储子空间;将更新后的数据页和日志数据分别存储到所针对物理存储器的存储子空间中。
其中,物理存储器包括至少两个,各个物理存储器基于分布式独立设置,从而每个物理存储器可以作为块设备进行数据存储。对于每个物理存储器均存储更新后的数据页和日志数据。存储子空间与数据页分区相对应,用于存储与数据页分区相关的数据,具体可以包括数据页和日志数据等。
示例性地,计算机设备可以确定预先基于分布式设置的至少两个物理存储器,计算机设备可以遍历每个物理存储器进行数据存储。对于每个物理存储器,计算机设备确定物理存储器中的存储子空间,存储子空间与数据页分区相对应。物理存储器可以划分成多个存储子空间,每个存储子空间可以存储相应数据页分区关联的数据。数据页分区与存储子空间之间的对应关系可以根据实际需要进行预先设置。计算机设备将更新后的数据页和日志数据分别存储到所针对物理存储器的存储子空间中。在具体实现中,存储子空间中也可以进一步划分出数据页空间和日志空间,以通过数据页空间存储更新后的数据页,通过日志空间存储日志数据。计算机设备遍历每个物理存储器后,使得每个物理存储器均同时存储了更新后的数据页和日志数据。
本实施例中,计算机设备将更新后的数据页和日志数据分别存储到每个物理存储器的存储子空间中,可以通过分布式的多个物理存储器进行数据存储,能够确保数据存储的可靠性。
在一个示例性的实施例中,从所针对物理存储器中确定与数据页分区相对应的存储子空间,包括:针对数据页分区的分区标识进行映射,得到分区标识映射结果;根据分区标识映射结果确定子空间标识;从所针对物理存储器中确定子空间标识所标识的存储子空间。
其中,分区标识用于标识存储空间的分区,具体可以根据数据页标识和分区划分单位确定。基于分区标识可以从日志虚拟存储器中确定用于存储当前日志数据的日志分区,也可以从数据页虚拟存储器中确定用于存储更新后的数据页的数据页分区。分区标识映射结果是将分区标识进行映射后得到的映射结果,具体可以包括基于线性映射算法或者非线性映射算法映射得到的映射结果,如分区标识映射结果可以包括分区标识基于哈希(Hash)算法映射得到的映射结果。子空间标识用于标识物理存储器中的存储子空间,不同的存储子空间可以对应于不同的子空间标识,子空间标识具体形式可以为子空间编号、子空间名称等。
具体地,计算机设备可以确定数据页分区的分区标识,分区标识可以基于数据页分区和分区划分单位计算得到。计算机设备可以将分区标识按照预设的映射算法进行映射,如可以按照一致性哈希算法映射得到分区标识映射结果。计算机设备可以基于分区标识映射结果确定子空间标识。在具体应用中,可以预先设置分区标识映射结果与子空间标识之间的对应关系,计算机设备可以通过查询预设的对应关系,确定分区标识映射结果对应的子空间标识。计算机设备可以遍历物理存储器中的各个存储子空间,从而从物理存储器中确定子空间标识所标识的存储子空间,该存储子空间是用于存储更新后的数据页和日志数据的存储空间。
本实施例中,计算机设备将数据页分区的分区标识进行映射,根据分区标识映射结果确定子空间标识,并从物理存储器中确定子空间标识所标识的存储子空间,从而可以通过针对分区标识进行映射,准确的定位到存储子空间进行数据存储,能够确保数据存储的有序管理,确保数据存储的可靠性。
本申请还提供一种应用场景,该应用场景应用上述的数据存储方法。具体地,该数据存储方法在该应用场景的应用如下:
关系型数据库Mysql在使用本地磁盘存储数据的时候会有数据文件和redo log(重做日志)文件,并且以文件的形式进行记录。其中,redo log(重做日志)用于记录数据库事务操作对数据库数据页做的修改。为了满足计算存储分离以及可扩展性方面的需求,往往要使用分布式存储来替换本地磁盘单机存储。而在使用分布式块存储的场景下,往往需要对块存储进行格式化成文件***,这样Mysql的数据组织分布可以无需变化就直接写入,仍然分为数据文件和redo log日志文件,只需把块存储格式化出来的文件***相当于一个容量更大的本地文件***使用,这对于数据库的IO(输入输出)落盘增加了开销,需要先经过块存储上的文件***,再到块存储。此外,块存储***的带宽会被数据和日志分割,而16KB的数据页(Page)相对于几十字节的redo log大很多,传输一个数据页的流量相当于传几百个redo log的流量,redo log落盘,即redo log存储到物理磁盘的慢会影响Mysql内存刷新(flush)速度,可能会降低数据库的性能。
具体地,如图6所示,在使用本地存储的Mysql数据库中,对于主机Host运行的Mysql数据库,其数据页(page)和日志(log)均通过本地文件***(File System,FS)存储到本次磁盘中。而针对本地存储的Mysql数据库进行存算分离处理后,在使用分布式块存储的Mysql存算分离数据组织中,分布式块存储***可以虚拟出多个逻辑块设备。对于主机Host运行的Mysql数据库,其数据页和日志均可以通过本地文件***发送给块设备1。块设备1挂载到主机Host,主机Host可以是物理机也可以是虚拟机,并格式化文件***FS(此文件***一般是定制的,需要能保证多个Host挂载时同时写数据一致性)。主机Host上面的Mysq数据库l写数据页Page和日志到FS文件***,然后到达块设备1,最后通过网络数据传入到块存储***中。在块存储***中可以包括多个块设备,对于块设备1,可以存储来自数据库的数据页和日志数据。
然而,分布式块存储***对于Mysql是个黑盒,跟使用本地磁盘一样,这就需要在块设备上面增加一层文件***来保证原来Mysql数据(包括page数据和log数据)的落盘逻辑,以及数据组织方式不变,同时这个文件***层为了能实现块设备的多挂载需要定制开发。而这也使得块存储***无法感知Mysql,不能把一些Mysql的计算任务转移到块存储***上。此外,使用分布式块存储***之后,Mysql节点和存储***之间使用网络传输数据,而数据组织没有发生变化,导致16KB的数据页大量的占用存储带宽,影响整个Mysql的性能。
基于此,本实施例提供的数据存储方法,基于分布式块存储的数据库数据组织实现,利用日志即数据库的思想只传redo log日志给块存储***,并且通过多个块设备裸盘来组织,同时利用块设备的快照来轮转存储日志,通过这些来实现基于分布式块存储***的裸盘数据组织分布。本实施例提供的数据存储方法使存储感知Mysql数据库,并无需构建文件***层直接通过块设备裸盘进行数据组织,通过多个块设备裸盘来组织Mysql数据空间,同时利用块设备的快照来轮转存储日志,通过这些来实现数据重新组织分布。
具体地,如图7所示,基于分布式块存储的数据库数据组织分布中,对于主机Host运行的Mysql数据库,Mysql通过块存储客户端向块存储***只传输日志数据。日志数据使用日志disk(即日志磁盘,属于虚拟块设备)进行存储,disk按2GB进行分区,此处称分区为小表,redo log根据所属的Page number(数据页编号)落入对应的小表中,而一个redo日志是属于一个page的;对日志disk小表中的redo log进行日志回放。日志回放即为把redolog记录的页面修改内容记录到page页面上,对于第一个redo log回放就是生成原始的page页面。然后把新生成的page页面写入到page disk(数据页磁盘)对应的小表空间上。如此,实现了对数据库的数据进行落盘重新组织。其中,disk是分布式块存储***分配出来的逻辑虚拟盘。
进一步地,本实施例提供的数据存储方法基于分布式块存储的数据库数据组织实现,以提升Mysql在分布式块存储下的性能,具体包括表空间多块设备联合分区组织、Page数据和日志数据线性关联以及日志空间轮转等处理。
对于表空间多块设备联合分区组织处理,一个Mysql数据库的page数据通常由多个表空间组成,比如数据表空间、临时表空间、UNDO表(撤销表)空间等,在使用本地磁盘存储的时候,这些表空间都对应一个文件进行存储。此外redo日志数据是由几个日志文件进行轮转的写入。具体如图8所示,在本地存储数据组织分布中,本地存储中数据页包括数据表空间文件、临时表空间文件、撤销表空间文件等文件数据,而日志数据则可以通过日志文件1、日志文件2和日志文件3进行轮转写,其中,日志文件1、日志文件2和日志文件3作为写入日志数据的日志空间。此外,日志数据在写完日志文件1时,再写日志文件2,写完日志文件2之后再写日志文件3,写完日志文件3之后重新写日志文件1,以实现日志文件的轮转。
本实施例提供的数据存储方法对表空间以及page数据和log数据进行了重新组织,每个表空间使用两个disk来逻辑表示,分别用来存储page数据和log数据,并且对disk进行分区,每个分区大小为2GB,两个disk对应分区之间存在逻辑关联。具体如图9所示,对于数据表空间,可以通过多块设备联合实现存储空间,其逻辑地址空间为128T;而逻辑地址空间通过两个disk(磁盘)实现,包括数据页磁盘(page disk)和日志磁盘(log disk),数据页磁盘和日志磁盘各自的存储空间均为0-128T。以数据表空间为例,数据表空间的逻辑地址空间是128T,这里Page disk和Log disk都使用128T的块设备与之对应,两个disk都映射到128T的逻辑地址空间,也就是由两个块设备进行联合表示一个表空间,通过这种方式使Page数据和Log数据进行逻辑的分离。进一步地,每个disk都以2GB为单位进行分区管理,且数据页磁盘和日志磁盘各自的每个分区都存在线性关联。如图10所示,数据页磁盘和日志磁盘分别划分为N个分区,每个分区的大小均为2GB。
进一步地,对于page数据和日志数据线性关联处理,page disk和log disk都映射在同一个128T的地址空间,这两个disk之间的小表分区存在一一对应关系。关于page数据是在page disk上面的分布,page数据由一个个16KB为单位的page页组成,每个page页都有一个全局的唯一编号(称为page number),page页按编号从page disk的0地址空间开始占用。具体如图11所示,对于表线性地址空间,其空间大小为128T,可以一次容纳各个数据页,数据页的编号从0开始。而对于数据页磁盘的数据组织,一个分区2GB可以容纳131072个数据页page,分布在第一个分区的数据页page编号从0到131071,分布在第二个分区的数据页page编号从131072到262143,以此类推,这样在数据页page和分区之间存在如下的公式(1),从而可以根据数据页page编号确定相应所属分区。
分区编号 = page number / 131072 + 1 (1)
进一步地,redo log数据原来在使用本地盘进行存储的时候,进行顺序编号写入到本地文件中。具体如图12所示,对于依次接收的12个日志数据(log),日志数据1、日志数据2、日志数据3和日志数据4可以通过日志文件1进行存储,日志数据5、日志数据6、日志数据7和日志数据8可以通过日志文件2进行存储,日志数据9、日志数据10、日志数据11和日志数据12可以通过日志文件3进行存储,日志文件1、日志文件2和日志文件3之间进行轮转写入处理,从而针对连续的日志数据流进行处理。
而log数据最终是作用在page数据上面进行修改然后生成新的page数据,所以log数据中会包含所要修改的page number,通过log所要作用的page,找到page所在的pagedisk的分区号,然后把log数据存在log disk相同的分区号上。具体如图13所示,日志流顺序来了4个log数据,编号顺序是1、2、3、4,对应操作的数据页page编号分别为131072、1、500、和262145,其中第一个日志数据log对应的数据页编号在分区2中,第二个日志数据和三个日志数据对应的数据页编号在分区1中,第四个日志数据对应的数据页编号在分区3中。找到对应的数据页分区之后,日志数据组织存在相应的分区内。而使用日志即数据库的思想,向分布式块存储只发送log数据,page数据通过分布式存储使用log进行日志回放生成,生成的page数据就存在page disk相应page的位置。
进一步地,对page数据和log数据进行线性逻辑关联,disk相应位置所以同一个分区,而一个分区对应一个分布式存储***的小表,这个小表会使用三副本冗余策略分布式在3台机器的三个磁盘上,这样就保证page数据和log数据在同一个磁盘上面,不会跨磁盘存储增加网络延迟。具体如图14所示,在分区数据物理分布中,数据页磁盘page disk和日志磁盘log disk的分区1对应一个小表,小表是分布式块存储***数据管理的基本单位,存储集群中的每个物理磁盘空间都按2GB的粒度划分小表,就如图14中的磁盘1、磁盘2等,3个主机Host机器相应磁盘ID的三个磁盘组成一个副本组,如图14中的虚线框,分布式块存储的容量按小表进行分配使用。这个对应关系是在创建数据库表空间进行分区初始化的时候,从分布式块存储***获取空闲小表得到的,并进行分区和小表的关系绑定。小表根据一致性哈希(Hash)得到其所在的物理磁盘三副本组。然后把page数据和log数据写入到这三个物理磁盘上。通过这些就实现了page数据和log数据的组织分布,但是log数据是日志流,会不断有日志生成需要写入,原来本地存储使用的日志文件轮转方式存储来复用空间,可以使用快照进行轮转存储。具体地,在分布式存储中,可以包括3个主机,每个主机中可以分别划分出3个磁盘,而当前分区1所对应小表映射到磁盘2,即可以将分区1中的数据页和日志数据存储到各个主机的磁盘2中。进一步地,对于物理磁盘中存储空间不固定,即2GB的小表空间按1M粒度申请物理空间,在服务启动的时扫描物理磁盘上的1M空间,然后把这些空间放在一个空闲列表中,在2GB小表空间需要存到物理磁盘上的时候,基于空闲列表分配空间,然后写到物理磁盘对应的1M空间中。
对于日志空间轮转处理,disk对应的分区小表只有2GB,所以对于源源不断的日志流,可以使用快照在进行日志空间的伸缩,在即将写满2GB空间的日志分区时,通过创建块设备快照,使后续的日志写入到新的快照上,而分区内的偏移(Offset)重置到开头。具体如图15所示,在日志空间轮转处理中,log编号指的是这个分区内的log编号,这里连续的编号不代表的全局连续,log1只是代表这个分区内的第一个编号,而不是整个数据库日志流的第一个。此处包括3个快照,第一个快照中存储着log1到logN-1,第二个快照存储着logN到logM-1,第三个快照存储着logM和logM+1。日志分区在刚开始存储写log的时候先写入到快照1上面,同时逻辑偏移从0开始,然后log一直追加写,在写到逻辑空间2GB的时候,创建快照2,同时把逻辑偏移重置为0,然后Log追加写到快照2,在逻辑偏移到2GB的时候,创建快照3,后续的日志写入快照3。快照1、快照2、快照3的逻辑地址空间都是相同的,都是分区0到2GB空间,通过创建快照类似创建了3个命令空间(namespace,类似容器中的隔离)。通过不断的创建快照可以无限的扩展日志空间,通过对于已经回放完日志(redo日志主要用来回放生成page数据,一旦回放完就没有用了可以删除)的快照进行删除来进行缩小日志空间。
此外,如图16所示,对于log分区快照物理空间,log分区对应的小表所在磁盘的物理快照数据分布中,分区的快照数据通过重定向分布到不同的物理磁盘位置,即实现了块设备(Block)的物理分散,而在逻辑上面都对应分区的0到2GB空间。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据存储方法的数据存储装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据存储装置实施例中的具体限定可以参见上文中对于数据存储方法的限定,在此不再赘述。
在一个示例性的实施例中,如图17所示,提供了一种数据存储装置1700,包括:日志数据获取模块1702、数据页分区确定模块1704、日志回放模块1706和数据落盘处理模块1708,其中:
日志数据获取模块1702,用于获取用于记录数据库中数据更新变化的日志数据;
数据页分区确定模块1704,用于根据日志数据携带的数据页标识确定数据页分区;数据页分区,是数据页虚拟存储器中用于存储数据页标识所标识数据页的分区;
日志回放模块1706,用于基于日志数据,对数据页分区中存储的数据页标识所标识的数据页进行日志回放,获得数据页对应更新后的数据页;
数据落盘处理模块1708,用于将更新后的数据页和日志数据存储到数据页分区相对应的至少一个物理存储器中。
在一个实施例中,日志回放模块1706,还用于基于日志数据确定针对数据页标识所标识数据页的数据更新信息;按照数据更新信息对数据页进行数据更新,得到更新后的数据页。
在一个实施例中,日志回放模块1706,还用于从数据页分区中读取数据页;按照数据更新信息对读取的数据页中的数据进行更新,获得更新后的数据页;将更新后的数据页写入到数据页分区中,以替换数据页。
在一个实施例中,数据页分区确定模块1704,还用于确定日志数据携带的数据页标识;基于数据页标识和分区划分单位,确定与数据页标识所标识数据页对应的分区标识;根据分区标识,从数据页虚拟存储器中确定用于存储数据页标识所标识数据页的数据页分区。
在一个实施例中,还包括日志数据存储模块,用于将日志数据存储到日志虚拟存储器的日志分区中;日志虚拟存储器与数据页虚拟存储器联合表征相同的数据存储空间;日志回放模块1706,还用于从日志分区中读取日志数据,并基于读取得到的日志数据对数据页分区中存储的数据页标识所标识的数据页进行日志回放,获得数据页对应更新后的数据页;数据落盘处理模块1708,还用于从数据页分区中读取更新后的数据页;将读取得到的日志数据和更新后的数据页,存储到数据页分区相对应的至少一个物理存储器中。
在一个实施例中,日志数据存储模块,还用于确定与数据页虚拟存储器关联的日志虚拟存储器;根据数据页分区的分区标识,从日志虚拟存储器中确定日志分区;分区标识是基于数据页标识和分区划分单位确定的;将日志数据存储到日志分区中。
在一个实施例中,还包括快照动态处理模块,用于当日志分区的存储空间饱和,创建与日志分区的逻辑地址空间相同的快照,并将日志数据存储到快照中;当快照满足释放判定条件,将快照删除。
在一个实施例中,快照动态处理模块,还用于基于日志分区创建快照,并根据日志分区的逻辑地址空间将快照重定向到至少一个物理存储器中;当快照中存储的日志数据完成相应的数据存储处理,将快照删除,并从至少一个物理存储器中释放快照的存储空间。
在一个实施例中,日志数据是针对数据页标识所标识数据页的首个日志数据;还包括首个数据处理模块,用于基于日志数据生成数据页标识所标识的数据页;将生成得到的数据页作为更新后的数据页写入到数据页分区中。
在一个实施例中,数据落盘处理模块1708,还用于确定基于分布式设置的至少两个物理存储器;针对至少两个物理存储器中的每个物理存储器,从所针对物理存储器中确定与数据页分区相对应的存储子空间;将更新后的数据页和日志数据分别存储到所针对物理存储器的存储子空间中。
在一个实施例中,数据落盘处理模块1708,还用于针对数据页分区的分区标识进行映射,得到分区标识映射结果;根据分区标识映射结果确定子空间标识;从所针对物理存储器中确定子空间标识所标识的存储子空间。
上述数据存储装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个示例性的实施例中,提供了一种计算机设备,该计算机设备可以是服务器或者终端,其内部结构图可以如图18所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过***总线连接,通信接口通过输入/输出接口连接到***总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据存储方法针对处理的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据存储方法。
本领域技术人员可以理解,图18中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要符合相关规定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (15)

1.一种数据存储方法,其特征在于,所述方法包括:
获取用于记录数据库中数据更新变化的日志数据;
根据所述日志数据携带的数据页标识确定数据页分区;所述数据页分区,是数据页虚拟存储器中用于存储所述数据页标识所标识数据页的分区;
基于所述日志数据,对所述数据页分区中存储的所述数据页标识所标识的数据页进行日志回放,获得所述数据页对应更新后的数据页;
将所述更新后的数据页和所述日志数据存储到所述数据页分区相对应的至少一个物理存储器中。
2.根据权利要求1所述的方法,其特征在于,所述基于所述日志数据,对所述数据页分区中存储的所述数据页标识所标识的数据页进行日志回放,获得所述数据页对应更新后的数据页,包括:
基于所述日志数据确定针对所述数据页标识所标识数据页的数据更新信息;
按照所述数据更新信息对所述数据页进行数据更新,得到更新后的数据页。
3.根据权利要求2所述的方法,其特征在于,所述按照所述数据更新信息对所述数据页进行数据更新,得到更新后的数据页,包括:
从所述数据页分区中读取所述数据页;
按照所述数据更新信息对读取的所述数据页中的数据进行更新,获得更新后的数据页;
将所述更新后的数据页写入到所述数据页分区中,以替换所述数据页。
4.根据权利要求1所述的方法,其特征在于,所述根据所述日志数据携带的数据页标识确定数据页分区,包括:
确定所述日志数据携带的数据页标识;
基于所述数据页标识和分区划分单位,确定与所述数据页标识所标识数据页对应的分区标识;
根据所述分区标识,从数据页虚拟存储器中确定用于存储所述数据页标识所标识数据页的数据页分区。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述日志数据存储到日志虚拟存储器的日志分区中;所述日志虚拟存储器与所述数据页虚拟存储器联合表征相同的数据存储空间;
所述基于所述日志数据,对所述数据页分区中存储的所述数据页标识所标识的数据页进行日志回放,获得所述数据页对应更新后的数据页,包括:
从所述日志分区中读取所述日志数据,并基于读取得到的所述日志数据对所述数据页分区中存储的所述数据页标识所标识的数据页进行日志回放,获得所述数据页对应更新后的数据页;
所述将所述更新后的数据页和所述日志数据存储到所述数据页分区相对应的至少一个物理存储器中,包括:
从所述数据页分区中读取所述更新后的数据页;
将读取得到的所述日志数据和所述更新后的数据页,存储到所述数据页分区相对应的至少一个物理存储器中。
6.根据权利要求5所述的方法,其特征在于,所述将所述日志数据存储到日志虚拟存储器的日志分区中,包括:
确定与所述数据页虚拟存储器关联的日志虚拟存储器;
根据所述数据页分区的分区标识,从所述日志虚拟存储器中确定日志分区;所述分区标识是基于所述数据页标识和分区划分单位确定的;
将所述日志数据存储到所述日志分区中。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述日志分区的存储空间饱和,创建与所述日志分区的逻辑地址空间相同的快照,并将所述日志数据存储到所述快照中;
当所述快照满足释放判定条件,将所述快照删除。
8.根据权利要求7所述的方法,其特征在于,所述创建与所述日志分区的逻辑地址空间相同的快照,包括:
基于所述日志分区创建快照,并根据所述日志分区的逻辑地址空间将所述快照重定向到所述至少一个物理存储器中;
所述当所述快照满足释放判定条件,将所述快照删除,包括:
当所述快照中存储的日志数据完成相应的数据存储处理,将所述快照删除,并从所述至少一个物理存储器中释放所述快照的存储空间。
9.根据权利要求1所述的方法,其特征在于,所述日志数据是针对所述数据页标识所标识数据页的首个日志数据;所述方法还包括:
基于所述日志数据生成所述数据页标识所标识的数据页;
将生成得到的所述数据页作为更新后的数据页写入到所述数据页分区中。
10.根据权利要求1至9任意一项所述的方法,其特征在于,所述将所述更新后的数据页和所述日志数据存储到所述数据页分区相对应的至少一个物理存储器中,包括:
确定基于分布式设置的至少两个物理存储器;
针对所述至少两个物理存储器中的每个物理存储器,从所针对物理存储器中确定与所述数据页分区相对应的存储子空间;
将所述更新后的数据页和所述日志数据分别存储到所述所针对物理存储器的所述存储子空间中。
11.根据权利要求10所述的方法,其特征在于,所述从所针对物理存储器中确定与所述数据页分区相对应的存储子空间,包括:
针对所述数据页分区的分区标识进行映射,得到分区标识映射结果;
根据所述分区标识映射结果确定子空间标识;
从所针对物理存储器中确定所述子空间标识所标识的存储子空间。
12.一种数据存储装置,其特征在于,所述装置包括:
日志数据获取模块,用于获取用于记录数据库中数据更新变化的日志数据;
数据页分区确定模块,用于根据所述日志数据携带的数据页标识确定数据页分区;所述数据页分区,是数据页虚拟存储器中用于存储所述数据页标识所标识数据页的分区;
日志回放模块,用于基于所述日志数据,对所述数据页分区中存储的所述数据页标识所标识的数据页进行日志回放,获得所述数据页对应更新后的数据页;
数据落盘处理模块,用于将所述更新后的数据页和所述日志数据存储到所述数据页分区相对应的至少一个物理存储器中。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
15.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
CN202410271793.4A 2024-03-11 2024-03-11 数据存储方法、装置、计算机设备和存储介质 Active CN117873405B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410271793.4A CN117873405B (zh) 2024-03-11 2024-03-11 数据存储方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410271793.4A CN117873405B (zh) 2024-03-11 2024-03-11 数据存储方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN117873405A true CN117873405A (zh) 2024-04-12
CN117873405B CN117873405B (zh) 2024-07-09

Family

ID=90590374

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410271793.4A Active CN117873405B (zh) 2024-03-11 2024-03-11 数据存储方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN117873405B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307458A1 (en) * 2008-06-09 2009-12-10 International Business Machines Corporation Virtual real memory exportation for logical partitions
CN102016800A (zh) * 2008-04-28 2011-04-13 国际商业机器公司 将多个逻辑分区对接到自虚拟输入/输出设备
US20130117528A1 (en) * 2011-11-07 2013-05-09 Sap Ag Partitioning Data Within A Distributed Data Storage System Using Virtual File Links
CN103412803A (zh) * 2013-08-15 2013-11-27 华为技术有限公司 数据恢复的方法及装置
US20140279900A1 (en) * 2013-03-15 2014-09-18 Amazon Technologies, Inc. Place snapshots
US20150261674A1 (en) * 2014-03-11 2015-09-17 Amazon Technologies, Inc. Page cache write logging at block-based storage
CN108804038A (zh) * 2018-05-29 2018-11-13 新华三技术有限公司 日志数据迁移的方法、装置、服务器和计算机可读介质
CN110196788A (zh) * 2018-03-30 2019-09-03 腾讯科技(深圳)有限公司 一种数据读取方法、装置、***及存储介质
CN115904211A (zh) * 2021-08-13 2023-04-04 华为技术有限公司 一种存储***、数据处理方法及相关设备
CN117632781A (zh) * 2022-08-25 2024-03-01 美光科技公司 用于共享存储器快照的***、非暂时性计算机可读存储媒体和方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102016800A (zh) * 2008-04-28 2011-04-13 国际商业机器公司 将多个逻辑分区对接到自虚拟输入/输出设备
US20090307458A1 (en) * 2008-06-09 2009-12-10 International Business Machines Corporation Virtual real memory exportation for logical partitions
US20130117528A1 (en) * 2011-11-07 2013-05-09 Sap Ag Partitioning Data Within A Distributed Data Storage System Using Virtual File Links
US20140279900A1 (en) * 2013-03-15 2014-09-18 Amazon Technologies, Inc. Place snapshots
CN103412803A (zh) * 2013-08-15 2013-11-27 华为技术有限公司 数据恢复的方法及装置
US20150261674A1 (en) * 2014-03-11 2015-09-17 Amazon Technologies, Inc. Page cache write logging at block-based storage
CN110196788A (zh) * 2018-03-30 2019-09-03 腾讯科技(深圳)有限公司 一种数据读取方法、装置、***及存储介质
CN108804038A (zh) * 2018-05-29 2018-11-13 新华三技术有限公司 日志数据迁移的方法、装置、服务器和计算机可读介质
CN115904211A (zh) * 2021-08-13 2023-04-04 华为技术有限公司 一种存储***、数据处理方法及相关设备
CN117632781A (zh) * 2022-08-25 2024-03-01 美光科技公司 用于共享存储器快照的***、非暂时性计算机可读存储媒体和方法

Also Published As

Publication number Publication date
CN117873405B (zh) 2024-07-09

Similar Documents

Publication Publication Date Title
US11068455B2 (en) Mapper tree with super leaf nodes
US10430398B2 (en) Data storage system having mutable objects incorporating time
US8843454B2 (en) Elimination of duplicate objects in storage clusters
CN111427847B (zh) 面向用户自定义元数据的索引与查询方法和***
US9684702B2 (en) Database redistribution utilizing virtual partitions
US20160350302A1 (en) Dynamically splitting a range of a node in a distributed hash table
CN101567003A (zh) 并行文件***中资源的管理和分配方法
CN104408111A (zh) 一种删除重复数据的方法及装置
CN102662992A (zh) 一种海量小文件的存储、访问方法及装置
US11397749B2 (en) Asynchronous replication of in-scope table data
CN106570113B (zh) 一种海量矢量切片数据云存储方法及***
CN108427728A (zh) 元数据的管理方法、设备及计算机可读介质
CN109407985B (zh) 一种数据管理的方法以及相关装置
JP2015528957A (ja) 分散ファイルシステム、ファイルアクセス方法及びクライアントデバイス
CN103473258A (zh) 云存储文件***
US20120054429A1 (en) Method and apparatus for optimizing data allocation
CN103942301A (zh) 一种面向多数据类型访问应用的分布式文件***
US10521398B1 (en) Tracking version families in a file system
CN117873405B (zh) 数据存储方法、装置、计算机设备和存储介质
US11989159B2 (en) Hybrid snapshot of a global namespace
US10540329B2 (en) Dynamic data protection and distribution responsive to external information sources
US9898485B2 (en) Dynamic context-based data protection and distribution
CN109960460B (zh) 一种分布式存储***
CN111782150A (zh) 一种基于对象存储的多桶存储***及方法
CN111309263A (zh) 一种分布式对象存储中的逻辑卷实现方法

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