CN115982156A - 数据处理方法、装置、计算机设备、存储介质和程序产品 - Google Patents
数据处理方法、装置、计算机设备、存储介质和程序产品 Download PDFInfo
- Publication number
- CN115982156A CN115982156A CN202211605029.3A CN202211605029A CN115982156A CN 115982156 A CN115982156 A CN 115982156A CN 202211605029 A CN202211605029 A CN 202211605029A CN 115982156 A CN115982156 A CN 115982156A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- table structure
- acquiring
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请涉及一种数据处理方法、装置、计算机设备、存储介质和程序产品,涉及大数据技术领域。所述方法包括:从预设的存储空间获取MySQL数据库的表空间文件和表结构文件;所述表空间文件和所述表结构文件为基于所述MySQL数据库支持的存储引擎生成的;对所述表结构文件解析,获取所述表空间文件对应的表结构信息;根据所述表结构信息和所述表空间文件,获取所述MySQL数据库的行数据。采用本方法能够提高提取数据的效率。
Description
技术领域
本申请涉及大数据技术领域,特别是涉及一种数据处理方法、装置、计算机设备、存储介质和程序产品。
背景技术
随着MySQL数据库的发展,由于MySQL数据库具有开源、轻量化的优点,越来越多的企业选择应用MySQL数据库进行二次开发。通常,企业应用MySQL数据库时,需要先从MySQL数据库中提取不同应用场景对应的数据,利用提取的数据对MySQL数据库进行再次开发和应用。
然而,传统的数据提取方法存在提取效率较低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高提取数据的效率的数据处理方法、装置、计算机设备、存储介质和程序产品。
第一方面,本申请提供了一种数据处理方法。所述方法包括:
从预设的存储空间获取MySQL数据库的表空间文件和表结构文件;所述表空间文件和所述表结构文件为基于所述MySQL数据库支持的存储引擎生成的;
对所述表结构文件解析,获取所述表空间文件对应的表结构信息;
根据所述表结构信息和所述表空间文件,获取所述MySQL数据库的行数据。
在其中一个实施例中,所述根据所述表结构信息和所述表空间文件,获取所述MySQL数据库的行数据,包括:
基于所述表空间文件的页头信息,获取所述表空间文件中的数据页;
根据所述表结构信息,获取所述数据页的行记录格式;
根据所述表结构信息、所述行记录格式和所述数据页,获取所述行数据。
在其中一个实施例中,所述根据所述表结构信息、所述行记录格式和所述数据页,获取所述行数据,包括:
根据所述行记录格式将所述数据页进行拆分,获取所述数据页对应的多条数据行,并将所述多条数据行存储至预设的消息队列中;
根据所述表结构信息中的数据列的长度信息,对存储在所述消息队列中的多条数据行进行切分处理,获取多个字节数组;
根据所述行记录格式和所述表结构信息,对所述多个字节数组进行并发解析,得到所述行数据。
在其中一个实施例中,所述基于所述表空间文件的页头信息,获取所述表空间文件中的数据页,包括:
从所述页头信息中,获取所述页头信息中的文件头信息;
基于所述文件头信息,从所述表空间文件中,获取所述数据页。
在其中一个实施例中,所述对所述表结构文件解析,获取所述表空间文件对应的表结构信息,包括:
调用预设的命令,对所述表结构文件进行解析,获取所述表空间文件对应的表结构信息。
在其中一个实施例中,所述存储引擎包括InnoDB存储引擎、MyISAM存储引擎和MERGE存储引擎中的任意一种。
在其中一个实施例中,所述方法还包括:
基于目标应用场景,采用所述目标应用场景对应的存储策略,将所述行数据存储至目标对象中。
第二方面,本申请还提供了一种数据处理装置。所述装置包括:
第一获取模块,用于从预设的存储空间获取MySQL数据库的表空间文件和表结构文件;所述表空间文件和所述表结构文件为基于所述MySQL数据库支持的存储引擎生成的;
第二获取模块,用于对所述表结构文件解析,获取所述表空间文件对应的表结构信息;
第三获取模块,用于根据所述表结构信息和所述表空间文件,获取所述MySQL数据库的行数据。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述如第一方面所述的数据处理方法。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行如第一方面所述的数据处理方法。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行如第一方面所述的数据处理方法。
上述数据处理方法、装置、计算机设备、存储介质和程序产品,通过从预设的存储空间获取基于MySQL数据库支持的存储引擎生成的的表空间文件和表结构文件,对表结构文件解析获取表空间文件对应的表结构信息,根据表结构信息和表空间文件,获取MySQL数据库的行数据,由于MySQL数据库支持的存储引擎生成的文件存储在磁盘中,相比于传统技术,可以在MySQL数据库离线的情况下提取数据库中的数据,使得数据提取不需要依赖于数据库的运行,减少了数据提取的限制,从而提高了数据提取的效率;另外,通过解析的表结构信息,能够快速的得到数据存储的格式,从而根据数据存储的格式对表空间文件进行解析,能够得到准确的MySQL数据库的行数据,进而提高了提取的数据的准确度。
附图说明
图1为一个实施例中数据处理方法的应用环境图;
图2为一个实施例中数据处理方法的流程示意图;
图3为另一个实施例中数据处理方法的流程示意图;
图4为另一个实施例中数据处理方法的流程示意图;
图5为另一个实施例中数据处理方法的流程示意图;
图6为一个实施例中数据处理装置的结构框图;
图7为另一个实施例中数据处理装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
需要说明的是,本申请的数据处理方法、装置、设备、存储介质和程序产品可以应用在大数据领域,也可用于除大数据领域外的其他技术领域,本申请对数据处理方法、装置、设备、存储介质和程序产品的应用领域不做限定。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”等仅仅是区别类似的对象,不代表针对对象的特定排序。在本发明的描述中,“多条”的含义是至少两条,例如两条,三条等,除非另有明确具体的限定。
本申请实施例提供的数据处理方法,可以应用于如图1所示的应用环境中。图1提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图1所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据处理涉及的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据处理方法。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
需要说明的是,MySQL数据库可以支持不同类型的存储引擎,例如MyISAM存储引擎、MERGE存储引擎、InnoDB存储引擎等,其中,MyISAM存储引擎适合以读操作和插入操作为主,更新和删除操作较少,并且对事务的完整性、并发性要求较低的应用,MERGE存储引擎可以用于将一系列等同的MyISAM表以逻辑方式组合在一起,并作为一个对象引用该组合,MERGE存储引擎将不同的数据表分布在多个磁盘上,可以有效的改善MERGE表的访问效率,适用于数据仓储等超大型数据库(Very Large DataBase,VLDB),InnoDB存储引擎具有较好的数据读写和并发处理能力,适用于一致性要求高、数据更新频繁的应用场景,而且,基于InnoDB存储引擎对数据进行处理时,可以将存储在磁盘中的数据加载到内存中,在内存中对数据进行修改或者添加等操作,再将操作之后的数据重现写入到磁盘中,也就是说,InnoDB存储引擎是基于磁盘存储的。由于中央处理器(Central Processing Unit,CPU)的速度和磁盘速度之间的差异,InnoDB存储引擎使用缓冲池技术来提高数据库的整体性能,缓冲池为一块内存区域,在数据库中进行读取页的操作时,需要首先将从磁盘读到的页存放在缓冲池中,到下一次读取相同的页时,先判断该页是不是在缓冲池中,若在,则称该页在缓冲池中被命中,可以直接读取该页;否则,需要读取磁盘上的页。对于数据库中的页进行修改操作时,首先修改在缓冲池中的页,然后再以一定的频率将修改后的页刷新到磁盘,也可以理解为将修改后的页覆盖原来的页,并写入磁盘中,而且并不是每次页发生改变就将修改后的页刷新至磁盘。因此,基于InnoDB存储引擎,MySQL数据库中的数据在服务器关闭或者断电的情况下仍然存在,本申请中将以MySQL数据库支持的存储引擎为InnoDB存储引擎为例对数据处理方法进行说明,MySQL数据库支持的其他存储引擎也可参照本申请实施例提供的方案实现。
在一个实施例中,如图2所示,提供了一种数据处理方法,以该方法应用于图1中的计算机设备为例进行说明,包括以下步骤:
S201,从预设的存储空间获取MySQL数据库的表空间文件和表结构文件;表空间文件和表结构文件为基于MySQL数据库支持的存储引擎生成的。
其中,存储空间指的是MySQL数据库用于存储数据的缓冲区,缓冲区用于存储表空间文件和表结构文件,在MySQL数据库可以运行的情况下,可以基于InnoDB存储引擎生成表空间文件和表结构文件,并将生成的表空间文件和表结构文件存储至缓冲区中,缓冲区中用于管理数据文件的空间称为表空间,管理的数据文件包括表空间文件和表结构文件,其中,表空间文件指的是存储数据的文件,表结构文件指的是存放表空间文件中存储数据的数据结构的文件;存储引擎指的是数据库中将数据存储在文件系统中的存储方式或者存储格式,数据保存到数据文件之前会传输到存储引擎,再按照不同存储引擎的存储格式进行存储。
需要说明的是,数据库中数据的存储结构可以为一个数据库包括的多个表空间,一个表空间中可以有多个数据文件,一个表空间分为多个物理文件的段,一个段由多个区间组成,一个区间由一组连续的页组成,页为存储引擎中磁盘管理的最小单位,用于存储数据库的相关数据,例如,本实施例中的页可以为InnoDB存储引擎中磁盘管理的最小单位。
可以理解的是,在数据库中创建一个数据表,相应的会在表空间中生成文件名后缀为“.ibd”的表空间文件,以及用于存储该数据表的数据结构,且文件名后缀为“.frm”的表结构文件。在本实施例中,在MySQL数据库支持的存储引擎为InnoDB存储引擎的场景中,可以通过执行innodb_file_per_table命令,获取存放数据的表所在表空间中的表空间文件和表结构文件。
S202,对表结构文件解析,获取表空间文件对应的表结构信息。
其中,表结构信息包括表空间文件中存储的数据的行记录格式、数据的列名、列顺序、列数据类型、列长度等。
可以理解的是,在MySQL数据库离线的情况下,无法通过数据库查询目标表的表结构信息,因此,在本实施例中,可以通过执行调用命令对MySQL数据库的表结构文件进行解析,获取表空间文件对应的表结构文件中存储的数据的信息,从而得到表空间文件对应的表结构信息。在一个可选的实施例中,若缺少表空间文件,可以通过手工录入表结构信息。
S203,根据表结构信息和表空间文件,获取MySQL数据库的行数据。
其中,行数据指的是MySQL数据库中存放的各事物的实际数据。
在本实施例中,可以根据解析的表结构信息获取对应的表空间文件中数据存储的格式,根据数据存储的格式可以获取存储数据的数据类型和数据对象,根据获取的存储数据的数据类型和数据对象对表空间文件进行解析,得到MySQL数据库的行数据。
上述数据处理方法中,通过从预设的存储空间获取基于MySQL数据库支持的存储引擎生成的的表空间文件和表结构文件,对表结构文件解析获取表空间文件对应的表结构信息,根据表结构信息和表空间文件,获取MySQL数据库的行数据,由于MySQL数据库支持的存储引擎生成的文件存储在磁盘中,相比于传统技术,可以在MySQL数据库离线的情况下提取数据库中的数据,使得数据提取不需要依赖于数据库的运行,减少了数据提取的限制,从而提高了数据提取的效率;另外,通过解析的表结构信息,能够快速的得到数据存储的格式,从而根据数据存储的格式对表空间文件进行解析,能够得到准确的MySQL数据库的行数据,进而提高了提取的数据的准确度。
在上述获取MySQL数据库的行数据的场景中,可以根据表结构信息和表空间文件获取行数据。在一个实施例中,如图3所示,上述S203,包括:
S301,基于表空间文件的页头信息,获取表空间文件中的数据页。
其中,页头信息中记录的是页的状态信息,可以包括页面类型,页的格式、页中行记录的数量,页的索引,页面空间的使用情况等,页的状态信息包括公共页头信息和事务信息,其中,公共页头信息包括页面类型、磁盘中数据记录的起始位置、空闲列表的起始位置、页的目录信息、页面校验码等信息,事务信息包括活动事务信息和历史事务信息等信息;数据页指的是MySQL数据库的表空间文件中用于存储实际数据的页面。
需要说明的是,在数据库中,页是数据管理的最小单元,页的结构包括文件头、页数据和文件尾,不同页的类型不同,表空间中的页可以根据其存储内容可以分为不同类型,包括存储实际数据的页、存储管理数据的页、以及存储备份相关的数据的页,其中,存储实际数据的页包括数据页、索引页、行溢出页等,存储管理数据的页包括管理可用空间的页、管理分配单元分配的区的页等,存储备份相关的数据的页包括自最后一条backupdatabase语句之后更改的区的信息的页,不同类型的页面的文件头信息均不相同。
在本实施例中,可以根据表空间中页的页头信息中所包含的页面类型,确定用于存储实际数据的数据页,从而获取表空间文件中的数据页。
S302,根据表结构信息,获取数据页的行记录格式。
其中,行记录格式指的是数据库中存储数据的格式,数据页中可以将数据按照行记录进行存储的格式,每一行记录代表一个事物整体信息。
在本实施例中,可以根据不同类型的行记录格式,对数据页进行解析处理,将数据页解析为若干条行记录,得到数据页的行记录格式。
S303,根据表结构信息、行记录格式和数据页,获取行数据。
在本实施例中,可以根据行记录格式确定数据页中存储数据的格式,根据数据页中存储数据的格式获取数据页中各行数据的起始位置,再根据表结构信息中存储的各数据的列的长度,获取各行数据中各列数据的起始位置,从而根据各列数据的起始位置将各行数据拆分为各列数据,进而将各列数据解析为程序能够直接识别的数据类型和数据对象,得到行数据。
本实施例中,通过基于表空间文件的页头信息,能够快速的获取表空间文件中的数据页,然后根据表结构信息,能够准确的获取数据页的行记录格式,从而根据表结构信息、行记录格式和数据页,能够快速准确的获取行数据,进而提高了提取数据的效率和准确度。
在上述获取MySQL数据库的行数据的场景中,可以根据表结构信息、行记录格式和数据页获取行数据。在一个实施例中,如图4所示,上述S303,包括:
S401,根据行记录格式将数据页进行拆分,获取数据页对应的多条数据行,并将多条数据行存储至预设的消息队列中。
其中,消息队列指的是消息在传输过程中保存消息的容器,用于接收消息并以文件的方式进行存储,是分布式应用间交换信息的一种技术。
在本实施例中,可以根据表结构信息中的行记录格式对获取的数据页进行拆分解析,得到数据页中包含的多条数据行,从而可以将得到的多条数据行存储在预设的消息队列中。可选的,本实施例中的消息队列可以为普通队列,也可以为高级消息队列协议(Advanced Message Queuing Protocol,AMQP)的消息队列,也可以为支持使用开源的Kafka消息队列,本实施例在此不作限制。
在一个可选的实施例中,可以在消息队列中设置消息存储数量的高水位线和低水位线,进一步地,若消息队列中的消息数量超过预设的高水位线,则暂停数据页解析处理,若消息队列中的消息数量低于预设的低水位线时,则重新执行数据页解析处理。
需要说明的是,若数据类型位大长度类型,可能存在数据无法存储在一个数据页中的情况,该数据为行溢出,需要将行溢出数据存储在特定类型的页中,MySQL数据库中不同的行记录格式,行溢出数据的存储格式也不相同,示例性的,在Redundant行记录格式中,长度超过8098字节的VARHCAR型数据的列会出现“行溢出”现象,其中前768字节的前缀数据会存储在本数据页中,超出部分会根据偏移量存储至指向“BLOB”类型的数据页中,因此,对于行溢出数据进行数据页拆分处理时,还需要对本数据页偏移的数据页进行拆分处理。
S402,根据表结构信息中的数据列的长度信息,对存储在消息队列中的多条数据行进行切分处理,获取多个字节数组。
其中,数据列指的是数据行的组成单位,一个行可以包含一个或多个列,不同列的类型、长度、所存储的值均不相同。
在本实施例中,可以根据表结构信息中存储的不同数据页中的每个行记录对应的数据列的长度信息,将存储在消息队列中的多条数据行的字节进行切分处理,得到多个字节数组,各字节数据对应行记录的特定列。
可选的,在本实施例中,可以按照先入后出的顺序,对存储的多条行记录分别进行切分处理,或者,也可以对存储的行记录进行并发切分处理,其中,并发处理可以按照如下模型进行调度:
则此时对消息队列中的多条行记录进行并发拆分处理的可增加的并发数为:K=min(nCPU,nmem_max),其中,nmem_max为现阶段可分配的内存单位数。
S403,根据行记录格式和表结构信息,对多个字节数组进行并发解析,得到行数据。
在本实施例中,可以根据表结构信息中存储的数据类型,将各字节数组转码成对应类型的数据,例如,整形数据、浮点型数据、字符串数据等,进一步的,可以根据行记录格式中对应的数据对象将转码后数据转换成对应的数据,例如,名称为字符串数据,编号为整型数据,价格为浮点型数据。
本实施例中,能够根据行记录格式对数据页进行拆分,获取数据页对应的多条数据行,并且能够根据表结构信息中存储的各行记录的列的长度将解析得到的多条数据行进行切分,获取多个字节数组,从而对各字节数组进行进一步的并发解析,由于划分的各字节数组相比原有的整条数据行减少了字节量,从而减少了解析处理的计算量,进而提高了提取数据的效率;另外,由于将获取的数据行存储至消息队列中,能够对存储的数据行进行并发解析处理,进一步提高了提取数据的效率。
在上述根据表空间文件的页头信息获取表空间文件中的数据页的场景中,在一个实施例中,如图5所示,上述S301,包括:
S501,从页头信息中,获取页头信息中的文件头信息。
其中,文件头信息中记录的是页的类型信息和用于唯一标识的页的编号,以及指向该页的上一个页和下一个页的指针、表空间中该页的偏移值。
可选的,在本实施例中,可以通过执行相应的页头信息获取命令获取数据库中表空间文件的页头信息,进而根据获取的页头信息获取文件头信息,或者,页可以通过对表空间文件中的所有页进行扫描,从而根据扫描的页头信息获取文件头信息。
S502,基于文件头信息,从表空间文件中,获取数据页。
在本实施例中,可以根据获取的文件头信息,获取页的页面类型,从而根据获取的页面类型在表空间文件中查找并获取页面数据类型为数据页(Data Page)的页。
本实施例中,通过从页头信息中,获取页头信息中的文件头信息,从而基于获取的文件头信息,从表空间文件中,获取数据页,能够快速准确的获取存储实际数据的数据页,进而能够提高获取行数据的效率和准确度。
在上述获取表结构信息的场景中,可以通过解析表结构文件获取表结构信息,在一个实施例中,上述S202,包括:调用预设的命令,对表结构文件进行解析,获取表空间文件对应的表结构信息。
其中,预设的命令为用于获取表结构信息的命令。在本实施例中,可以通过获取文件后缀名为“.frm”的表结构文件,通过执行mysqlfrm命令,获取表空间中的表结构文件对应的表结构信息。
本实施例中,通过调用预设的命令,对表结构文件进行解析,能够获取表空间文件对应的表结构信息,相比于传统技术,能够通过执行预设的命令直接快速的获取表结构信息,从而提高根据表结构信息获取行数据的效率。
在上述获取MySQL数据库的行数据的场景中,可以对获取的行数据进行存储,在一个实施例中,上述方法还包括:基于目标应用场景,采用目标应用场景对应的存储策略,将行数据存储至目标对象中。
其中,目标应用场景为具体应用MySQL数据库的行数据的场景,可选的,目标应用场景可以为数据共享场景,也可以为数据恢复场景,也可以为数据分析场景等;存储策略为目标应用场景对应的存储数据的方法,可选的,存储策略可以为全量表存储、增量表存储、快照表存储等;目标对象指的是目标应用场景中用于存储和应用数据的对象。
可以理解的是,在存储数据之前,可以根据预设的数据保留或过滤规则,对获取的行数据进行数据筛选,示例性的,可以通过执行“where语句加数据保留或过滤规则”的命令,实现数据筛选功能。
在本实施例中,可以将筛选后的数据根据目标应用场景对应的存储策略和应用需求存储为不同格式的文件。示例性的,针对数据共享场景,可以通过调用kafak client接口将数据发送到kafka分布式消息队列,实现消息的共享。针对数据恢复场景,可以导出batchinsert sql,并存储为文本文件,使用该数据时可以通过mysql命令导入该数据;或者,也可以导出成load文件,即按照行记录格式,将不同列按照分隔符进行分隔,通过mysql load命令导入该数据;又或者,还可以将数据导出成csv或xls文件,用户可以按应用场景的需要对导出的csv或xls文件进行再次处理。针对数据分析场景,可以根据用户的需求将数据导出为不同格式的文件,例如基于python的数据分析,可以将数据导出为类似于csv或load文件。
本实施例中,基于目标应用场景,采用目标应用场景对应的存储策略,将行数据存储至目标对象中,能够根据不同的应用场景灵活的选择数据的存储方式,满足不同的数据管理需求,进一步的提升数据管理的能力和效率。
为了便于本领域技术人员的理解,下边对本申请提供的数据处理方法进行详细介绍,该方法可以包括:
S1,在MySQL数据库离线的状态下,运行预设的命令,从磁盘中获取MySQL数据库中利用Innodb引擎生成的表空间文件和表结构文件。
S2,通过执行mysqlfrm命令对表结构文件进行解析,获取表结构信息。
S3,根据表空间文件的页头信息获取表空间文件中的文件头信息。
S4,根据获取的文件头信息从表空间文件中识别并获取数据页。
S5,根据表结构信息中记录的行记录格式对数据页进行拆分,获取多条行数据。
S6,将获取的多条数据行存储在预设的消息队列中。
S7,根据表结构信息中存储的各数据行的列的长度,将消息队列中的各条数据行切分为多个字节数组。
S8,根据行记录格式和表结构信息对切分的字节数组进行并发解析处理,得到行数据。
S9,根据目标应用场景,和目标应用场景对应的存储策略,将得到的行数据存储至目标对象中。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据处理方法的数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据处理装置实施例中的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。
在一个实施例中,如图6所示,提供了一种数据处理装置,包括:第一获取模块11、第二获取12模块和第三获取13模块,其中:
第一获取模块11,用于从预设的存储空间获取MySQL数据库的表空间文件和表结构文件;表空间文件和表结构文件为基于MySQL数据库支持的存储引擎生成的;
第二获取模块12,用于对表结构文件解析,获取表空间文件对应的表结构信息;
第三获取模块13,用于根据表结构信息和表空间文件,获取MySQL数据库的行数据。
可选的,存储引擎包括InnoDB存储引擎、MyISAM存储引擎和MERGE存储引擎中的任意一种。
本实施例提供的数据处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,如图7所示,上述第三获取模块13包括:第一获取单元131,第二获取单元132;第三获取单元133,其中:
第一获取单元131,用于基于表空间文件的页头信息,获取表空间文件中的数据页;
第二获取单元132,用于根据表结构信息,获取数据页的行记录格式;
第三获取单元133,用于根据表结构信息、行记录格式和数据页,获取行数据。
本实施例提供的数据处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,请继续参照图7,上述第三获取单元133,具体用于:
根据行记录格式将数据页进行拆分,获取数据页对应的多条数据行,并将多条数据行存储至预设的消息队列中;根据表结构信息中的数据列的长度信息,对存储在消息队列中的多条数据行进行切分处理,获取多个字节数组;根据行记录格式和表结构信息,对多个字节数组进行并发解析,得到行数据。
本实施例提供的数据处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,请继续参照图7,上述第一获取单元131,具体用于:
从页头信息中,获取页头信息中的文件头信息;基于文件头信息,从表空间文件中,获取数据页。
本实施例提供的数据处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,请继续参照图7,上述第二获取模块12包括:
第四获取单元121,用于调用预设的命令,对表结构文件进行解析,获取表空间文件对应的表结构信息。
本实施例提供的数据处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,请继续参照图7,上述装置还包括:
存储模块14,用于基于目标应用场景,采用目标应用场景对应的存储策略,将行数据存储至目标对象中。
本实施例提供的数据处理装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
从预设的存储空间获取MySQL数据库的表空间文件和表结构文件;表空间文件和表结构文件为基于MySQL数据库支持的存储引擎生成的;
对表结构文件解析,获取表空间文件对应的表结构信息;
根据表结构信息和表空间文件,获取MySQL数据库的行数据。
可选的,存储引擎包括InnoDB存储引擎、MyISAM存储引擎和MERGE存储引擎中的任意一种。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
基于表空间文件的页头信息,获取表空间文件中的数据页;
根据表结构信息,获取数据页的行记录格式;
根据表结构信息、行记录格式和数据页,获取行数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据行记录格式将数据页进行拆分,获取数据页对应的多条数据行,并将多条数据行存储至预设的消息队列中;
根据表结构信息中的数据列的长度信息,对存储在消息队列中的多条数据行进行切分处理,获取多个字节数组;
根据行记录格式和表结构信息,对多个字节数组进行并发解析,得到行数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:从页头信息中,获取页头信息中的文件头信息;
基于文件头信息,从表空间文件中,获取数据页。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:调用预设的命令,对表结构文件进行解析,获取表空间文件对应的表结构信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:基于目标应用场景,采用目标应用场景对应的存储策略,将行数据存储至目标对象中。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
从预设的存储空间获取MySQL数据库的表空间文件和表结构文件;表空间文件和表结构文件为基于MySQL数据库支持的存储引擎生成的;
对表结构文件解析,获取表空间文件对应的表结构信息;
根据表结构信息和表空间文件,获取MySQL数据库的行数据。
可选的,存储引擎包括InnoDB存储引擎、MyISAM存储引擎和MERGE存储引擎中的任意一种。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
基于表空间文件的页头信息,获取表空间文件中的数据页;
根据表结构信息,获取数据页的行记录格式;
根据表结构信息、行记录格式和数据页,获取行数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据行记录格式将数据页进行拆分,获取数据页对应的多条数据行,并将多条数据行存储至预设的消息队列中;
根据表结构信息中的数据列的长度信息,对存储在消息队列中的多条数据行进行切分处理,获取多个字节数组;
根据行记录格式和表结构信息,对多个字节数组进行并发解析,得到行数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:从页头信息中,获取页头信息中的文件头信息;
基于文件头信息,从表空间文件中,获取数据页。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:调用预设的命令,对表结构文件进行解析,获取表空间文件对应的表结构信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:基于目标应用场景,采用目标应用场景对应的存储策略,将行数据存储至目标对象中。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
从预设的存储空间获取MySQL数据库的表空间文件和表结构文件;表空间文件和表结构文件为基于MySQL数据库支持的存储引擎生成的;
对表结构文件解析,获取表空间文件对应的表结构信息;
根据表结构信息和表空间文件,获取MySQL数据库的行数据。
可选的,存储引擎包括InnoDB存储引擎、MyISAM存储引擎和MERGE存储引擎中的任意一种。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
基于表空间文件的页头信息,获取表空间文件中的数据页;
根据表结构信息,获取数据页的行记录格式;
根据表结构信息、行记录格式和数据页,获取行数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据行记录格式将数据页进行拆分,获取数据页对应的多条数据行,并将多条数据行存储至预设的消息队列中;
根据表结构信息中的数据列的长度信息,对存储在消息队列中的多条数据行进行切分处理,获取多个字节数组;
根据行记录格式和表结构信息,对多个字节数组进行并发解析,得到行数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:从页头信息中,获取页头信息中的文件头信息;
基于文件头信息,从表空间文件中,获取数据页。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:调用预设的命令,对表结构文件进行解析,获取表空间文件对应的表结构信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:基于目标应用场景,采用目标应用场景对应的存储策略,将行数据存储至目标对象中。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(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 (11)
1.一种数据处理方法,其特征在于,所述方法包括:
从预设的存储空间获取MySQL数据库的表空间文件和表结构文件;所述表空间文件和所述表结构文件为基于所述MySQL数据库支持的存储引擎生成的;
对所述表结构文件解析,获取所述表空间文件对应的表结构信息;
根据所述表结构信息和所述表空间文件,获取所述MySQL数据库的行数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述表结构信息和所述表空间文件,获取所述MySQL数据库的行数据,包括:
基于所述表空间文件的页头信息,获取所述表空间文件中的数据页;
根据所述表结构信息,获取所述数据页的行记录格式;
根据所述表结构信息、所述行记录格式和所述数据页,获取所述行数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述表结构信息、所述行记录格式和所述数据页,获取所述行数据,包括:
根据所述行记录格式将所述数据页进行拆分,获取所述数据页对应的多条数据行,并将所述多条数据行存储至预设的消息队列中;
根据所述表结构信息中的数据列的长度信息,对存储在所述消息队列中的多条数据行进行切分处理,获取多个字节数组;
根据所述行记录格式和所述表结构信息,对所述多个字节数组进行并发解析,得到所述行数据。
4.根据权利要求2或3所述的方法,其特征在于,所述基于所述表空间文件的页头信息,获取所述表空间文件中的数据页,包括:
从所述页头信息中,获取所述页头信息中的文件头信息;
基于所述文件头信息,从所述表空间文件中,获取所述数据页。
5.根据权利要求1所述的方法,其特征在于,所述对所述表结构文件解析,获取所述表空间文件对应的表结构信息,包括:
调用预设的命令,对所述表结构文件进行解析,获取所述表空间文件对应的表结构信息。
6.根据权利要求1-3任意一项所述的方法,其特征在于,所述存储引擎包括InnoDB存储引擎、MyISAM存储引擎和MERGE存储引擎中的任意一种。
7.根据权利要求1至3任意一项所述的方法,其特征在于,所述方法还包括:
基于目标应用场景,采用所述目标应用场景对应的存储策略,将所述行数据存储至目标对象中。
8.一种数据处理装置,其特征在于,所述装置包括:
第一获取模块,用于从预设的存储空间获取MySQL数据库的表空间文件和表结构文件;所述表空间文件和所述表结构文件为基于所述MySQL数据库支持的存储引擎生成的;
第二获取模块,用于对所述表结构文件解析,获取所述表空间文件对应的表结构信息;
第三获取模块,用于根据所述表结构信息和所述表空间文件,获取所述MySQL数据库的行数据。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
11.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211605029.3A CN115982156A (zh) | 2022-12-14 | 2022-12-14 | 数据处理方法、装置、计算机设备、存储介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211605029.3A CN115982156A (zh) | 2022-12-14 | 2022-12-14 | 数据处理方法、装置、计算机设备、存储介质和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115982156A true CN115982156A (zh) | 2023-04-18 |
Family
ID=85969206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211605029.3A Pending CN115982156A (zh) | 2022-12-14 | 2022-12-14 | 数据处理方法、装置、计算机设备、存储介质和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115982156A (zh) |
-
2022
- 2022-12-14 CN CN202211605029.3A patent/CN115982156A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10372723B2 (en) | Efficient query processing using histograms in a columnar database | |
US8972337B1 (en) | Efficient query processing in columnar databases using bloom filters | |
US11249980B2 (en) | Updating of in-memory synopsis metadata for inserts in database table | |
CA2209549C (en) | Method and apparatus for loading data into a database in a multiprocessor environment | |
US9672241B2 (en) | Representing an outlier value in a non-nullable column as null in metadata | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
CN107391544B (zh) | 列式存储数据的处理方法、装置、设备及计算机储存介质 | |
WO2017161540A1 (zh) | 数据查询的方法、数据对象的存储方法和数据系统 | |
US20170322997A1 (en) | Method, Apparatus and Data Structure for Copying Values of a Table of a Database | |
US20140222777A1 (en) | Relating to use of columnar databases | |
CN106909623B (zh) | 一种支持高效海量数据分析和检索的数据装置及数据存储方法 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN115982156A (zh) | 数据处理方法、装置、计算机设备、存储介质和程序产品 | |
US20210209087A1 (en) | Reorganization of Databases by Sectioning | |
EP3550451A1 (en) | Data storage and maintenance method and device, and computer storage medium | |
CN114691653A (zh) | 账套迁移方法、装置、计算机设备和存储介质 | |
CN114265828A (zh) | 行迁移消除方法、装置、计算机设备和存储介质 | |
CN114416655A (zh) | Hive文件处理方法及装置、计算机设备与存储介质 | |
US8296336B2 (en) | Techniques for efficient dataloads into partitioned tables using swap tables | |
CN116055589B (zh) | 数据管理方法、装置及计算机设备 | |
CN112364007B (zh) | 基于数据库的海量数据交换方法、装置、设备和存储介质 | |
CN117312306A (zh) | 金融业务数据表转换方法、装置、设备、介质和程序产品 | |
CN115794960A (zh) | 关系型数据库的管理方法及装置 | |
JP4850580B2 (ja) | データ処理システム | |
CN115941760A (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 |