CN109241019A - 不同存储介质间的数据交换系统、方法、装置和存储介质 - Google Patents
不同存储介质间的数据交换系统、方法、装置和存储介质 Download PDFInfo
- Publication number
- CN109241019A CN109241019A CN201810870697.6A CN201810870697A CN109241019A CN 109241019 A CN109241019 A CN 109241019A CN 201810870697 A CN201810870697 A CN 201810870697A CN 109241019 A CN109241019 A CN 109241019A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- database
- file
- connection
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种不同存储介质间的数据交换系统、方法、装置和存储介质,所述系统包括:数据模块,用于不同介质间的数据导入、数据导出和数据连接;参数管理模块,用于对数据设置参数初始值和线程参数管理;工具模块,用于获取所述数据的营业日期、数据库密码加解密、文件格式校验和数据格式化;以及接口模块,用于提供所述数据连接的统一接口,使用dp‑dx脚本配置文件参数。本发明通过一种在不同存储介质之间进行大数据交换的方式,规范统一的接口、统一的配置文件描述等内容,可以大大降低开发和应用成本,极大提高应用的可扩展性。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种不同存储介质间的数据交换系统、方法、装置和存储介质。
背景技术
当前数据存储介质有很多,比如Oracle关系数据库和mysql关系数据库,Cassandra分布式数据库和HBase分布式数据库,本地文件系统,分布式文件系统hdfs等。在行内,不同存储介质有自身的使用场景。比如oracle,适用于联机交易服务开发;hbase和hdfs,适用于离线批数据处理任务开发。那么如何让数据在以上不同存储介质中迁移和转换,成为一个非常关键的环节。比如oracle数据库中的数据迁移到hbase中进行大数据分析,hdfs中批量任务计算得到的结果迁移到oracle供联机交易使用等场景非常普遍。
当前确实有不少迁移工具能够支持部分存储介质间数据迁移,比如sqoop(实现oracle、mysql与hdfs的数据交换)、expdp(oracle提供的工具,实现数据导出到本地磁盘)等。但是各工具比较独立,都只能满足部分存储介质之前的数目迁移需求,且使用方法迥异,学习成本较高。所以如果设计一套通用的数据迁移框架,规范统一的迁移接口,满足所有常用存储介质之间的数据迁移,具有非常重要的意义。
当前的数据交换工具,都是特定存储介质之间的数据交换。比如sqoop,实现关系数据库(oracle,mysql等)与分布式文件系统hdfs的数据交换;expdp,oracle自带的工具,能够将oracle数据导出到本地磁盘;bulkload,能够将hdfs上的bulk文件导入到hbase表中等等现有的这些数据迁移工具种类繁多,但是每个工具的功能都有限:(1)只能满足少数存储介质之间的数据交换;(2)使用方法不一样,部署方式不一样。有单机工具,有MapReduce工具,有api调用,使得学习和部署成本比较高。
发明内容
为解决上述技术问题,本发明提供了一种不同存储介质间的数据交换系统、方法、装置和存储介质,解决当前不同存储介质之间数据交换不便,学习和部署成本高的问题。
根据本发明实施例的第一方面,提供了一种不同存储介质间的数据交换系统,所述系统包括:
数据模块,用于不同介质间的数据连接、数据导入和数据导出;
参数管理模块,用于对数据设置参数初始值和线程参数管理;
工具模块,用于获取所述数据的营业日期、数据库密码加解密、文件格式校验和数据格式化;以及
接口模块,用于提供所述数据连接的统一接口,使用dp-dx脚本配置文件参数。
根据本发明实施例的第二方面,提供一种不同存储介质间的数据交换方法,所述方法包括:
参数管理模块对数据设置参数初始值和线程参数管理;
工具模块获取所述数据的营业日期、数据库密码加解密、文件格式校验和数据格式化;
接口模块提供数据连接的统一接口,使用dp-dx脚本配置文件参数;以及
数据模块对不同介质间的所述数据进行所述数据连接、数据导入和数据导出。
根据本发明实施例的第三方面,提供一种计算机可读存储介质,所述计算机存储介质包含有计算机程序,其中,所述计算机程序在被一个或多个计算机执行时使得所述一个或多个计算机执行如下操作:
所述操作包括如上中任一项所述的不同存储介质间的数据交换方法所包含的步骤。
根据本发明实施例的第四方面,提供一种不同存储介质间的数据交换装置,所述装置包括:
存储器,存储有计算机可读指令;
处理器,执行所述计算机可读指令以执行如上所述的不同存储介质间的数据交换方法所包含的步骤。
实施本发明实施例提供的一种不同存储介质间的数据交换系统、方法、装置和存储介质,具有以下优点:规范统一的接口、统一的配置文件描述等内容,可以大大降低开发和应用成本,极大提高应用的可扩展性。
附图说明
图1是本发明实施例的一种不同存储介质间的数据交换系统1的结构示意图;
图2是本发明实施例所述系统1中所述行为数据模块100的结构示意图;
图3是本发明实施例的一种不同存储介质间的数据交换方法的流程图;
图4是本发明实施例所述方法中步骤S4的流程图。
具体实施方式
为使本发明的实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
图1是本发明实施例的一种不同存储介质间的数据交换系统1的结构示意图,参见图1,所述系统1包括:
数据模块100,用于不同介质间的数据连接、数据导入和数据导出;
参数管理模块200,用于对数据设置参数初始值和线程参数管理;
工具模块300,用于获取所述数据的营业日期、数据库密码加解密、文件格式校验和数据格式化;以及
接口模块400,用于提供所述数据连接的统一接口,使用dp-dx脚本配置文件参数。工具提供的对外统一接口,使用dp-dx都以该脚本外加不同的配置文件作为参数来执行对应的功能。
在本发明的实施方式中,所述系统还包括:参数配置模块,用于执行所述数据库配置和导数参数配置。运行日志模块,用于保存所述工具模块执行过程中生成的日志信息。依赖jar包(Java Archive File,Java档案文件),所有工具需要的jar文件都在该目录下。
本发明通过一种在不同存储介质之间进行大数据交换的方式,规范统一的接口、统一的配置文件描述等内容,可以大大降低开发和应用成本,极大提高应用的可扩展性。
其中,分布式平台数据交互工具dp-dx是用来实现HDFS分布式平台数据与其他存储介质数据交互的工具。目的用来在DB和HDFS间同步数据,以及HDFS上的数据备份。目前功能包括关系数据库数据和HDFS的数据之间的导入导出,NAS文件系统和HDFS的数据交互。
核心接口说明:数据导入接口com.ccb.dp.dx.IImoprtDataToHDFS
支持多种数据源的数据导入到HDFS,目前仅实现了oracle数据导入。
Int importDataToHDFS(Map<String,String>params)
根据配置文件和脚本传入的参数将数据导入到本地或NAS文件目录,后续由该目录再上传至HDFS;
数据导出接口com.ccb.dp.dx.IExportDataFromHDFS;
Int exportDataToHDFS(Map<String,String>params);
根据配置文件和脚本传入的参数将数据由HDFS导出到对应的数据库表
多线程的数据导入接口com.ccb.dp.dx.DataExchangeRunner;
继承自runnable接口,为了实现分库分表数据的多线程导入。每个DataExchangeRunner对应一个runner,即对应一个线程。通过在线程池中添加对应的线程,再依次提交,实现多线程导入数据。
类ExportTable实现了该接口DataExchangeRunner的run方法。具体实现从数据库导数的工作。
配置总览如下表所述:
环境配置 | env.sh |
日志配置 | log4j.xml |
数据库连接配置 | db.conf |
功能参数配置 | dp-dx_*.conf |
通用配置 | common.conf |
运行脚本 | dataExchange.sh |
重要配置说明:env.sh;
在打包前根据生产环境配置完毕。配置所需的环境变量。
db.conf该脚本配置数据交互工具所使用的数据库信息,配置规则为:sysId|DBUrl|uid|pwd。示例如下:
注:uid:数据库用户名pwd:数据库密码密文(用encode.sh脚本生成)
DBUrl:JDBC数据库连接串sysid:给该条连接串取的名字,当需要用到该连接串时,传输该项作为参数。common.conf
注意:该配置文件根据生成环境在上线前配置完毕,DataHome中的${ComponentID},${OprgdayPrd}由组件实体编号和营业日期的具体值替换。
dp-dx_*.conf应用需要根据实际使用修改的参数文件。
图2是本发明实施例所述系统1中所述行为数据模块100的结构示意图,参见图2,所述数据模块100包括:
数据导入子模块110,用于通过sql(结构化查询语言,Structured QueryLanguage)查询方式将所述数据卸数到文件,再将所述文件上传至HDFS;同时,支持增量和全量以及自定义sql模式,支持分库分表,同一张表的数据在hdfs保存在该表命名的目录下;
数据导出子模块120,用于利用Sqoop java client(Java客户端)卸数,导出所述数据到数据库;以及
数据库连接子模块130,用于所述数据库连接池的创建和管理,并通过配置文件解析建立jdbc连接。
在本发明的实施方式中,所述数据导入和导出的应用规则如下:
命名规则:
dp-dx_+功能名称
功能名称目前包括:db2hdfs;hdfs2db
由hdfs导出数据到数据库:dp-dx_hdfs2db.conf
由数据库导入数据到hdfs:dp-dx_db2hdfs.conf
配置样例
dp-dx_db2hdfs.conf
dp-dx_hdfs2db.conf
配置规范db2hdfsImportEngine指定导入方式为dp-dx或sqoop;
TableName指定导入数据的数据库表名,可以为多张表。
注意:如果填多张表,必须要么是全部分库分表,要么都不是分库分表。MultiDB=TRUE/FLASE作用范围为所有表。
$TableName.Condition自定义从数据库导入hdfs数据的sql查询语句的where条件。$TableName为具体表名,作用范围为指定的TableName。
$TableName.FieldName自定义数据库导入到hdfs的字段名称,$TableName为具体表名,作用范围为指定的TableName,$TableName.ImportMode分为Add和All模式。Add为每日增量导入,ALL为每日全量导入。
$TableName为具体表名,作用范围为指定的TableName;
FieldSeparator指定字段间分隔符;
LineSeparator指定每条记录间分隔符;
ImportPath指定hdfs数据存放路径。
最终文件在hdfs上的路径为:
/${ComponentID}/${OprgdayPrd}/transfile/${ImportMode}All或Add/表名/***.dat
自定义where条件导出的数据放在All下;
MultiDB是否分库分表eg.TRUE/FALSE
注意:取值要大写;
BasketCount分库分表下的篮子数;
注意:MultiDB=TRUE时才必须;
ConcurrencyCount指定线程池线程数量;
注意:当配置同时导出多个表时才必须;
MapReduceNum使用sqoop方式时,并行执行的数量;
注意:ImportMode优先级高于$TableName.ImportMode;
ImportMode配置不为空时,对全表皆用此模式,忽略$TableName.ImportMode。$TableName.ImportMode取值不为空时,$TableName.Condition,$TableName.FieldName不做配置,否则校验失败。
hdfs2db
ExportEngine指定导出方式为dp-dx或sqoop;
TableName指定导出到数据库表名,可以为多张表;
注意:TableName的值只能填一个表,不支持同时导出到多个表;
FieldName自定义数据库导出到hdfs的字段名称,没有指定的导出字段,数据库要么有默认值,要么允许为NULL;
FieldSeparator指定字段间分隔符;
LineSeparator指定每条记录间分隔符;
ExportPath指定源数据在hdfs的存放路径;
MapReduceNum使用sqoop方式时,并行执行的数量。
图3是本发明实施例的一种不同存储介质间的数据交换方法的流程图,参见图3,所述方法包括:
步骤S1,参数管理模块对数据设置参数初始值和线程参数管理;
步骤S2,工具模块获取所述数据的营业日期、数据库密码加解密、文件格式校验和数据格式化;
步骤S3,接口模块提供数据连接的统一接口,使用dp-dx脚本配置文件参数;以及
步骤S4,数据模块对不同介质间的所述数据进行数据连接、数据导入和数据导出。
所述方法还包括:参数配置模块执行所述数据库配置和导数参数配置。运行日志模块保存所述工具模块执行过程中生成的日志信息。
图4是本发明实施例所述方法中步骤S4的流程图,参见图4,所述步骤S4包括:
步骤S41,数据导入子模块通过sql查询方式将所述数据卸数到文件,再将所述文件上传至HDFS;
步骤S42,数据导出子模块利用Sqoop java client卸数,导出所述数据到数据库;以及
步骤S43,数据库连接子模块对所述数据库连接池进行创建和管理,并通过配置文件解析建立jdbc连接。
需要说明的是,所述不同存储介质间的数据交换方法的操作包括如上所述的所包含的步骤与上述不同存储介质间的数据交换系统的操作方式相同,具体内容在此不再赘述。
另外,本发明还提供一种计算机可读存储介质,所述计算机存储介质包含有计算机程序,其特征在于,所述计算机程序在被一个或多个计算机执行时使得所述一个或多个计算机执行如下操作:所述操作包括如上所述的不同存储介质间的数据交换方法所包含的步骤,在此不再赘述。
另外,本发明还提供一种不同存储介质间的数据交换装置,所述装置包括:
存储器,存储有计算机可读指令;
处理器,执行所述计算机可读指令以执行如上所述的不同存储介质间的数据交换方法所包含的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所揭露的仅为本发明的优选实施例而已,当然不能以此来限定本发明的保护范围,因此依本发明权利要求的教导对上述实施例所作的等同变化,仍属于本发明权利要求所涵盖的范围内。
Claims (10)
1.一种不同存储介质间的数据交换系统,其特征在于,所述系统包括:
数据模块,用于不同介质间的数据连接、数据导入和数据导出;
参数管理模块,用于对数据设置参数初始值和线程参数管理;
工具模块,用于获取所述数据的营业日期、数据库密码加解密、文件格式校验和数据格式化;以及
接口模块,用于提供所述数据连接的统一接口,使用dp-dx脚本配置文件参数。
2.如权利要求1所述系统,其特征在于,所述数据模块包括:
数据导入子模块,用于通过sql查询方式将所述数据卸数到文件,再将所述文件上传至HDFS;
数据导出子模块,用于利用Sqoop java client卸数,导出所述数据到数据库;以及
数据库连接子模块,用于所述数据库连接池的创建和管理,并通过配置文件解析建立jdbc连接。
3.如权利要求2所述系统,其特征在于,所述系统还包括:
参数配置模块,用于执行所述数据库配置和导数参数配置。
4.如权利要求3所述系统,其特征在于,所述系统还包括:
运行日志模块,用于保存所述工具模块执行过程中生成的日志信息。
5.一种不同存储介质间的数据交换方法,其特征在于,所述方法包括:
参数管理模块对数据设置参数初始值和线程参数管理;
工具模块获取所述数据的营业日期、数据库密码加解密、文件格式校验和数据格式化;
接口模块提供数据连接的统一接口,使用dp-dx脚本配置文件参数;以及
数据模块对不同介质间的所述数据进行所述数据连接、数据导入和数据导出。
6.如权利要求5所述方法,其特征在于,所述数据模块对不同介质间的所述数据进行所述数据连接、数据导入和数据导出包括:
数据导入子模块通过sql查询方式将所述数据卸数到文件,再将所述文件上传至HDFS;
数据导出子模块利用Sqoop java client卸数,导出所述数据到数据库;以及
数据库连接子模块对所述数据库连接池进行创建和管理,并通过配置文件解析建立jdbc连接。
7.如权利要求6所述方法,其特征在于,所述方法还包括:
参数配置模块执行所述数据库配置和导数参数配置。
8.如权利要求5-7任一项所述方法,其特征在于,所述方法还包括:
运行日志模块保存所述工具模块执行过程中生成的日志信息。
9.一种计算机可读存储介质,所述计算机存储介质包含有计算机程序,其特征在于,所述计算机程序在被一个或多个计算机执行时使得所述一个或多个计算机执行如下操作:
所述操作包括如权利要求5-8中任一项所述的不同存储介质间的数据交换方法所包含的步骤。
10.一种不同存储介质间的数据交换装置,其特征在于,所述装置包括:
存储器,存储有计算机可读指令;
处理器,执行所述计算机可读指令以执行如权利要求5-8中任一项所述的不同存储介质间的数据交换方法所包含的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810870697.6A CN109241019A (zh) | 2018-08-02 | 2018-08-02 | 不同存储介质间的数据交换系统、方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810870697.6A CN109241019A (zh) | 2018-08-02 | 2018-08-02 | 不同存储介质间的数据交换系统、方法、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109241019A true CN109241019A (zh) | 2019-01-18 |
Family
ID=65072795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810870697.6A Pending CN109241019A (zh) | 2018-08-02 | 2018-08-02 | 不同存储介质间的数据交换系统、方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241019A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148671A (zh) * | 2020-08-21 | 2020-12-29 | 格创东智(天津)科技有限公司 | 一种针对Robot的数据管理系统 |
CN112597121A (zh) * | 2020-12-25 | 2021-04-02 | 北京知因智慧科技有限公司 | 逻辑脚本的处理方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877002A (zh) * | 2009-11-30 | 2010-11-03 | 许继集团有限公司 | 基于统一接口的内存数据库分布式访问方法及系统 |
CN102591725A (zh) * | 2011-12-20 | 2012-07-18 | 浙江鸿程计算机系统有限公司 | 一种异构数据库之间多线程数据交换的方法 |
US20120331563A1 (en) * | 2011-06-24 | 2012-12-27 | Motorola Mobility, Inc. | Retrieval of Data Across Multiple Partitions of a Storage Device Using Digital Signatures |
CN107045534A (zh) * | 2017-01-20 | 2017-08-15 | 中国航天系统科学与工程研究院 | 大数据环境下基于HBase的异构数据库在线交换与共享系统 |
CN108133007A (zh) * | 2017-12-22 | 2018-06-08 | 北京明朝万达科技股份有限公司 | 一种数据同步方法和系统 |
CN108337328A (zh) * | 2018-05-17 | 2018-07-27 | 广东铭鸿数据有限公司 | 一种数据交换系统、数据上传方法及数据下载方法 |
-
2018
- 2018-08-02 CN CN201810870697.6A patent/CN109241019A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877002A (zh) * | 2009-11-30 | 2010-11-03 | 许继集团有限公司 | 基于统一接口的内存数据库分布式访问方法及系统 |
US20120331563A1 (en) * | 2011-06-24 | 2012-12-27 | Motorola Mobility, Inc. | Retrieval of Data Across Multiple Partitions of a Storage Device Using Digital Signatures |
CN102591725A (zh) * | 2011-12-20 | 2012-07-18 | 浙江鸿程计算机系统有限公司 | 一种异构数据库之间多线程数据交换的方法 |
CN107045534A (zh) * | 2017-01-20 | 2017-08-15 | 中国航天系统科学与工程研究院 | 大数据环境下基于HBase的异构数据库在线交换与共享系统 |
CN108133007A (zh) * | 2017-12-22 | 2018-06-08 | 北京明朝万达科技股份有限公司 | 一种数据同步方法和系统 |
CN108337328A (zh) * | 2018-05-17 | 2018-07-27 | 广东铭鸿数据有限公司 | 一种数据交换系统、数据上传方法及数据下载方法 |
Non-Patent Citations (1)
Title |
---|
SHAWSHANKLIN: "scoop client jaVa api将 mysql的数据导到hdfs", 《HTTPS://ASK.CSDN.NET/QUESTIONS/202492》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148671A (zh) * | 2020-08-21 | 2020-12-29 | 格创东智(天津)科技有限公司 | 一种针对Robot的数据管理系统 |
CN112148671B (zh) * | 2020-08-21 | 2023-08-22 | 格创东智(天津)科技有限公司 | 一种针对Robot的数据管理系统 |
CN112597121A (zh) * | 2020-12-25 | 2021-04-02 | 北京知因智慧科技有限公司 | 逻辑脚本的处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797558B2 (en) | Generating data transformation workflows | |
US11354314B2 (en) | Method for connecting a relational data store's meta data with hadoop | |
CN109997126B (zh) | 事件驱动提取、变换、加载(etl)处理 | |
US20210200726A1 (en) | System and method for parallel support of multidimensional slices with a multidimensional database | |
KR101365832B1 (ko) | 데이터 액세스 계층 클래스 생성기 | |
EP2572289B1 (en) | Data storage and processing service | |
CN108536761A (zh) | 报表数据查询方法及服务器 | |
TW201600985A (zh) | 資料的查詢方法及查詢裝置 | |
CN102999537A (zh) | 一种数据迁移系统和方法 | |
EP1810131A2 (en) | Services oriented architecture for data integration services | |
US9992269B1 (en) | Distributed complex event processing | |
US20110040775A1 (en) | Proactive analytic data set reduction via parameter condition injection | |
WO2016046658A1 (en) | Simplifying invocation of import procedures to transfer data from data sources to data targets | |
US20140019889A1 (en) | Regenerating a user interface area | |
WO2002065277A2 (en) | Method and system for incorporating legacy applications into a distributed data processing environment | |
US9330140B1 (en) | Transient virtual single tenant queries in a multi-tenant shared database system | |
CN106411970A (zh) | 一种基于服务调用的故障处理方法、装置和系统 | |
CN114218218A (zh) | 基于数据仓库的数据处理方法、装置、设备及存储介质 | |
CN109241019A (zh) | 不同存储介质间的数据交换系统、方法、装置和存储介质 | |
WO2012170565A2 (en) | Code generation and implementation method, system, and storage medium for delivering bidirectional data aggregation and updates | |
US8229946B1 (en) | Business rules application parallel processing system | |
Owens et al. | Hadoop Real World Solutions Cookbook | |
CN115269495B (zh) | 一种基于aPaaS平台的业务方案元数据处理方法及系统 | |
Chullipparambil | Big data analytics using Hadoop tools | |
US20220100715A1 (en) | Database migration |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190118 |