CN113886395A - 基于openGauss平台的高速数据导入导出方法 - Google Patents
基于openGauss平台的高速数据导入导出方法 Download PDFInfo
- Publication number
- CN113886395A CN113886395A CN202111214816.0A CN202111214816A CN113886395A CN 113886395 A CN113886395 A CN 113886395A CN 202111214816 A CN202111214816 A CN 202111214816A CN 113886395 A CN113886395 A CN 113886395A
- Authority
- CN
- China
- Prior art keywords
- file
- metadata
- data
- table data
- files
- 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
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/2365—Ensuring data consistency and integrity
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数据库管理***和计算机软件技术领域,尤其涉及一种基于openGauss平台的高速数据导入导出方法。与传统的逻辑导入导出方法不同,本发明方法通过拷贝表数据文件的方式进行导出,导入时把表数据文件拷贝到新数据库***的表空间中,再根据其MVCC特性,修改数据文件中的元组信息,由于不需要进行SQL命令的解析以及数据文件中元组的扫描过滤,从而显著提高了数据导入导出的性能,尤其使大表对象数据导出及导入的耗时大大减少,提升了数据库之间对象迁移的效率,与此同时,数据的维护成本也随之降低,从而很好的克服了openGauss平台下大数据量的表数据导入导出效率低下、维护成本高、处理效率低的缺陷。
Description
技术领域
本发明属于数据库管理***和计算机软件技术领域,尤其涉及一种基于openGauss平台的高速数据导入导出方法。
背景技术
信息化时代时刻都在产生着海量的数据,随着时间的推进,数据库中存储的数据量会变得越来越大,其维护成本越来越高。当数据库管理员在进行数据库日常维护工作时,以及进行数据备份或迁移的时候,数据的导入导出则成为了其所要面对的首要任务。
数据导入导出作为数据库必不可少的重要功能之一,目前大部分数据库都是通过逻辑导入导出的原理实现的。例如,openGauss平台(openGauss是一款开源关系型数据库管理***,其内核源自PostgreSQL)即通过SQL命令的方式将元数据及表数据导出成SQL文件,然后在新的数据库***中,通过SQL命令重建表结构并执行SQL***表数据。
然而,鉴于目前许多业务***中的主表数据量都非常庞大,对于包含庞大数据量的表,通过SQL命令来实现数据导入导出的效率很低,性能上很难满足客户对快速数据交换的要求。因此,出于降低数据维护成本、提高数据处理效率的需要,亟需一种新的能够有效提高数据交换速度的数据导入导出方法。
发明内容
为了克服openGauss平台下大数据量的表数据导入导出效率低下、维护成本高、处理效率低的缺陷,本发明提供了一套解决方案:我们提出了一种基于openGauss数据库的高速数据导入导出方法,来代替传统的逻辑导入导出方法,本发明方法通过拷贝表数据文件的方式进行导出,导入时把表数据文件拷贝到新数据库***的表空间中,再根据其MVCC(Mutil-Version Concurrency Control)特性,修改数据文件中的元组信息,通过这种方式可以有效地提高数据导入导出性能,与此同时,***在进行数据处理时效率得到了显著提高,数据的维护成本也随之降低。
本发明基于openGauss平台的高速数据导入导出方法中:
所述高速数据导出方法包括:首先通过SQL命令查询所需要导出对象的元数据,并将这些元数据保存到元数据文件中;然后根据表对象的oid,在源库的数据目录下,找到与其对应的表数据文件、可见性映射文件和空闲空间映射文件,最后以文件的方式将上述文件拷贝到导出的目录中;
所述高速数据导入方法包括:首先进行元数据导入,在新库中创建表对象;之后再将表数据文件、可见性映射文件和空闲空间映射文件拷贝到对应数据目录下,替换导入元数据时生成的表数据文件。
进一步地,本发明方法在进行高速数据导入的过程中,当表数据文件导入后,对数据文件中所有记录进行可见性更新,以确保导入的数据可以正常使用;最后对导入的表重建索引,生成索引数据文件。
更具体地,本发明高速数据导入导出方法包括以下步骤:
高速数据导出方法包括:
步骤一:输入导出命令与控制参数,解析该命令与参数;通过连接参数连接数据库,并将其他参数设置为本次导出的属性;
步骤二:判断导出属性选择相应的导出策略,导出策略分两种,一种是仅导出元数据,即对象定义;另一种是将元数据与表数据全部导出,该导出策略通过传入的参数项来判定;
步骤三:若选择第一种策略,则先通过SQL命令从***表中查询所需要导出对象的元数据,并将这些元数据转换为DDL语言,然后按照指定格式进行存储,相同的对象类型为一类,对应一份元数据文件;
步骤四:若选择第二种策略,则先根据策略一的方案,进行元数据的导出,并保存成元数据文件;之后再导出关联的表数据文件,在源库目录下,直接将所涉及的表数据文件拷贝至导出目录下,一个表对象对应至少一个表数据文件,如果有多个表数据文件,则需要全部拷贝;
步骤五:导出元数据和表数据之后,根据表的oid标识,生成表对象与表数据文件的映射关系文件,即一个oid标识对应多个以该oid为前缀的表数据文件的关系,并在导入的过程中进行使用;
步骤六:对于索引对象,只导出其元数据文件,并将之转换成DDL语言,不导出索引数据文件;
步骤七:对导出的元数据文件、表数据文件以及表对象与表数据文件的映射关系文件进行加密;
步骤八:对加密之后的表数据文件进行压缩处理,减少大表数据文件对磁盘空间的占用;
步骤九:对上述加密压缩之后的文件进行统一的打包处理,以便在其他设备上进行导入操作;
高速数据导入方法包括:
步骤A:输入导入命令与控制参数,解析该命令与参数;通过连接参数连接数据库;
步骤B:先对需要导入的文件进行解压处理,获得加密的元数据DDL文件、表数据文件以及表对象与表数据文件的映射关系文件;然后对上述三类文件进行解密,获得解密后的文件;
步骤C:通过SQL命令先导入元数据文件,在此过程中,导入除索引以外的元数据,并通过DDL定义来创建相关对象;
步骤D:检查当前导入的对象中是否有表,以及是否存在对应的表数据文件;若不存在表数据文件,则完成当前元数据的导入;若存在表数据文件,则根据导入参数判断,是否需要导入表数据文件;
步骤E:若不需要导入表数据文件,则完成当前元数据的导入;若需要导入表数据文件,则根据表对象与表数据文件的映射关系,将对应的所有表数据文件拷贝到导入目标库的数据目录下,替换在创建表对象时新生成的空数据文件;
步骤F:如果导入的对象与目标库中的现有对象名称冲突,根据命令参数来判断是否覆盖旧的对象,若不覆盖则跳过不进行导入,若覆盖,则先删除之前的对象,再使用DDL语句进行新对象的创建及文件覆盖;
步骤G:根据openGauss的MVCC特性,获取目标库当前最新事务id,并获取改表的共享锁,启用多线程对数据文件中所有元组进行可见性更新,修改元组信息中创建元组的事务id标识,以确保数据导入后,其元组对未来事务的可见性与源库一致,更新完所有数据文件的元组信息后,释放共享锁;
步骤H:导入索引元数据,重建相应表对象上的索引信息,自动生成新的索引数据文件;
步骤I:最后调用vacuum命令,对新导入的表进行惰性清理操作,将该表中的无效元组进行清除,并生成最新的可见性映射文件oid_vm,以及空闲空间映射文件oid_fsm,以提高导入的表在目标库中的元组扫描效率。
此外,本发明还涉及上述高速数据导入导出方法在数据库管理***中的应用。
综上,相比于传统的逻辑导入导出方法,本发明方法在进行数据文件操作时,不需要进行SQL命令的解析,以及数据文件中元组的扫描过滤,从而显著提高了数据导入导出的性能,尤其使大表对象数据导出及导入的耗时大大减少,提升了数据库之间对象迁移的效率,与此同时,数据的维护成本也随之降低。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面对本发明实施例中需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于openGauss平台的高速数据导出的流程示意图。
图2为本发明基于openGauss平台的高速数据导入的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例,本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
同时,应理解,本发明的保护范围并不局限于下述特定的具体实施方案;还应当理解,本发明实施例中使用的术语是为了描述特定的具体实施方案,而不是为了限制本发明的保护范围。
实施例1:一种基于openGauss平台的高速数据导入导出方法,具体包括以下步骤:
高速数据导出方法包括(参见图1):
步骤一:输入导出命令与控制参数,解析该命令与参数;通过连接参数连接数据库,并将其他参数设置为本次导出的属性;
步骤二:判断导出属性选择相应的导出策略,导出策略分两种,一种是仅导出元数据,即对象定义;另一种是将元数据与表数据全部导出,该导出策略通过传入的参数项来判定;
步骤三:若选择第一种策略,则先通过SQL命令从***表中查询所需要导出对象的元数据,并将这些元数据转换为DDL语言,然后按照指定格式进行存储,相同的对象类型为一类,对应一份元数据文件;
步骤四:若选择第二种策略,则先根据策略一的方案,进行元数据的导出,并保存成元数据文件;之后再导出关联的表数据文件,在源库目录下,直接将所涉及的表数据文件拷贝至导出目录下,一个表对象对应至少一个表数据文件,如果有多个表数据文件,则需要全部拷贝;
步骤五:导出元数据和表数据之后,根据表的oid标识,生成表对象与表数据文件的映射关系文件,即一个oid标识对应多个以该oid为前缀的表数据文件的关系,并在导入的过程中进行使用;
步骤六:对于索引对象,只导出其元数据文件,并将之转换成DDL语言,不导出索引数据文件;
步骤七:对导出的元数据文件、表数据文件以及表对象与表数据文件的映射关系文件进行加密;
步骤八:对加密之后的表数据文件进行压缩处理,减少大表数据文件对磁盘空间的占用;
步骤九:对上述加密压缩之后的文件进行统一的打包处理,以便在其他设备上进行导入操作;
高速数据导入方法包括(参见图2):
步骤A:输入导入命令与控制参数,解析该命令与参数;通过连接参数连接数据库;
步骤B:先对需要导入的文件进行解压处理,获得加密的元数据DDL文件、表数据文件以及表对象与表数据文件的映射关系文件;然后对上述三类文件进行解密,获得解密后的文件;
步骤C:通过SQL命令先导入元数据文件,在此过程中,导入除索引以外的元数据,并通过DDL定义来创建相关对象;
步骤D:检查当前导入的对象中是否有表,以及是否存在对应的表数据文件;若不存在表数据文件,则完成当前元数据的导入;若存在表数据文件,则根据导入参数判断,是否需要导入表数据文件;
步骤E:若不需要导入表数据文件,则完成当前元数据的导入;若需要导入表数据文件,则根据表对象与表数据文件的映射关系,将对应的所有表数据文件拷贝到导入目标库的数据目录下,替换在创建表对象时新生成的空数据文件;
步骤F:如果导入的对象与目标库中的现有对象名称冲突,根据命令参数来判断是否覆盖旧的对象,若不覆盖则跳过不进行导入,若覆盖,则先删除之前的对象,再使用DDL语句进行新对象的创建及文件覆盖;
步骤G:根据openGauss的MVCC特性,获取目标库当前最新事务id,并获取改表的共享锁,启用多线程对数据文件中所有元组进行可见性更新,修改元组信息中创建元组的事务id标识,以确保数据导入后,其元组对未来事务的可见性与源库一致,更新完所有数据文件的元组信息后,释放共享锁;
步骤H:导入索引元数据,重建相应表对象上的索引信息,自动生成新的索引数据文件;
步骤I:最后调用vacuum命令,对新导入的表进行惰性清理操作,将该表中的无效元组进行清除,并生成最新的可见性映射文件oid_vm,以及空闲空间映射文件oid_fsm,以提高导入的表在目标库中的元组扫描效率。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、替换、改进等,均应包含在本发明的权利要求保护范围之内。
Claims (4)
1.一种基于openGauss平台的高速数据导入导出方法,其特征在于:
所述高速数据导出方法包括:首先通过SQL命令查询所需要导出对象的元数据,并将这些元数据保存到元数据文件中;然后根据表对象的oid,在源库的数据目录下,找到与其对应的表数据文件、可见性映射文件和空闲空间映射文件,最后以文件的方式将上述文件拷贝到导出的目录中;
所述高速数据导入方法包括:首先进行元数据导入,在新库中创建表对象;之后再将表数据文件、可见性映射文件和空闲空间映射文件拷贝到对应数据目录下,替换导入元数据时生成的表数据文件。
2.根据权利要求1所述的高速数据导入导出方法,其特征在于,在进行高速数据导入的过程中,当表数据文件导入后,对数据文件中所有记录进行可见性更新,以确保导入的数据可以正常使用;最后对导入的表重建索引,生成索引数据文件。
3.根据权利要求1所述的高速数据导入导出方法,其特征在于,所述方法具体包括以下步骤:
高速数据导出方法包括:
步骤一:输入导出命令与控制参数,解析该命令与参数;通过连接参数连接数据库,并将其他参数设置为本次导出的属性;
步骤二:判断导出属性选择相应的导出策略,导出策略分两种,一种是仅导出元数据,即对象定义;另一种是将元数据与表数据全部导出,该导出策略通过传入的参数项来判定;
步骤三:若选择第一种策略,则先通过SQL命令从***表中查询所需要导出对象的元数据,并将这些元数据转换为DDL语言,然后按照指定格式进行存储,相同的对象类型为一类,对应一份元数据文件;
步骤四:若选择第二种策略,则先根据策略一的方案,进行元数据的导出,并保存成元数据文件;之后再导出关联的表数据文件,在源库目录下,直接将所涉及的表数据文件拷贝至导出目录下,一个表对象对应至少一个表数据文件,如果有多个表数据文件,则需要全部拷贝;
步骤五:导出元数据和表数据之后,根据表的oid标识,生成表对象与表数据文件的映射关系文件,即一个oid标识对应多个以该oid为前缀的表数据文件的关系,并在导入的过程中进行使用;
步骤六:对于索引对象,只导出其元数据文件,并将之转换成DDL语言,不导出索引数据文件;
步骤七:对导出的元数据文件、表数据文件以及表对象与表数据文件的映射关系文件进行加密;
步骤八:对加密之后的表数据文件进行压缩处理,减少大表数据文件对磁盘空间的占用;
步骤九:对上述加密压缩之后的文件进行统一的打包处理,以便在其他设备上进行导入操作;
高速数据导入方法包括:
步骤A:输入导入命令与控制参数,解析该命令与参数;通过连接参数连接数据库;
步骤B:先对需要导入的文件进行解压处理,获得加密的元数据DDL文件、表数据文件以及表对象与表数据文件的映射关系文件;然后对上述三类文件进行解密,获得解密后的文件;
步骤C:通过SQL命令先导入元数据文件,在此过程中,导入除索引以外的元数据,并通过DDL定义来创建相关对象;
步骤D:检查当前导入的对象中是否有表,以及是否存在对应的表数据文件;若不存在表数据文件,则完成当前元数据的导入;若存在表数据文件,则根据导入参数判断,是否需要导入表数据文件;
步骤E:若不需要导入表数据文件,则完成当前元数据的导入;若需要导入表数据文件,则根据表对象与表数据文件的映射关系,将对应的所有表数据文件拷贝到导入目标库的数据目录下,替换在创建表对象时新生成的空数据文件;
步骤F:如果导入的对象与目标库中的现有对象名称冲突,根据命令参数来判断是否覆盖旧的对象,若不覆盖则跳过不进行导入,若覆盖,则先删除之前的对象,再使用DDL语句进行新对象的创建及文件覆盖;
步骤G:根据openGauss的MVCC特性,获取目标库当前最新事务id,并获取改表的共享锁,启用多线程对数据文件中所有元组进行可见性更新,修改元组信息中创建元组的事务id标识,以确保数据导入后,其元组对未来事务的可见性与源库一致,更新完所有数据文件的元组信息后,释放共享锁;
步骤H:导入索引元数据,重建相应表对象上的索引信息,自动生成新的索引数据文件;
步骤I:最后调用vacuum命令,对新导入的表进行惰性清理操作,将该表中的无效元组进行清除,并生成最新的可见性映射文件oid_vm,以及空闲空间映射文件oid_fsm,以提高导入的表在目标库中的元组扫描效率。
4.权利要求1-3任一项所述的高速数据导入导出方法在数据库管理***中的应用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111214816.0A CN113886395A (zh) | 2021-10-19 | 2021-10-19 | 基于openGauss平台的高速数据导入导出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111214816.0A CN113886395A (zh) | 2021-10-19 | 2021-10-19 | 基于openGauss平台的高速数据导入导出方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113886395A true CN113886395A (zh) | 2022-01-04 |
Family
ID=79003487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111214816.0A Pending CN113886395A (zh) | 2021-10-19 | 2021-10-19 | 基于openGauss平台的高速数据导入导出方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886395A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115687305A (zh) * | 2022-11-08 | 2023-02-03 | 力高(山东)新能源技术股份有限公司 | 一种储能电站agc模型导入和检查方法 |
CN116048780A (zh) * | 2022-12-07 | 2023-05-02 | 广州海量数据库技术有限公司 | 一种基于openGauss数据库的多线程批量文件加载方法 |
CN116361239A (zh) * | 2023-05-24 | 2023-06-30 | 成都交大光芒科技股份有限公司 | 基于对象特征的对象识别同步方法、装置及电子设备 |
-
2021
- 2021-10-19 CN CN202111214816.0A patent/CN113886395A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115687305A (zh) * | 2022-11-08 | 2023-02-03 | 力高(山东)新能源技术股份有限公司 | 一种储能电站agc模型导入和检查方法 |
CN116048780A (zh) * | 2022-12-07 | 2023-05-02 | 广州海量数据库技术有限公司 | 一种基于openGauss数据库的多线程批量文件加载方法 |
CN116048780B (zh) * | 2022-12-07 | 2023-08-08 | 广州海量数据库技术有限公司 | 一种基于openGauss数据库的多线程批量文件加载方法 |
CN116361239A (zh) * | 2023-05-24 | 2023-06-30 | 成都交大光芒科技股份有限公司 | 基于对象特征的对象识别同步方法、装置及电子设备 |
CN116361239B (zh) * | 2023-05-24 | 2023-07-28 | 成都交大光芒科技股份有限公司 | 基于对象特征的对象识别同步方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113886395A (zh) | 基于openGauss平台的高速数据导入导出方法 | |
KR102177190B1 (ko) | 유연한 스키마를 사용한 데이터 관리 | |
US9767131B2 (en) | Hierarchical tablespace space management | |
US9542424B2 (en) | Lifecycle-based horizontal partitioning | |
Meliou et al. | Tiresias: the database oracle for how-to queries | |
US9740718B2 (en) | Aggregating dimensional data using dense containers | |
US9836519B2 (en) | Densely grouping dimensional data | |
US9286393B2 (en) | Performing a function on rows of data determined from transitive relationships between columns | |
US20070156736A1 (en) | Method and apparatus for automatically detecting a latent referential integrity relationship between different tables of a database | |
US20070250517A1 (en) | Method and Apparatus for Autonomically Maintaining Latent Auxiliary Database Structures for Use in Executing Database Queries | |
US20070156687A1 (en) | Efficient implementation of multiple work areas in a file system like repository that supports file versioning | |
CN107301214B (zh) | 在hive中数据迁移方法、装置及终端设备 | |
CN110309233A (zh) | 数据存储的方法、装置、服务器和存储介质 | |
EP2981908A1 (en) | Query integration across databases and file systems | |
US20190303486A1 (en) | Dynamic hash partitioning for large-scale database management systems | |
US12026160B2 (en) | Query plan cache in database systems | |
US6618720B1 (en) | Common spool files for maintaining join indexes | |
CN111752945A (zh) | 一种基于容器和层次模型的时序数据库数据交互方法和*** | |
Macura | Integration of data from heterogeneous sources using ETL technology | |
US20180203900A1 (en) | Transforming a user-defined table function to a derived table in a database management system | |
CN117235028A (zh) | 一种基于日志文件的数据查询方法和装置 | |
US20130304707A1 (en) | Data Archiving Approach Leveraging Database Layer Functionality | |
CN111125045A (zh) | 一种轻量级etl处理平台 | |
CN114861229B (zh) | 一种Hive动态脱敏方法及*** | |
US20190303460A1 (en) | Transaction-based pseudo-script generation for scheduling and implementing database schema changes |
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 |