数据同步方法及装置与流程

文档序号:12124440阅读:194来源:国知局
本发明涉及计算机
技术领域
:,具体而言,涉及一种数据同步方法和一种数据同步装置。
背景技术
::现在的大数据平台数据一般都存储在HADOOP(海杜普,一种分布式系统基础架构)服务器上,有些业务系统迫切需要从HADOOP服务器中抽取数据同步到传统关系型数据库中,比如Oracle(一款关系型数据库管理系统)服务器,而目前进行数据同步的方案主要有以下两种:方案一:使用SQOOP开源软件(一款开源的工具,主要用于在HADOOP与传统的数据块间进行数据的相互传递),编写SQOOP同步脚本采集HADOOP服务器中的数据到Oracle服务器中。方案二:编写JAVA(面向对象的编程语言)程序从HIVE(基于HADOOP的一个数据仓库工具)接口用HQL(HibernateQueryLanguage,查询语言)查询数据,然后把数据写到Oracle服务器中。但是,上述两种方案分别存在以下缺陷:对于方案一而言,SQOOP增量同步数据的时候,HDFS(HADOOPDistributedFileSystem,HADOOP分布式文件系统)文件必须要指定一个自动增长列或某个更新日期列,作为增量同步的比较列,而SQOOP对空值的处理,还是会用NULL字符插入到Oracle服务器中,且SQOOP做数据同步的过程不透明,出了异常很难查询原因,其配置过程也很复杂。对于方案二而言,当同步数据量大时,效率很低,每次同步不同的表需要另外写程序,不能通用,适用性较弱。因此,如何实现HADOOP服务器中的数据到Oracle服务器的简单快捷的同步成为目前亟待解决的问题。技术实现要素:本发明正是基于上述问题,提出了一种新的技术方案,可以简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中,从而提高了数据同步的效率。有鉴于此,根据本发明的第一方面,提出了一种数据同步方法,用于HADOOP服务器,所述方法包括:获取所述HADOOP服务器中的同步数据的HDFS文件目录;将所述HDFS文件目录下的所述同步数据同步至第三方服务器中的NFS共享目录下,其中,所述NFS共享目录与Oracle服务器中的外部表存在一一映射关系,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,通过在HADOOP服务器和Oracle服务器之间挂载NFS(NetworkFileSystem,网络文件系统)共享目录的方式,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的,具体地,获取HADOOP服务器中需要同步到Oracle服务器中的同步数据的HDFS文件目录,并将HDFS文件目录下的同步数据同步到NFS共享目录下,进而通过NFS共享目录与Oracle服务器中的外部表之间的一一对应关系,使Oracle服务器通过读取外部表访问NFS共享目录下的同步数据,即实现对HADOOP服务器中HDFS文件目录下的同步数据的访问,进而实现HADOOP服务器和Oracle服务器之间的数据同步,如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC(RemoteProcedureCallProtocol,远程过程调用协议)能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,则无需将大量的数据从HADOOP服务器中复制到Oracle服务器中进行存储,从而解决数据同步过程复杂、效率低的问题。在上述技术方案中,具体地可以通过HADOOP的GET命令(一种取值命令)将HDFS文件目录下的同步数据同步至NFS共享目录下。在上述任一技术方案中,优选地,还包括:检测所述HDFS文件目录是否有更新;当检测到所述HDFS文件目录有更新时,获取所述HDFS文件目录下的更新数据;将所述更新数据同步至所述NFS共享目录下,以同步更新所述NFS共享目录和所述外部表。在该技术方案中,当初始数据同步结束后,维护过程中需要检测获取到的HDFS文件目录是否有更新,如有更新需要将其下的更新数据增量同步到NFS共享目录下,实现HDFS文件目录和NFS共享目录的同步更新,并依据NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,在更新NFS共享目录的同时实现对外部表的更新,以使Oracle服务器访问的数据为最新数据,从而实现HADOOP服务器和Oracle服务器之间的数据更新同步。在上述任一技术方案中,优选地,在所述获取所述HADOOP服务器中的同步数据的HDFS文件目录的步骤中,还包括:记录所述HDFS文件目录的创建时间,并将所述创建时间作为更新基准时间;以及所述检测所述HDFS文件目录是否有更新的步骤,具体包括:按周期获取所述HDFS文件目录的更新时间;在每个所述周期中,若判定所述HDFS文件目录的更新时间相较于所述更新基准时间有变化,则确定所述HDFS文件目录有更新;将所述HDFS文件目录的更新时间记录为所述HDFS文件目录的更新基准时间。在该技术方案中,当获取HADOOP服务器中需要同步到Oracle服务器中的同步数据的HDFS文件目录时需要记录该HDFS文件目录的创建时间,并将其作为更新基准时间,以用于根据HDFS文件目录的更新时间变化情况确定HDFS文件目录下的数据是否有更新,具体地,可以按一定的预设的周期,比如一天、一周、半个月等,获取该HDFS文件目录的更新时间,并将其与更新基准时间做比较,如有更新时间相较于当前的更新基准时间有变化,则说明HDFS文件目录有更新,如此一方面可以有效地监控HDFS文件目录下的数据更新情况,另一方面也可以避免频繁地获取HDFS文件目录的更新时间而导致增加功耗;进一步地,需要将HDFS文件目录的更新时间更新为其更新基准时间,以作为下一周期的比较基准。根据本发明的第二方面,提出了一种数据同步装置,用于HADOOP服务器,所述装置包括:获取模块,用于获取所述HADOOP服务器中的同步数据的HDFS文件目录;数据同步模块,用于将所述HDFS文件目录下的所述同步数据同步至第三方服务器中的NFS共享目录下,其中,所述NFS共享目录与Oracle服务器中的外部表存在一一映射关系,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,通过在HADOOP服务器和Oracle服务器之间挂载NFS共享目录的方式,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的,具体地,获取HADOOP服务器中需要同步到Oracle服务器中的同步数据的HDFS文件目录,并将HDFS文件目录下的同步数据同步到NFS共享目录下,进而通过NFS共享目录与Oracle服务器中的外部表之间的一一对应关系,使Oracle服务器通过读取外部表访问NFS共享目录下的同步数据,即实现对HADOOP服务器中HDFS文件目录下的同步数据的访问,进而实现HADOOP服务器和Oracle服务器之间的数据同步,如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,则无需将大量的数据从HADOOP服务器中复制到Oracle服务器中进行存储,从而解决数据同步过程复杂、效率低的问题。在上述技术方案中,具体地数据同步模块可以通过HADOOP的GET命令将HDFS文件目录下的同步数据同步至NFS共享目录下。在上述任一技术方案中,优选地,还包括:检测模块,用于检测所述HDFS文件目录是否有更新;更新模块,用于当所述检测模块检测到所述HDFS文件目录有更新时,获取所述HDFS文件目录下的更新数据;以及所述数据同步模块还用于:将所述更新数据同步至所述NFS共享目录下,以同步更新所述NFS共享目录和所述外部表。在该技术方案中,当初始数据同步结束后,维护过程中需要检测获取到的HDFS文件目录是否有更新,如有更新需要将其下的更新数据增量同步到NFS共享目录下,实现HDFS文件目录和NFS共享目录的同步更新,并依据NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,在更新NFS共享目录的同时实现对外部表的更新,以使Oracle服务器访问的数据为最新数据,从而实现HADOOP服务器和Oracle服务器之间的数据更新同步。在上述任一技术方案中,优选地,还包括:记录模块,用于在所述获取模块获取所述HADOOP服务器中的同步数据的HDFS文件目录时,记录所述HDFS文件目录的创建时间,并将所述创建时间作为更新基准时间;以及所述检测模块具体包括:获取子模块,用于按周期获取所述HDFS文件目录的更新时间;确定子模块,用于在每个所述周期中,若判定所述HDFS文件目录的更新时间相较于所述更新基准时间有变化,则确定所述HDFS文件目录有更新;以及所述记录模块还用于:将所述HDFS文件目录的更新时间记录为所述HDFS文件目录的更新基准时间。在该技术方案中,当获取HADOOP服务器中需要同步到Oracle服务器中的同步数据的HDFS文件目录时需要记录该HDFS文件目录的创建时间,并将其作为更新基准时间,以用于根据HDFS文件目录的更新时间变化情况确定HDFS文件目录下的数据是否有更新,具体地,可以按一定的预设的周期,比如一天、一周、半个月等,获取该HDFS文件目录的更新时间,并将其与更新基准时间做比较,如有更新时间相较于当前的更新基准时间有变化,则说明HDFS文件目录有更新,如此一方面可以有效地监控HDFS文件目录下的数据更新情况,另一方面也可以避免频繁地获取HDFS文件目录的更新时间而导致增加功耗;进一步地,需要将HDFS文件目录的更新时间更新为其更新基准时间,以作为下一周期的比较基准。根据本发明的第三方面,提出了一种HADOOP服务器,包括:如上第二方面实施例中任一项所述的数据同步装置,因此,该HADOOP服务器具有如上第二方面的实施例中任一项所述的数据同步装置的所有有益效果,在此不再赘述。根据本发明第四方面,提出了一种数据同步方法,用于第三方服务器,所述方法包括:接收HADOOP服务器中的HDFS文件目录下的同步数据;将所述同步数据存储在所述第三方服务器中的NFS共享目录下;建立所述NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,当接收到来自HADOOP服务器中的HDFS文件目录下的需要同步到Oracle服务器中同步数据时,建立NFS共享目录,并将同步数据存储在该NFS共享目录下,同时建立该NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,即实现在HADOOP服务器和Oracle服务器之间挂载NFS共享目录,则Oracle服务器可以通过读取外部表访问NFS共享目录下的同步数据,即实现对HADOOP服务器中HDFS文件目录下的同步数据的访问,进而实现HADOOP服务器和Oracle服务器之间的数据同步如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的。在上述技术方案中,优选地,还包括:检测是否接收到来自所述HDFS文件目录下的更新数据;若接收到所述更新数据,则将所述更新数据更新存储至所述NFS共享目录下,并更新所述NFS共享目录,以同步更新所述Oracle服务器中的所述外部表。在该技术方案中,可以监测是否接收到来自HADOOP服务器中的HDFS文件目录下的更新数据,并在接收到更新数据时,将其存储至NFS共享目录下,以实现对NFS共享目录的更新,使其与HADOOP服务器中的更新后的HDFS文件目录保持一致、以及目录下存储的数据也保持一致,则在更新NFS共享目录的同时也达到了更新与其存在一一映射关系的外部表的目的,从而使Oracle服务器通过读取更新的外部表可以访问到HADOOP服务器中的最新数据,简单高效。在上述任一技术方案中,优选地,所述第三方服务器包括NFS服务器。根据本发明的第五方面,提出了一种数据同步装置,用于第三方服务器,所述装置包括:接收模块,用于接收HADOOP服务器中的HDFS文件目录下的同步数据;存储模块,用于将所述接收模块接收到的所述同步数据存储在所述第三方服务器中的NFS共享目录下;创建模块,用于建立所述NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,当接收到来自HADOOP服务器中的HDFS文件目录下的需要同步到Oracle服务器中同步数据时,建立NFS共享目录,并将同步数据存储在该NFS共享目录下,同时建立该NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,即实现在HADOOP服务器和Oracle服务器之间挂载NFS共享目录,则Oracle服务器可以通过读取外部表访问NFS共享目录下的同步数据,即实现对HADOOP服务器中HDFS文件目录下的同步数据的访问,进而实现HADOOP服务器和Oracle服务器之间的数据同步如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的。在上述技术方案中,优选地,还包括:检测模块,用于检测所述接收模块是否接收到来自所述HDFS文件目录下的更新数据;更新模块,用于当所述检测模块检测到所述接收模块接收到所述更新数据时,将所述更新数据更新存储至所述NFS共享目录下,并更新所述NFS共享目录,以同步更新所述Oracle服务器中的所述外部表。在该技术方案中,可以监测是否接收到来自HADOOP服务器中的HDFS文件目录下的更新数据,并在接收到更新数据时,将其存储至NFS共享目录下,以实现对NFS共享目录的更新,使其与HADOOP服务器中的更新后的HDFS文件目录保持一致、以及目录下存储的数据也保持一致,则在更新NFS共享目录的同时也达到了更新与其存在一一映射关系的外部表的目的,从而使Oracle服务器通过读取更新的外部表可以访问到HADOOP服务器中的最新数据,简单高效。在上述任一技术方案中,所述第三方服务器包括NFS服务器。根据本发明的第六方面,提出了一种第三方服务器,包括:如上第五方面实施例中任一项所述的数据同步装置,因此,因此,该第三方服务器具有如上第五方面的实施例中任一项所述的数据同步装置的所有有益效果,在此不再赘述。根据本发明的第七方面,提出了一种数据同步方法,用于Oracle服务器,所述方法包括:创建外部表;建立所述外部表与第三方服务器中的NFS共享目录之间的一一映射关系,其中,所述NFS共享目录下存储有HADOOP服务器中HDFS文件目录下的同步数据;将所述外部表中的数据存储至所述Oracle服务器的业务表中,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,通过在Oracle服务器中创建外部表,进而建立该外部表与第三方服务器中的存储有HADOOP服务器中HDFS文件目录下的同步数据的NFS共享目录之间的一一映射关系,达到在HADOOP服务器和Oracle服务器之间挂载NFS共享目录的目的,并通过将外部表中的数据插入存储至Oracle服务器的业务表中的方式,访问HADOOP服务器中的数据,即实现HADOOP服务器和Oracle服务器之间的数据同步,如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的。在上述技术方案中,可以通过SQL(StructuredQueryLanguage,结构化查询语言)命令读取与NFS共享目录存在一一映射关系的外部表的数据,并将外部表的数据插入存储到对应的Oracle服务器的业务表中,以实现HADOOP服务器和Oracle服务器之间的数据同步。在上述任一技术方案中,优选地,还包括:当所述NFS共享目录有更新时,同步更新所述外部表中的数据;以及按周期检测所述外部表中的数据是否有更新;在每个所述周期中,当检测到所述外部表中的数据有更新时,读取所述外部表中的更新数据,并将所述更新数据更新存储至所述业务表中。在该技术方案中,当与外部表存在一一映射关系的NFS共享目录有更新时,则同步更新该外部表中的数据,以使Oracle服务器通过读取更新的外部表可以访问到HADOOP服务器中的最新数据,简单高效;进一步地,可以按一定的预设的周期比如一天、一周、半个月等,检测该外部表是否有更新,并在有更新时将其更新的数据更新存储至对应的Oracle服务器的业务表中,如此一方面可以有效地监控外部表中的数据更新情况,另一方面也可以避免频繁地读取外部表而导致增加功耗。根据本发明的第八方面,提出了一种数据同步装置,用于Oracle服务器,所述装置包括:创建模块,用于创建外部表;关联模块,用于建立所述创建模块创建的所述外部表与第三方服务器中的NFS共享目录之间的一一映射关系,其中,所述NFS共享目录下存储有HADOOP服务器中HDFS文件目录下的同步数据;存储模块,用于将将所述外部表中的数据存储至所述Oracle服务器的业务表中,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,通过在Oracle服务器中创建外部表,进而建立该外部表与第三方服务器中的存储有HADOOP服务器中HDFS文件目录下的同步数据的NFS共享目录之间的一一映射关系,达到在HADOOP服务器和Oracle服务器之间挂载NFS共享目录的目的,并通过将外部表中的数据插入存储至Oracle服务器的业务表中的方式,访问HADOOP服务器中的数据,即实现HADOOP服务器和Oracle服务器之间的数据同步,如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的。在上述技术方案中,存储模块可以通过SQL命令读取与NFS共享目录存在一一映射关系的外部表的数据,并将外部表的数据插入存储到对应的Oracle服务器的业务表中,以实现HADOOP服务器和Oracle服务器之间的数据同步。在上述任一技术方案中,优选地,还包括:更新模块,用于当所述NFS共享目录有更新时,同步更新所述外部表中的数据;检测模块,用于按周期检测所述外部表中的数据是否有更新;以及所述存储模块还用于:在每个所述周期中,当所述检测模块检测到所述外部表中的数据有更新时,读取所述外部表中的更新数据,并将所述更新数据更新存储至所述业务表中。在该技术方案中,当与外部表存在一一映射关系的NFS共享目录有更新时,则同步更新该外部表中的数据,以使Oracle服务器通过读取更新的外部表可以访问到HADOOP服务器中的最新数据,简单高效;进一步地,可以按一定的预设的周期比如一天、一周、半个月等,检测该外部表是否有更新,并在有更新时将其更新的数据更新存储至对应的Oracle服务器的业务表中,如此一方面可以有效地监控外部表中的数据更新情况,另一方面也可以避免频繁地读取外部表而导致增加功耗。根据本发明的第九方面,提出了一种Oracle服务器,包括:如上第八方面实施例中任一项所述的数据同步装置,因此,该Oracle服务器具有如上第八方面的实施例中任一项所述的数据同步装置的所有有益效果,在此不再赘述。通过以上技术方案,可以简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中,从而提高了数据同步的效率。附图说明图1示出了根据本发明的第一实施例的数据同步方法的流程示意图;图2示出了根据本发明的第一实施例的数据同步装置的示意框图;图3示出了图2所示的检测模块的示意框图;图4示出了根据本发明的第二实施例的数据同步方法的流程示意图;图5示出了根据本发明的第二实施例的数据同步装置的示意框图;图6示出了根据本发明的第三实施例的数据同步方法的流程示意图;图7示出了根据本发明的第三实施例的数据同步装置的示意框图;图8示出了根据本发明的第四实施例的数据同步方法的流程示意图。具体实施方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。图1示出了根据本发明的第一实施例的数据同步方法的流程示意图。如图1所示,根据本发明的第一实施例的数据同步方法,用于HADOOP服务器,所述方法具体包括以下流程步骤:步骤102,获取所述HADOOP服务器中的同步数据的HDFS文件目录。步骤104,将所述HDFS文件目录下的所述同步数据同步至第三方服务器中的NFS共享目录下,其中,所述NFS共享目录与Oracle服务器中的外部表存在一一映射关系,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,通过在HADOOP服务器和Oracle服务器之间挂载NFS共享目录的方式,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的,具体地,获取HADOOP服务器中需要同步到Oracle服务器中的同步数据的HDFS文件目录,并将HDFS文件目录下的同步数据同步到NFS共享目录下,进而通过NFS共享目录与Oracle服务器中的外部表之间的一一对应关系,使Oracle服务器通过读取外部表访问NFS共享目录下的同步数据,即实现对HADOOP服务器中HDFS文件目录下的同步数据的访问,进而实现HADOOP服务器和Oracle服务器之间的数据同步,如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,则无需将大量的数据从HADOOP服务器中复制到Oracle服务器中进行存储,从而解决数据同步过程复杂、效率低的问题。进一步地,在上述步骤104中,具体地可以通过HADOOP的GET命令将HDFS文件目录下的同步数据同步至NFS共享目录下。进一步,本发明的第一实施例的数据同步方法还包括对HDFS文件目录的更新进行监控的相关方法流程步骤,具体包括:检测所述HDFS文件目录是否有更新。当检测到所述HDFS文件目录有更新时,获取所述HDFS文件目录下的更新数据。将所述更新数据同步至所述NFS共享目录下,以同步更新所述NFS共享目录和所述外部表。在该技术方案中,当初始数据同步结束后,维护过程中需要检测获取到的HDFS文件目录是否有更新,如有更新需要将其下的更新数据增量同步到NFS共享目录下,实现HDFS文件目录和NFS共享目录的同步更新,并依据NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,在更新NFS共享目录的同时实现对外部表的更新,以使Oracle服务器访问的数据为最新数据,从而实现HADOOP服务器和Oracle服务器之间的数据更新同步。在上述任一实施例中,执行所述步骤102时,还包括:记录所述HDFS文件目录的创建时间,并将所述创建时间作为更新基准时间。进一步地,检测所述HDFS文件目录是否有更新的步骤具体包括以下流程步骤:按周期获取所述HDFS文件目录的更新时间。在每个所述周期中,若判定所述HDFS文件目录的更新时间相较于所述更新基准时间有变化,则确定所述HDFS文件目录有更新。将所述HDFS文件目录的更新时间记录为所述HDFS文件目录的更新基准时间。在该技术方案中,当获取HADOOP服务器中需要同步到Oracle服务器中的同步数据的HDFS文件目录时需要记录该HDFS文件目录的创建时间,并将其作为更新基准时间,以用于根据HDFS文件目录的更新时间变化情况确定HDFS文件目录下的数据是否有更新,具体地,可以按一定的预设的周期,比如一天、一周、半个月等,获取该HDFS文件目录的更新时间,并将其与更新基准时间做比较,如有更新时间相较于当前的更新基准时间有变化,则说明HDFS文件目录有更新,如此一方面可以有效地监控HDFS文件目录下的数据更新情况,另一方面也可以避免频繁地获取HDFS文件目录的更新时间而导致增加功耗;进一步地,需要将HDFS文件目录的更新时间更新为其更新基准时间,以作为下一周期的比较基准。图2示出了根据本发明的第一实施例的数据同步装置的示意框图。如图2所示,根据本发明的第一实施例的数据同步装置200,用于HADOOP服务器,所述装置200包括:获取模块202和数据同步模块204。其中,所述获取模块202用于获取所述HADOOP服务器中的同步数据的HDFS文件目录;所述数据同步模块204用于将所述HDFS文件目录下的所述同步数据同步至第三方服务器中的NFS共享目录下,其中,所述NFS共享目录与Oracle服务器中的外部表存在一一映射关系,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,通过在HADOOP服务器和Oracle服务器之间挂载NFS共享目录的方式,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的,具体地,获取HADOOP服务器中需要同步到Oracle服务器中的同步数据的HDFS文件目录,并将HDFS文件目录下的同步数据同步到NFS共享目录下,进而通过NFS共享目录与Oracle服务器中的外部表之间的一一对应关系,使Oracle服务器通过读取外部表访问NFS共享目录下的同步数据,即实现对HADOOP服务器中HDFS文件目录下的同步数据的访问,进而实现HADOOP服务器和Oracle服务器之间的数据同步,如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,则无需将大量的数据从HADOOP服务器中复制到Oracle服务器中进行存储,从而解决数据同步过程复杂、效率低的问题。在上述技术方案中,具体地数据同步模块204可以通过HADOOP的GET命令将HDFS文件目录下的同步数据同步至NFS共享目录下。在上述任一技术方案中,优选地,所述数据同步装置200还包括:检测模块206和更新模块208。其中,所述检测模块206用于检测所述HDFS文件目录是否有更新;所述更新模块208用于当所述检测模块206检测到所述HDFS文件目录有更新时,获取所述HDFS文件目录下的更新数据。以及所述数据同步模块204还用于:将所述更新数据同步至所述NFS共享目录下,以同步更新所述NFS共享目录和所述外部表。在该技术方案中,当初始数据同步结束后,维护过程中需要检测获取到的HDFS文件目录是否有更新,如有更新需要将其下的更新数据增量同步到NFS共享目录下,实现HDFS文件目录和NFS共享目录的同步更新,并依据NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,在更新NFS共享目录的同时实现对外部表的更新,以使Oracle服务器访问的数据为最新数据,从而实现HADOOP服务器和Oracle服务器之间的数据更新同步。在上述任一技术方案中,优选地,所述数据同步装置200还包括:记录模块210,用于在所述获取模块202获取所述HADOOP服务器中的同步数据的HDFS文件目录时,记录所述HDFS文件目录的创建时间,并将所述创建时间作为更新基准时间。进一步地,如图3所示,所述检测模块206具体包括:获取子模块2062和确定子模块2064。其中,所述获取子模块2062用于按周期获取所述HDFS文件目录的更新时间;所述确定子模块2064用于在每个所述周期中,若判定所述HDFS文件目录的更新时间相较于所述更新基准时间有变化,则确定所述HDFS文件目录有更新。以及所述记录模块210还用于:将所述HDFS文件目录的更新时间记录为所述HDFS文件目录的更新基准时间。在该技术方案中,当获取HADOOP服务器中需要同步到Oracle服务器中的同步数据的HDFS文件目录时需要记录该HDFS文件目录的创建时间,并将其作为更新基准时间,以用于根据HDFS文件目录的更新时间变化情况确定HDFS文件目录下的数据是否有更新,具体地,可以按一定的预设的周期,比如一天、一周、半个月等,获取该HDFS文件目录的更新时间,并将其与更新基准时间做比较,如有更新时间相较于当前的更新基准时间有变化,则说明HDFS文件目录有更新,如此一方面可以有效地监控HDFS文件目录下的数据更新情况,另一方面也可以避免频繁地获取HDFS文件目录的更新时间而导致增加功耗;进一步地,需要将HDFS文件目录的更新时间更新为其更新基准时间,以作为下一周期的比较基准。作为本发明的一个实施例,可以将上述第一实施例中任一所述的数据同步装置200应用于HADOOP服务器中。图4示出了根据本发明的第二实施例的数据同步方法的流程示意图。如图4所示,根据本发明的第二实施例的数据同步方法,用于第三方服务器,所述方法具体包括以下流程步骤:步骤402,接收HADOOP服务器中的HDFS文件目录下的同步数据;将所述同步数据存储在所述第三方服务器中的NFS共享目录下。步骤404,建立所述NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,当接收到来自HADOOP服务器中的HDFS文件目录下的需要同步到Oracle服务器中同步数据时,建立NFS共享目录,并将同步数据存储在该NFS共享目录下,同时建立该NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,即实现在HADOOP服务器和Oracle服务器之间挂载NFS共享目录,则Oracle服务器可以通过读取外部表访问NFS共享目录下的同步数据,即实现对HADOOP服务器中HDFS文件目录下的同步数据的访问,进而实现HADOOP服务器和Oracle服务器之间的数据同步如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的。进一步地,本发明的第二实施例的数据同步方法还包括以下对NFS共享目录进行同步更新的步骤:检测是否接收到来自所述HDFS文件目录下的更新数据。若接收到所述更新数据,则将所述更新数据更新存储至所述NFS共享目录下,并更新所述NFS共享目录,以同步更新所述Oracle服务器中的所述外部表。在该技术方案中,可以监测是否接收到来自HADOOP服务器中的HDFS文件目录下的更新数据,并在接收到更新数据时,将其存储至NFS共享目录下,以实现对NFS共享目录的更新,使其与HADOOP服务器中的更新后的HDFS文件目录保持一致、以及目录下存储的数据也保持一致,则在更新NFS共享目录的同时也达到了更新与其存在一一映射关系的外部表的目的,从而使Oracle服务器通过读取更新的外部表可以访问到HADOOP服务器中的最新数据,简单高效。在上述任一技术方案中,优选地,所述第三方服务器包括NFS服务器。图5示出了根据本发明的第二实施例的数据同步装置的示意框图。如图5所示,根据本发明的第二实施例的数据同步装置500,用于第三方服务器,所述装置500包括:接收模块502、存储模块504和创建模块506。其中,所述接收模块502用于接收HADOOP服务器中的HDFS文件目录下的同步数据;所述存储模块504用于将所述接收模块502接收到的所述同步数据存储在所述第三方服务器中的NFS共享目录下;所述创建模块506用于建立所述NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,当接收到来自HADOOP服务器中的HDFS文件目录下的需要同步到Oracle服务器中同步数据时,建立NFS共享目录,并将同步数据存储在该NFS共享目录下,同时建立该NFS共享目录与Oracle服务器中的外部表之间的一一映射关系,即实现在HADOOP服务器和Oracle服务器之间挂载NFS共享目录,则Oracle服务器可以通过读取外部表访问NFS共享目录下的同步数据,即实现对HADOOP服务器中HDFS文件目录下的同步数据的访问,进而实现HADOOP服务器和Oracle服务器之间的数据同步如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的。进一步地,本发明的第二实施例中的数据同步装置500还包括:检测模块508和更新模块510。其中,所述检测模块508用于检测所述接收模块502是否接收到来自所述HDFS文件目录下的更新数据;所述更新模块510用于当所述检测模块508检测到所述接收模块502接收到所述更新数据时,将所述更新数据更新存储至所述NFS共享目录下,并更新所述NFS共享目录,以同步更新所述Oracle服务器中的所述外部表。在该技术方案中,可以监测是否接收到来自HADOOP服务器中的HDFS文件目录下的更新数据,并在接收到更新数据时,将其存储至NFS共享目录下,以实现对NFS共享目录的更新,使其与HADOOP服务器中的更新后的HDFS文件目录保持一致、以及目录下存储的数据也保持一致,则在更新NFS共享目录的同时也达到了更新与其存在一一映射关系的外部表的目的,从而使Oracle服务器通过读取更新的外部表可以访问到HADOOP服务器中的最新数据,简单高效。在上述任一技术方案中,所述第三方服务器包括NFS服务器。作为本发明的一个实施例,可以将上述第二实施例中任一所述的数据同步装置500应用于第三方服务器中。图6示出了根据本发明的第三实施例的数据同步方法的流程示意图。如图6所示,根据本发明的第三实施例的数据同步方法,用于Oracle服务器,所述方法具体包括以下流程步骤:步骤602,创建外部表。步骤604,建立所述外部表与第三方服务器中的NFS共享目录之间的一一映射关系,其中,所述NFS共享目录下存储有HADOOP服务器中HDFS文件目录下的同步数据。步骤606,将所述外部表中的数据存储至所述Oracle服务器的业务表中,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,通过在Oracle服务器中创建外部表,进而建立该外部表与第三方服务器中的存储有HADOOP服务器中HDFS文件目录下的同步数据的NFS共享目录之间的一一映射关系,达到在HADOOP服务器和Oracle服务器之间挂载NFS共享目录的目的,并通过将外部表中的数据插入存储至Oracle服务器的业务表中的方式,访问HADOOP服务器中的数据,即实现HADOOP服务器和Oracle服务器之间的数据同步,如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的。进一步地,在上述步骤606中,可以通过SQL命令读取与NFS共享目录存在一一映射关系的外部表的数据,并将外部表的数据插入存储到对应的Oracle服务器的业务表中,以实现HADOOP服务器和Oracle服务器之间的数据同步。进一步地,本发明的第三实施例的数据同步方法还包括对外部表更新及更新其在业务表中的存储的步骤,具体包括:当所述NFS共享目录有更新时,同步更新所述外部表中的数据。按周期检测所述外部表中的数据是否有更新。在每个所述周期中,当检测到所述外部表中的数据有更新时,读取所述外部表中的更新数据,并将所述更新数据更新存储至所述业务表中。在该技术方案中,当与外部表存在一一映射关系的NFS共享目录有更新时,则同步更新该外部表中的数据,以使Oracle服务器通过读取更新的外部表可以访问到HADOOP服务器中的最新数据,简单高效;进一步地,可以按一定的预设的周期比如一天、一周、半个月等,检测该外部表是否有更新,并在有更新时将其更新的数据更新存储至对应的Oracle服务器的业务表中,如此一方面可以有效地监控外部表中的数据更新情况,另一方面也可以避免频繁地读取外部表而导致增加功耗。图7示出了根据本发明的第三实施例的数据同步装置的示意框图。如图7所示,根据本发明的第三实施例的数据同步装置700,用于Oracle服务器,所述装置700包括:创建模块702、关联模块704和存储模块706。其中,所述创建模块702用于创建外部表;所述关联模块704用于建立所述创建模块702创建的所述外部表与第三方服务器中的NFS共享目录之间的一一映射关系,其中,所述NFS共享目录下存储有HADOOP服务器中HDFS文件目录下的同步数据;所述存储模块706用于将将所述外部表中的数据存储至所述Oracle服务器的业务表中,以实现所述同步数据从所述HADOOP服务器至所述Oracle服务器的同步。在该技术方案中,通过在Oracle服务器中创建外部表,进而建立该外部表与第三方服务器中的存储有HADOOP服务器中HDFS文件目录下的同步数据的NFS共享目录之间的一一映射关系,达到在HADOOP服务器和Oracle服务器之间挂载NFS共享目录的目的,并通过将外部表中的数据插入存储至Oracle服务器的业务表中的方式,访问HADOOP服务器中的数据,即实现HADOOP服务器和Oracle服务器之间的数据同步,如此,通过利用NFS允许HADOOP服务器和Oracle服务器之间可以通过网络共享资源的特点,即NFS容许不同的硬件及操作系统通过一组RPC能够彼此共享相同的数据,以及通过外部表访问HADOOP服务器中的同步数据,达到简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中的目的。在上述技术方案中,存储模块706可以通过SQL命令读取与NFS共享目录存在一一映射关系的外部表的数据,并将外部表的数据插入存储到对应的Oracle服务器的业务表中,以实现HADOOP服务器和Oracle服务器之间的数据同步。进一步地,本发明的第三实施例的数据同步装置700还包括:更新模块708和检测模块710。其中,所述更新模块708用于当所述NFS共享目录有更新时,同步更新所述外部表中的数据;所述检测模块710用于按周期检测所述外部表中的数据是否有更新。进一步地,所述存储模块706还用于:在每个所述周期中,当所述检测模块710检测到所述外部表中的数据有更新时,读取所述外部表中的更新数据,并将所述更新数据更新存储至所述业务表中。在该技术方案中,当与外部表存在一一映射关系的NFS共享目录有更新时,则同步更新该外部表中的数据,以使Oracle服务器通过读取更新的外部表可以访问到HADOOP服务器中的最新数据,简单高效;进一步地,可以按一定的预设的周期比如一天、一周、半个月等,检测该外部表是否有更新,并在有更新时将其更新的数据更新存储至对应的Oracle服务器的业务表中,如此一方面可以有效地监控外部表中的数据更新情况,另一方面也可以避免频繁地读取外部表而导致增加功耗。作为本发明的一个实施例,可以将上述第三实施例中任一所述的数据同步装置700应用于Oracle服务器中。下面结合具体实施例对本发明的技术方案进行说明,具体地本发明的数据同步系统包括:HADOOP服务器、第三方服务器(比如NFS服务器)和Oracle服务器,通过在第三方服务器上创建挂载在HADOOP服务器和Oracle服务器之间的NFS共享目录,实现HADOOP服务器和Oracle服务器之间的数据同步,具体地:从HADOOP服务器上获取要抽取数据(即同步数据)的HDFS文件目录,在Oracle服务器和HADOOP服务器之间挂载一个NFS共享目录;在HADOOP服务器上用GET命令把HDFS文件目录下的文件数据同步到NFS共享目录下;在Oracle服务器上创建相应的外部表,外部表的文件路径对应NFS共享目录,即外部表与NFS共享目录之间存在一一映射关系;在HADOOP服务器上用定时任务去检查HDFS文件目录的最后更新时间是否有变化,比如通过HADOOPSTAT命令(用于显示文件的状态信息),如果有变化,则定时同步更新NFS共享目录和HDFS文件目录,进一步同步更新外部表,以使Oracle服务器根据外部表中的数据变化,定时用SQL命令读取外部表的数据以插入到对应Oracle服务器的业务表中进行更新。在初始将HADOOP服务器中的数据同步到Oracle服务器中后,可以通过以下方式确保二者之间的同步更新:定时通过HADOOPSTAT命令检查HDFS文件目录的最后更新时间,作为数据是否需要增量同步的判断条件;通过NFS共享目录的方式同步变化的HDFS文件目录下的文件;通过Oracleexternaltable(外部表)读取NFS共享目录上增量的HDFS文件目录下的更新的文件;通过查询Oracleexternaltable更新Oracleexternaltable服务器的堆表(即业务表)。具体流程步骤如图8所示,包括:步骤802,定时检查HDFS文件目录是否有修改变化。步骤804,若有变化,则通过HDOOP平台的GET命令将HDFS文件目录下有修改的文件到NFS共享目录下。步骤806,同步更新NFS共享目录和外部表。步骤808,Oracle服务器通过外部表访问NFS共享目录下的文件。步骤810,Oracle服务器通过读取外部表中的数据更新自身的业务表。以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,可以简单快捷地将HADOOP服务器中的数据同步到Oracle服务器中,从而提高了数据同步的效率。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1