CN113377867A - 一种数据同步方法、装置及电子设备 - Google Patents
一种数据同步方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113377867A CN113377867A CN202110650060.8A CN202110650060A CN113377867A CN 113377867 A CN113377867 A CN 113377867A CN 202110650060 A CN202110650060 A CN 202110650060A CN 113377867 A CN113377867 A CN 113377867A
- Authority
- CN
- China
- Prior art keywords
- data
- picture file
- relational data
- target
- relational
- 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
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- 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
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Abstract
本申请公开了一种数据同步方法、装置、设备及存储介质。该方法包括:从目标业务系统的关系型数据库中读取关系型数据;根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中;根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据;将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。实现一次性同时同步业务的关系型数据和图片文件数据,提高了数据同步的能力,并通过建立关系型数据与图片文件的强关联,提高了数据查询的便捷性。
Description
技术领域
本发明涉及数据存储领域,特别涉及一种数据同步方法、装置、设备及存储介质。
背景技术
当前,数据治理作为技术与管理相结合的一套持续改善管理机制,贯穿在数据管理的整个过程中,通常包括了组织架构、政策制度、技术工具、数据标准、流程规范、监督及考核等方方面面,将其他几个数据管理职能贯穿、协同在一起。数据治理涉及元数据管理、主数据管理、数据质量、数据集成、数据共享、监控与报告等多方面,而如何进行数据治理形成有效的数据资产,提供高质量的数据服务是目前广泛关注的问题。现有技术中,通过Kettle工具进行文件同步,但Kettle不能同时同步两种类型的数据,单次任务只能对一种类型的数据进行同步,并且缺乏文件格式转换机制。现有技术中,还存在一些数据集成工具面对多种类型数据也只能单独同步某种类型数据,降低了数据同步能力,进一步降低了数据服务的质量。
发明内容
有鉴于此,本发明的目的在于提供一种数据同步方法、装置、设备及介质,能够同时同步关系型数据和图片文件。其具体方案如下:
第一方面,本申请公开了一种数据同步方法,包括:
从目标业务系统的关系型数据库中读取关系型数据;
根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中;
根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据;
将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。
可选的,所述根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,包括:
读取所述目标关系型数据中的绝对路径字段,作为所述关系型数据对应的图片文件的绝对路径;
或,读取所述目标关系型数据中的相对路径字段,并通过向所述相对路径字段添加相应的字段前缀以得到所述图片文件的绝对路径;
或,读取所述目标关系型数据中的目标参数字段,根据所述目标参数字段确定出所述图片文件的绝对路径;其中,所述目标参数字段为与所述图片文件存在映射连接的字段。
可选的,所述根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据之前,还包括:
根据本地服务器与所述图片文件所在目标服务器的关系,确定出对应的图片文件读取组件;
根据所述图片文件读取组件的类型以及预先配置的服务器参数与所述目标服务器的建立连接,并获取预先配置的绝对路径名称字段;其中,所述服务器参数包括IP、端口、账号和密码;
根据预先配置的线程数创建对应数量的所述图片文件读取组件。
可选的,所述根据本地服务器与所述图片文件所在目标服务器的关系,确定出对应的图片文件读取组件,包括:
若所述本地服务器与所述图片文件所在的目标服务器相同,则选择读取本地图片组件为所述图片文件读取组件;
若所述本地服务器与所述图片文件所在的目标服务器不同,且所述目标服务器为Linux系统,则选择SCP读取图片组件作为所述图片文件读取组件;
若所述本地服务器与所述图片文件所在的目标服务器不同,且所述目标服务器为Windows系统,则选择SFTP读取图片组件作为所述图片文件读取组件。
可选的,所述根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中之后,还包括:
根据所述目标业务系统和所述关系型数据确定出所述关系型数据对应的图片文件的文件原名,并将所述文件原名添加至所述关系型数据中。
可选的,所述将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,包括:
将所述二进制数据写入内存数组得到二进制数组,并根据所述二进制数组确定所述图片文件的图片格式;
将所述二进制数组转换为Base64字符串,并根据所述图片格式在所述Base64字符串的头部添加相应的图片头信息;
将含有所述图片头信息的Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据。
可选的,所述根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据过程中,还包括:
当出现异常情况时,查看是否存在预先创建的异常处理配置;
若不存在异常处理配置,则停止所述ETL过程并输出异常日志;
若存在所述异常处理配置,则根据所述异常处理配置基于当前错误信息和错误编码生成错误日志,并继续执行下一条数据。
可选的,所述将所述目标关系型数据存储至数据中心之后,还包括:
当所述数据中心接收到客户端发送的数据获取请求后,根据所述数据获取请求从目标数据库中筛选出相应的目标关系型数据,并将所述目标关系型数据发送给所述客户端,以便所述客户端基于所述目标关系型数据直接实现相应图片文件的浏览和下载。
第二方面,本申请公开了一种数据同步装置,包括:
数据获取模块,用于从目标业务系统的关系型数据库中读取关系型数据;
绝对路径添加模块,用于根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中;
图片文件数据读取模块,用于根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据;
数据转换及存储模块,用于将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的数据同步方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中计算机程序被处理器执行时实现前述的数据同步方法。
本申请中,从目标业务系统的关系型数据库中读取关系型数据;根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中;根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据;将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。可见,通过根据关系型数据确定出相应图片文件的绝对路径,然后根据图片文件的绝对路径将图片文件转换为Base64字符串存储到关系型数据中,实现一次性同时同步业务的关系型数据和图片文件数据,让关系型数据和文件数据在同一时间内同步完成,并且通过将关系型数据建立与图片文件的强关联,提高了数据存储的能力以及数据查询的便捷性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种数据同步方法流程图;
图2为本申请提供的一种具体的关系型数据与文件数据一对一ETL流程图;
图3为本申请提供的一种具体的数据同步方法流程图;
图4为本申请提供的另一种具体的数据同步方法流程图;
图5为本申请提供的一种具体的目标关系型数据共享流程图;
图6为本申请提供的一种数据同步装置结构示意图;
图7为本申请提供的一种电子设备结构图。
具体实施方式
现有技术中,通过Kettle工具进行文件同步,但不能同时同步两种类型的数据,单次任务只能对一种类型的数据进行同步,并且缺乏文件格式转换机制。或者通过一些数据集成工具,但面对多种类型数据也只能单独同步某种类型数据,降低了数据同步能力,进一步降低了数据服务的质量。为克服上述技术问题,本申请提出一种数据同步方法,可以同时同步关系型数据和图片文件数据,提高了数据同步的能力。
本申请实施例公开了一种数据同步方法,参见图1所示,该方法可以包括以下步骤:
步骤S11:从目标业务系统的关系型数据库中读取关系型数据。
本实施例中,首先从目标业务系统的关系型数据库中读取关系型数据,具体的,根据预先配置的输入配置获取数据源信息,然后根据数据源信息创建JDBC连接,再通过JDBC连接执行SQL(Structured Query Language,结构化查询语言)查询语句从关系型数据库读取上述关系型数据。可以理解的是,本实施例公开的数据同步为一种具体的ETL(Extract-Transform-Load)过程,即将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。本实施例之前可以配置数据输入时需要配置、选择的数据源。并设置SQL查询语句,可以选择查询业务表中所有字段,查询方式可以为全量数据查询或增量数据查询。也就是说通过启动预先创建的ETL过程,根据目标业务系统的关系型数据的数据输入配置获取数据源信息,并根据所述数据源信息从关系型数据库中读取目标关系型数据。
步骤S12:根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中。
本实施例中,根据读取的关系型数据确定出上述关系型数据对应的图片文件数据的绝对路径,然后将上述绝对路径添加到上述关系型数据中。
本实施例中,所述根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,可以包括:读取所述目标关系型数据中的绝对路径字段,作为所述关系型数据对应的图片文件的绝对路径;或,读取所述目标关系型数据中的相对路径字段,并通过向所述相对路径字段添加相应的字段前缀以得到所述图片文件的绝对路径;或,读取所述目标关系型数据中的目标参数字段,根据所述目标参数字段确定出所述图片文件的绝对路径;其中,所述目标参数字段为与所述图片文件存在映射连接的字段。
可以理解的是,上述绝对路径的确定方式包括但不限于以上几种,具体可以根据业务系统内数据存储的形式,确定图片文件的绝对路径的查询方式。比如关系型数据中已包含图片文件绝对路径,则直接从上述关系型数据中提取得到上述绝对路径;或者,关系型数据中记录了相对路径,则基于相对路径添加目录前缀获取绝对路径;或者,读取目标关系型数据中的目标参数字段,根据目标参数字段确定出图片文件的绝对路径,例如校园业务系统是根据专业和学号存储证件照的,则先从关系型数据中获取专业和学号,再通过专业和学号定位图片文件绝对路径。
步骤S13:根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据。
本实施例中,在图片文件数据读取时,利用预先创建的图片文件读取组件,根据关系型数据中添加的绝对路径,以输入流的形式读取上述图片文件的二进制数据。
本实施例中,所述根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据之前,还可以包括:根据本地服务器与所述图片文件所在目标服务器的关系,确定出对应的图片文件读取组件;根据所述图片文件读取组件的类型以及预先配置的服务器参数与所述目标服务器的建立连接,并获取预先配置的绝对路径名称字段;其中,所述服务器参数包括IP、端口、账号和密码;根据预先配置的线程数创建对应数量的所述图片文件读取组件。
可以理解的是,本实施例中在利用图片文件读取组件读取图片文件的二进制流之前,首先从预先创建的图片文件读取组件中确定出符合当前应用环境的图片文件读取组件,即根据本地服务器与图片文件所在目标服务器的关系,确定出对应的图片文件读取组件。然后对该图片文件读取组件进行初始化,包括根据图片文件读取组件的类型以及预先配置的服务器参数与目标服务器的建立连接,服务器参数包括IP、端口、账号和密码;并获取预先配置的绝对路径名称字段,以便后续根据绝对路径的参数名获取相应的参数值;以及根据预先配置的线程数创建对应数量的图片文件读取组件。
本实施例中,所述根据本地服务器与所述图片文件所在目标服务器的关系,确定出对应的图片文件读取组件,可以包括:若所述本地服务器与所述图片文件所在的目标服务器相同,则选择读取本地图片组件为所述图片文件读取组件;若所述本地服务器与所述图片文件所在的目标服务器不同,且所述目标服务器为Linux系统,则选择SCP读取图片组件作为所述图片文件读取组件;若所述本地服务器与所述图片文件所在的目标服务器不同,且所述目标服务器为Windows系统,则选择SFTP读取图片组件作为所述图片文件读取组件。
可以理解的是,根据访问图片文件的协议选择图片文件同步组件,如果本地ETL作业运行的服务器与图片文件所在服务器相同则选择“读取本地图片为Base64”组件;如果本地ETL作业运行的服务器与图片文件所在服务器不同,且图片文件所在服务器为Linux系统,则选择“SCP读取图片为Base64”组件,一般Linux系统已自带SCP,如果没有可以安装;如果本地ETL作业运行的服务器与图片文件所在服务器不同,且文件所在服务器为WINDOWS系统,则选择“SFTP读取图片为Base64”组件。通过预先创建的这些图片文件读取组件,可以满足在各类环境下的图片文件读取,并可以将图片文件数据转换为Base64字符串。
选择出图片文件读取组件后,对该图片文件读取组件进行初始化,具体的,如果组件为“SCP读取图片为Base64”或“SFTP读取图片为Base64”,则建立与图片文件所在目标服务器的连接,具体可以根据预先配置的服务器参数,如IP、端口、账号、密码等,并且,账号必须有读取绝对路径文件的权限。以及根据预先配置的线程数创建对应数量的图片文件读取组件,如果线程数大于1则会创建多个组件实例并行执行,一个实例为一个线程,数据输入通过轮询方式分配到多个实例。另外,“读取本地文图片为Base64”作业启动用户也必须有读取绝对路径文件的权限。
本实施例中,所述根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据过程中,还可以包括:当出现异常情况时,查看是否存在预先创建的异常处理配置;若不存在异常处理配置,则停止所述ETL过程并输出异常日志;若存在所述异常处理配置,则根据所述异常处理配置基于当前错误信息和错误编码生成错误日志,并继续执行下一条数据。可以理解的是,在图片文件读取组件读取输出数据的过程中如果出现异常,则判断是否存在预先配置的异常处理配置,如果未配置异常处理,则出现一次异常后就停止整个ETL的运行,并输出错误日志;如果配置了异常处理,则按照异常处理配置将当次的错误信息和错误编码作为字段增加到错误输出中,然后继续执行下一条数据。其中,上述错误日志中可以包含相应的时间戳。由此,当某个图片文件失败则对应关系型数据也将不再写入,并可以记录所有失败数据和失败原因。
步骤S14:将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。
本实施例中,读取到图片文件的二进制数据后,利用上述图片文件组件将上述二进制数据转换为Base64字符串,并将该Base64字符串添加至上述关系型数据中,得到包含绝对路径和Base64字符串的目标关系型数据,然后将上述目标关系型数据存储至数据中心或数据仓库等。
可以理解的是,根据预先配置的数据输出配置,获取目标存储数据库的数据源信息,然后根据上述数据源信息创建JDBC连接,根据字段映射将输入的数据转为输出表的格式,批量写入相应的目标存储数据库中,上述目标存储数据库可以包括但不限于共享库、中心库和贴源库等。
进一步,如图2所示,本实施例中可以预先创建目标关系型数据异常输出配置,在图片文件读取组件读取输出数据的过程中出现异常时进行错误存储,存储错误数据表名为业务表名加后缀_error,存储的错误数据字段包含关系型数据追加错误编码、错误信息、错误时间等。需要说明的是,本实施例中关系型数据与图片文件数据的对应关系可以为一对多、多对一、多对多等,数据同步方式如上述所述在此不再进行赘述。
以校园数据系统为例,学校同时拥有业务的关系型数据和图片文件数据,在将数据同步抽取到数据仓库或数据中心时,现有技术中关系型数据和图片文件数据进行单独同步,即使用两个任务去分别完成关系型数据和图片文件数据的同步,但图片文件的数据量可能远大于关系型数据,同步使用时间也相差交大。并且,由于学校某个业务的关系型数据和图片文件数据可能没有明确关联,只有懂业务的人才能知道如何通过关系型数据找到图片文件数据。当关系型数据和图片文件数据开放给第三方厂商时,第三方厂商短时间内无法理解业务找到关系型数据对应的图片文件数据,大大降低了数据服务的性能。而通过本实施例的方式,数据同步时将图片文件数据存入关系型数据表中,开放数据时可以一次性获取关系型数据和图片文件数据,不仅提高了数据同步的能力,同时还提高了提供数据服务的能力。
由上可见,本实施例中通过从目标业务系统的关系型数据库中读取关系型数据;根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中;根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据;将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。可见,通过根据关系型数据确定出相应图片文件的绝对路径,然后根据图片文件的绝对路径将图片文件转换为Base64字符串存储到关系型数据中,实现一次性同时同步业务的关系型数据和图片文件数据,让关系型数据和文件数据在同一时间内同步完成,并且通过将关系型数据建立与图片文件的强关联,提高了数据存储的能力以及数据查询的便捷性。
本申请实施例公开了一种具体的数据同步方法,参见图3所示,该方法可以包括以下步骤:
步骤S21:从目标业务系统的关系型数据库中读取关系型数据。
步骤S22:根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中。
步骤S23:根据所述目标业务系统和所述关系型数据确定出所述关系型数据对应的图片文件的文件原名,并将所述文件原名添加至所述关系型数据中。
本实施例中,如图4所示,查询绝对路径之后可以根据目标业务系统和关系型数据确定出图片文件的文件原名,具体可以从目标业务系统的数据存储中读取,此处文件原名的读取方式不做限定,可以根据数据业务的实际存储方式进行查询,或根据关系型数据字段进行映射计算得出。若无法还原图片文件原名或未指定图片文件原名字段,则图片文件原名为空null。
步骤S24:根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据。
本实施例中,根据关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取图片文件的二进制数据,以及上述图片文件的大小。
步骤S25:将所述二进制数据写入内存数组得到二进制数组,并根据所述二进制数组确定所述图片文件的图片格式。
本实施例中,将读取的整个图片二进制数据读入内存中数组,数组大小可以依据获取的图片文件大小,并根据二进制数据确定图片文件的图片格式,即图片的类型。
具体的,根据图片二进制数组获取图片类型,可以使用图片二进制数组构造java.io.ByteArrayInputStream类的对象inputStream,然后使用对象inputStream构造javax.imageio.stream.MemoryCacheImageInputStream类对象memoryCacheImageInputStream;再使用工具类javax.imageio.ImageIO的方法getImageReaders获取抽象类javax.imageio.ImageReader的实例,参数为memoryCacheImageInputStream;最后,通过判断ImageReader抽象类对应实例类型获取图片类型;
例如,com.sun.imageio.plugins.bmp.BMPImageReader对应BMP;
com.sun.imageio.plugins.gif.GIFImageReader对应GIF;
com.sun.imageio.plugins.jpeg.JPEGImageReader对应JPEG;
com.sun.imageio.plugins.png.PNGImageReader对应PNG。
步骤S26:将所述二进制数组转换为Base64字符串,并根据所述图片格式在所述Base64字符串的头部添加相应的图片头信息。
本实施例中,将获取的二进制数组转换为Base64字符串,并根据图片格式在Base64字符串的头部添加相应的图片头信息。具体的,可以使用类org.apache.commons.codec.binary.Base64中方法encodeBase64String将图片的二进制数组转为Base64字符串。然后根据图片类型给Base64字符串添加前缀,例如,BMP对应前缀data:image/bmp;base64,GIF对应前缀data:image/gif;base64,JPEG对应前缀data:image/jpeg;base64,PNG对应前缀data:image/png;base64。可以理解的是,通过将图片文件的二进制数据转换为Base64字符串可以便于读取数据时直接浏览或下载得到图片,并通过添加图片类型的头信息,便于下载时将图片按照相应的格式进行存储。
步骤S27:将含有所述图片头信息的Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。
本实施例中,所述将所述目标关系型数据存储至数据中心之后,还可以包括:当所述数据中心接收到客户端发送的数据获取请求后,根据所述数据获取请求从目标数据库中筛选出相应的目标关系型数据,并将所述目标关系型数据发送给所述客户端,以便所述客户端基于所述目标关系型数据直接实现相应图片文件的浏览和下载。可以理解的是,生成的包含base64字符串的目标关系型数据分布存储在数据中心相应的目标数据库中,当需要读取上述目标关系型数据时,根据数据获取请求从相应的目标数据库中筛选出需要的目标关系型数据,并反馈给客户端。
本实施例中,客户端数据用户收到目标关系型数据返回后,浏览器显示图片可以使用JavaScript将图片base64字符串赋给html的img标签的src属性,进而可以直接在浏览器中显示。客户端数据用户收到关系型数据返回后,也可以通过使用JavaScript将图片base64字符串赋给html的a标签的href属性,直接使用浏览器下载图片,如果要使用图片文件原名则JavaScript将文件原名赋给html的a标签的download属性。客户端数据用户收到关系型数据返回后,可以将图片base64字符串重新保存为文件,具体的,先按base64拆分字符串,得到第一个值即字符串前缀,以及第二个值即字符串数据段,取上述字符串数据段然后转为二进制。第一个值可以用来判断图片类型,将去掉前缀的base64字符串转为二进制数组,格式转换可以通过Java代码使用org.apache.commons.codec.binary.Base64中方法decodeBase64;确定保存的路径和文件名,图片文件原名存在且唯一可以使用图片文件原名,否则可以自动生成唯一文件名比如使用算法uuid、SnowFlake等;图片类型可根据base64字符串前缀判断,由此获取保存的文件名后缀。
本实施例中,如图5所示,客户端发送数据获取请求的过程中,可以包括客户端数据用户获取接口文档;使用接口文档中用于数据访问的账号和密码登录OAuth2.0服务获取token;使用接口文档中获取目标关系型数据接口地址,访问目标关系型数据接口地址携带数据用户的token;资源共享服务接收到目标关系型数据接口访问请求,先验证数据用户权限。其中,用户权限的验证包括:验证用户是否登录;验证用户是否拥有该接口的访问权限;验证用户对该接口的访问时间是否过期;验证用户对该接口的访问次数是否超限;验证用户在规定时间内访问频率是否超限,规定时间可以按月、周、天或时进行配置。数据用户验证通过后,资源共享服务根据接口定义从数据库中查询目标关系型数据,返回包含Base64字符串的数据。
可见,向数据仓库或数据中心写入的目标关系型数据,由于建立了与文件的强关联,让数据使用者拿到的关系型数据即包含了图片数据,由此用户可直接用户浏览器显示,而无需了解原始业务中关系型数据和图片文件数据关联关系,也不需要访问多次。将关系型数据和图片数据一次开放给第三方厂商使用,提高了数据获取的便捷性和质量。
其中,关于上述步骤S21、步骤S22的具体过程可以参考前述实施例公开的相应内容,在此不再进行赘述。
由上可见,将得到的二进制数组转换为Base64字符串,并根据所述图片格式在所述Base64字符串的头部添加相应的图片头信息,然后将含有所述图片头信息的Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。可见,通过一个任务、一个作业同步关系型数据和图片文件数据,将图片以Base64字符串形式存入关系型数据库并与关系型数据建立关系,数据共享时只需要查询一次即可获取关系型数据和图片Base64字符串,第三方厂商使用时可直接在浏览器中显示Base64的图片。
相应的,本申请实施例还公开了一种数据同步装置,参见图6所示,该装置包括:
数据获取模块11,用于从目标业务系统的关系型数据库中读取关系型数据;
绝对路径添加模块12,用于根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中;
图片文件数据读取模块13,用于根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据;
数据转换及存储模块14,用于将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。
由上可见,本实施例中从目标业务系统的关系型数据库中读取关系型数据;根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中;根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据;将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。可见,通过根据关系型数据确定出相应图片文件的绝对路径,然后根据图片文件的绝对路径将图片文件转换为Base64字符串存储到关系型数据中,实现一次性同时同步业务的关系型数据和图片文件数据,让关系型数据和文件数据在同一时间内同步完成,并且通过将关系型数据建立与图片文件的强关联,提高了数据存储的能力以及数据查询的便捷性。
在一些具体实施例中,所述绝对路径添加模块12具体可以包括:
第一路径添加单元,用于读取所述目标关系型数据中的绝对路径字段,作为所述关系型数据对应的图片文件的绝对路径;
第二路径添加单元,用于读取所述目标关系型数据中的相对路径字段,并通过向所述相对路径字段添加相应的字段前缀以得到所述图片文件的绝对路径;
第三路径添加单元,用于读取所述目标关系型数据中的目标参数字段,根据所述目标参数字段确定出所述图片文件的绝对路径;其中,所述目标参数字段为与所述图片文件存在映射连接的字段。
在一些具体实施例中,所述数据同步装置具体可以包括:
图片文件读取组件确定模块,用于根据本地服务器与所述图片文件所在目标服务器的关系,确定出对应的图片文件读取组件;
组件初始化模块,用于根据所述图片文件读取组件的类型以及预先配置的服务器参数与所述目标服务器的建立连接,并获取预先配置的绝对路径名称字段;其中,所述服务器参数包括IP、端口、账号和密码;根据预先配置的线程数创建对应数量的所述图片文件读取组件。
在一些具体实施例中,所述图片文件读取组件确定模块具体可以包括:
第一组件确定单元,用于若所述本地服务器与所述图片文件所在的目标服务器相同,则选择读取本地图片组件为所述图片文件读取组件;
第二组件确定单元,用于若所述本地服务器与所述图片文件所在的目标服务器不同,且所述目标服务器为Linux系统,则选择SCP读取图片组件作为所述图片文件读取组件;
第三组件确定单元,用于若所述本地服务器与所述图片文件所在的目标服务器不同,且所述目标服务器为Windows系统,则选择SFTP读取图片组件作为所述图片文件读取组件。
在一些具体实施例中,所述数据同步装置具体可以包括:
文件原名添加模块,用于根据所述目标业务系统和所述关系型数据确定出所述关系型数据对应的图片文件的文件原名,并将所述文件原名添加至所述关系型数据中。
在一些具体实施例中,所述数据转换及存储模块14具体可以包括:
图片格式确定单元,用于将所述二进制数据写入内存数组得到二进制数组,并根据所述二进制数组确定所述图片文件的图片格式;
图片头信息添加单元,用于将所述二进制数组转换为Base64字符串,并根据所述图片格式在所述Base64字符串的头部添加相应的图片头信息;
目标关系型数据确定单元,用于将含有所述图片头信息的Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据。
在一些具体实施例中,所述数据同步装置具体还可以包括:
异常处理模块,用于当出现异常情况时,查看是否存在预先创建的异常处理配置;若不存在异常处理配置,则停止所述ETL过程并输出异常日志;若存在所述异常处理配置,则根据所述异常处理配置基于当前错误信息和错误编码生成错误日志,并继续执行下一条数据。
进一步的,本申请实施例还公开了一种电子设备,参见图7所示,图中的内容不能被认为是对本申请的使用范围的任何限制。
图7为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的数据同步方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及包括关系型数据在内的数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的数据同步方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请实施例还公开了一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述任一实施例公开的数据同步方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种数据同步方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
从目标业务系统的关系型数据库中读取关系型数据;
根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中;
根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据;
将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。
2.根据权利要求1所述的数据同步方法,其特征在于,所述根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,包括:
读取所述目标关系型数据中的绝对路径字段,作为所述关系型数据对应的图片文件的绝对路径;
或,读取所述目标关系型数据中的相对路径字段,并通过向所述相对路径字段添加相应的字段前缀以得到所述图片文件的绝对路径;
或,读取所述目标关系型数据中的目标参数字段,根据所述目标参数字段确定出所述图片文件的绝对路径;其中,所述目标参数字段为与所述图片文件存在映射连接的字段。
3.根据权利要求1所述的数据同步方法,其特征在于,所述根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据之前,还包括:
根据本地服务器与所述图片文件所在目标服务器的关系,确定出对应的图片文件读取组件;
根据所述图片文件读取组件的类型以及预先配置的服务器参数与所述目标服务器的建立连接,并获取预先配置的绝对路径名称字段;其中,所述服务器参数包括IP、端口、账号和密码;
根据预先配置的线程数创建对应数量的所述图片文件读取组件。
4.根据权利要求3所述的数据同步方法,其特征在于,所述根据本地服务器与所述图片文件所在目标服务器的关系,确定出对应的图片文件读取组件,包括:
若所述本地服务器与所述图片文件所在的目标服务器相同,则选择读取本地图片组件为所述图片文件读取组件;
若所述本地服务器与所述图片文件所在的目标服务器不同,且所述目标服务器为Linux系统,则选择SCP读取图片组件作为所述图片文件读取组件;
若所述本地服务器与所述图片文件所在的目标服务器不同,且所述目标服务器为Windows系统,则选择SFTP读取图片组件作为所述图片文件读取组件。
5.根据权利要求1所述的数据同步方法,其特征在于,所述根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中之后,还包括:
根据所述目标业务系统和所述关系型数据确定出所述关系型数据对应的图片文件的文件原名,并将所述文件原名添加至所述关系型数据中。
6.根据权利要求1所述的数据同步方法,其特征在于,所述将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,包括:
将所述二进制数据写入内存数组得到二进制数组,并根据所述二进制数组确定所述图片文件的图片格式;
将所述二进制数组转换为Base64字符串,并根据所述图片格式在所述Base64字符串的头部添加相应的图片头信息;
将含有所述图片头信息的Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据。
7.根据权利要求1至6任一项所述的数据同步方法,其特征在于,所述根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据过程中,还包括:
当出现异常情况时,查看是否存在预先创建的异常处理配置;
若不存在异常处理配置,则停止所述ETL过程并输出异常日志;
若存在所述异常处理配置,则根据所述异常处理配置基于当前错误信息和错误编码生成错误日志,并继续执行下一条数据。
8.根据权利要求1至6任一项所述的数据同步方法,其特征在于,所述将所述目标关系型数据存储至数据中心之后,还包括:
当所述数据中心接收到客户端发送的数据获取请求后,根据所述数据获取请求从目标数据库中筛选出相应的目标关系型数据,并将所述目标关系型数据发送给所述客户端,以便所述客户端基于所述目标关系型数据直接实现相应图片文件的浏览和下载。
9.一种数据同步装置,其特征在于,包括:
数据获取模块,用于从目标业务系统的关系型数据库中读取关系型数据;
绝对路径添加模块,用于根据所述关系型数据确定出所述关系型数据对应的图片文件的绝对路径,并将所述绝对路径添加至所述关系型数据中;
图片文件数据读取模块,用于根据所述关系型数据中的绝对路径利用相应的预先创建的图片文件读取组件读取所述图片文件的二进制数据;
数据转换及存储模块,用于将所述二进制数据转换为Base64字符串添加至所述关系型数据,以得到包含所述Base64字符串的目标关系型数据,并将所述目标关系型数据存储至数据中心。
10.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至8任一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110650060.8A CN113377867B (zh) | 2021-06-10 | 2021-06-10 | 一种数据同步方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110650060.8A CN113377867B (zh) | 2021-06-10 | 2021-06-10 | 一种数据同步方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113377867A true CN113377867A (zh) | 2021-09-10 |
CN113377867B CN113377867B (zh) | 2022-10-21 |
Family
ID=77573789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110650060.8A Active CN113377867B (zh) | 2021-06-10 | 2021-06-10 | 一种数据同步方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377867B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4918588A (en) * | 1986-12-31 | 1990-04-17 | Wang Laboratories, Inc. | Office automation system with integrated image management |
US20070067252A1 (en) * | 2005-08-30 | 2007-03-22 | Siemens Aktiengesellschaft | Archiving and data integration system |
CN104168434A (zh) * | 2014-08-28 | 2014-11-26 | 深圳市银翔科技有限公司 | 视频文件的存储、播放和管理方法 |
CN107562835A (zh) * | 2017-08-23 | 2018-01-09 | 广东欧珀移动通信有限公司 | 文件查找方法、装置、移动终端及计算机可读存储介质 |
CN107577817A (zh) * | 2017-09-30 | 2018-01-12 | 北京酷我科技有限公司 | 一种实体数据库的读写方法 |
CN109167827A (zh) * | 2018-08-21 | 2019-01-08 | 奇酷互联网络科技(深圳)有限公司 | 移动终端同步应用的方法、计算机设备以及存储介质 |
CN109325369A (zh) * | 2018-11-02 | 2019-02-12 | 浙江大学 | 一种建筑结构试验数据时间字段加密存储与检索的方法 |
CN110427363A (zh) * | 2019-01-11 | 2019-11-08 | 中国铁路西安局集团有限公司 | 基于关系型数据库的铁路信号设备图像信息转换存储方法 |
CN110502573A (zh) * | 2019-07-08 | 2019-11-26 | 威富通科技有限公司 | 一种闸机数据同步方法及服务器 |
CN110782973A (zh) * | 2019-10-29 | 2020-02-11 | 京东方科技集团股份有限公司 | 医学影像信息分级存储方法及装置、计算机设备及介质 |
CN112364101A (zh) * | 2020-11-11 | 2021-02-12 | 深圳前海微众银行股份有限公司 | 数据的同步方法、装置、终端设备及介质 |
CN112470154A (zh) * | 2018-08-17 | 2021-03-09 | 华为技术有限公司 | 检测web网页安全性的方法和装置 |
-
2021
- 2021-06-10 CN CN202110650060.8A patent/CN113377867B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4918588A (en) * | 1986-12-31 | 1990-04-17 | Wang Laboratories, Inc. | Office automation system with integrated image management |
US20070067252A1 (en) * | 2005-08-30 | 2007-03-22 | Siemens Aktiengesellschaft | Archiving and data integration system |
CN104168434A (zh) * | 2014-08-28 | 2014-11-26 | 深圳市银翔科技有限公司 | 视频文件的存储、播放和管理方法 |
CN107562835A (zh) * | 2017-08-23 | 2018-01-09 | 广东欧珀移动通信有限公司 | 文件查找方法、装置、移动终端及计算机可读存储介质 |
CN107577817A (zh) * | 2017-09-30 | 2018-01-12 | 北京酷我科技有限公司 | 一种实体数据库的读写方法 |
CN112470154A (zh) * | 2018-08-17 | 2021-03-09 | 华为技术有限公司 | 检测web网页安全性的方法和装置 |
CN109167827A (zh) * | 2018-08-21 | 2019-01-08 | 奇酷互联网络科技(深圳)有限公司 | 移动终端同步应用的方法、计算机设备以及存储介质 |
CN109325369A (zh) * | 2018-11-02 | 2019-02-12 | 浙江大学 | 一种建筑结构试验数据时间字段加密存储与检索的方法 |
CN110427363A (zh) * | 2019-01-11 | 2019-11-08 | 中国铁路西安局集团有限公司 | 基于关系型数据库的铁路信号设备图像信息转换存储方法 |
CN110502573A (zh) * | 2019-07-08 | 2019-11-26 | 威富通科技有限公司 | 一种闸机数据同步方法及服务器 |
CN110782973A (zh) * | 2019-10-29 | 2020-02-11 | 京东方科技集团股份有限公司 | 医学影像信息分级存储方法及装置、计算机设备及介质 |
CN112364101A (zh) * | 2020-11-11 | 2021-02-12 | 深圳前海微众银行股份有限公司 | 数据的同步方法、装置、终端设备及介质 |
Non-Patent Citations (3)
Title |
---|
LI YANG: "Visual exploration of large relational data sets through 3D projections and footprint splatting", 《 KNOWLEDGE AND DATA ENGINEERING》 * |
张忠宝 等: "以太网物理隔离条件下实现自动数据同步", 《山西建筑》 * |
王逸晨: "基于数据共享及开放的数据治理体系研究", 《中小企业管理与科技》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113377867B (zh) | 2022-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10977269B1 (en) | Selective structure preserving obfuscation | |
US9646088B1 (en) | Data collection and transmission | |
US10891552B1 (en) | Automatic parser selection and usage | |
US11163791B2 (en) | Transformation configuration in instance data replication with bi-directional replication support | |
US20190273734A1 (en) | Configuring credentials to faciltate sharing data in a secure manner | |
US9596279B2 (en) | Cloud-based streaming data receiver and persister | |
US20120179779A1 (en) | System and method for data storage and retrieval | |
US10990605B2 (en) | Instance data replication | |
US10621209B1 (en) | Automatic parser generation | |
US10243919B1 (en) | Rule-based automation of DNS service discovery | |
US10972564B2 (en) | System and method for automating actions in distributed computing | |
US7356600B2 (en) | Enabling access to an application through a network portal | |
CN108287894B (zh) | 数据处理方法、装置、计算设备及存储介质 | |
CN113254534B (zh) | 数据同步方法、装置及计算机存储介质 | |
US7512651B2 (en) | Securely passing user credentials for access to an application through a network portal | |
US11762873B2 (en) | System and method for importation of configuration item (CI) data into a configuration management database (CMDB) | |
US9665732B2 (en) | Secure Download from internet marketplace | |
CN113377867B (zh) | 一种数据同步方法、装置及电子设备 | |
US20140344418A1 (en) | Dynamic configuration analysis | |
US10931630B2 (en) | System and method for connecting using aliases | |
CN112685451B (zh) | 数据查询处理方法、装置、计算机设备及存储介质 | |
US20230247081A1 (en) | Declarative rendering of hypertext transfer protocol headers | |
US20200236163A1 (en) | Scale out network-attached storage device discovery | |
Dooley et al. | Your Data, Your Way | |
CN114896130A (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 | ||
GR01 | Patent grant |