CN107463610B - 一种数据入库方法及装置 - Google Patents
一种数据入库方法及装置 Download PDFInfo
- Publication number
- CN107463610B CN107463610B CN201710503476.0A CN201710503476A CN107463610B CN 107463610 B CN107463610 B CN 107463610B CN 201710503476 A CN201710503476 A CN 201710503476A CN 107463610 B CN107463610 B CN 107463610B
- Authority
- CN
- China
- Prior art keywords
- data
- warehousing
- real
- mode
- time
- 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.)
- Active
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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/2372—Updates performed during offline database operations
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据入库方法及装置。其中,方法包括如下的步骤:根据数据源的来源信息,确定入库模式;若所述入库模式为实时模式,则在满足实时入库条件时对所述数据源进行实时入库处理;若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理。本发明实施例融合实时入库和批量离线入库两种数据仓库的更新方式,同时通过实时和离线入库模式的切换避免了因两种入库模式的相互干扰导致的数据丢失和重复等问题。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据入库方法及装置。
背景技术
ETL(Extract-Transform-Load,抽取-转换-加载)是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
现有技术中,数据仓库的更新几乎都是基于批量离线处理的工作模式,即数据源通常按每天、每周或每月这种固定的周期加载进入数据仓库。这就导致那些需要实时加载进入数据仓库的变更数据无法实时加载进入数据仓库,从而导致无法提供这些变更数据的实时查询。
可见,现有技术只能支持离线批量更新数据仓库的场景,而无法支持实时更新数据仓库的场景。
发明内容
现有技术中,ETL最终的数据仓库主要以Hadoop为主,由于Hadoop项目的核心子项目HDFS(Hadoop Distributed File System,分布式文件系统)无法提供实时修改和写入数据的功能。若是从多个分散的数据源批量离线抽取数据,只有在将抽取到的数据进行聚合并生成完整的数据信息之后,才能加载到数据仓库中。可见,现有技术中,每次必须是以全量数据替换或放入HDFS中,无法做到部分字段的精细化更新,也无法支持实时更新数据仓库的场景,可见现有数据入库方式较为单一。
于是,在本发明的一个实施例中,提供了一种数据入库方法。该方法包括:根据数据源的来源信息,确定入库模式;若所述入库模式为实时模式,则在满足实时入库条件时对所述数据源进行实时入库处理;若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理。
可选地,所述根据数据源的来源信息,确定入库模式,包括:若所述数据源来自消息队列,则确定所述入库模式为实时模式;若所述数据源来自关系型数据库,则确定所述入库模式为批量离线模式。
可选地,所述方法,还包括:监测是否存在有正在进行批量离线数据入库处理的数据引擎;若没有,则满足所述实时入库条件。
可选地,对所述数据源进行实时入库处理,包括:从所述数据源中抽取目标数据;对所述目标数据进行清洗处理;将清洗处理后的目标数据转换为预设格式;根据所述目标数据的名称及时间信息,确定所述目标数据的主键或联合主键;根据所述主键或所述联合主键,将所述预设格式的所述目标数据添加至所述主键或所述联合主键对应数据行的部分列中。
可选地,对所述数据源进行批量离线数据入库处理,包括:从所述数据源中抽取目标数据;对所述目标数据进行清洗处理;将清洗处理后的目标数据转换为预设格式;对所述预设格式的所述目标数据进行聚合处理,以得到全量数据信息;将所述全量数据信息作为一个数据行添加至数据仓库中。
可选地,所述方法,还包括:在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至特定文件夹,以供下游第一数据引擎离线下载;和/或在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至分布式文件系统,以供下游第二数据引擎离线下载。
可选地,所述方法,还包括:基于已入库的数据创建外部表,以对外提供查询;
可选地,所述方法,还包括:对所述外部表进行内部表的转化处理。
在本发明的另一实施例中,提供了一种数据入库装置。该装置包括:确定模块,用于根据数据源的来源信息,确定入库模式。第一处理模块,用于若所述入库模式为实时模式,则在满足实时入库条件时对所述数据源进行实时入库处理。第二处理模块,用于若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理。
在本发明的又一实施例中,提供了一种电子设备。该电子设备包括处理器和存储器,所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述数据入库方法中的步骤。
在本发明的又一实施例中,提供了一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述数据入库方法中的步骤。
本发明实施例提供的技术方案,根据数据源的来源信息,判断该批次数据源加载进入数据仓库的方式是实时入库还是批量离线入库。若为批量离线方式,则需要在关闭实时入库通道之后才能进行批量离线数据入库处理。若为实时入库方式,则需要判断当前是否满足实时入库条件,若不满足则实时入库的处理需要进行堵塞。与现有技术中只能进行离线批量更新数据仓库相比,本发明实施例融合实时入库和批量离线入库两种数据仓库的更新方式,不仅支持了实时更新数据仓库的场景,还通过实时和离线入库模式的切换避免了因两种入库模式的相互干扰导致的数据丢失和重复等问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为实现本发明实施例提供的数据入库方法的基础系统架构原理示意图;
图2为本发明一实施例提供的数据入库方法的流程示意图;
图3为本发明另一实施例提供的数据入库方法的流程示意图;
图4为本发明提供的一种系统架构的具体实例示意图;
图5为本发明一实施例提供的数据入库装置的结构框图;
图6为本发明一实施例提供的电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明各实施例提供的数据入库方法是基于图1所示的系统架构实现的。如图1所示,该系统架构包括:业务系统数据库、Mysql二进制日志、分布式数据库(Mysql_1,Mysql_2,……Mysql_n)、消息队列(MQ)、同时支持实时和离线入库的数据引擎(如SQL On Hbase数据引擎),以及下游的至少一个数据引擎(如Greenplum数据引擎和Impala数据引擎)等等。本发明各实施例提供的所述数据入库方法的执行主体是同时支持实时和离线入库的数据引擎。基于下表1的内容可知,该同时支持实时和离线入库的数据引擎可以是SQL On Hbase数据引擎、Greenplum数据引擎、Mysql/Postgresql引擎等等。
表1、各数据引擎的性能对照表
对于离线数据更新的场景,历史数据更新频次少,但读取多;而实时数据更新的场景,更新的数量少,但频次多。下表2清晰的展现出两种数据更新类型的特点:
表2、两种数据更新类型的对比
对于实时数据源,从上述表1可知,SQL on Hadoop和GreenPlum都是支持的。实时场景是支持数据部分字段可以进行更新的基础,首先类似GreenPlum这种引擎是支持直接入库使用的;类似SQL on Hbase也可以直接入库使用并能对外部进行查询;而Impala这种引擎则需要定期的同步全量更新。因此,本发明实施例提供的技术方案就是使用同时支持实时和离线批量更新的数据引擎,来实现多种数据入库方式,以解决现有技术中数据每次必须是全量数据入库无法做到精细化实时入库的问题。
图2为本发明一实施例提供的数据入库方法的流程示意图。如图1所示,该方法包括:
101、根据数据源的来源信息,确定入库模式。
102、若所述入库模式为实时模式,则在满足实时入库条件时对所述数据源进行实时入库处理。
103、若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理。
上述步骤101中,数据源的来源包括但不限于业务系统、Mysql二进制日志(Mysqlbinlog)、以及各种关系型数据库(例如Mysql数据库、Nosql数据库、Oltp数据库)。例如,业务系统和Mysql二进制日志各自对应的数据库中的数据实时性要求较高,即是需要实时加载到数据仓库中,以供对外实时查询;而那些关系型数据库中的数据的实时性要求较低,即可以离线批量加载到数据仓库中。
其中,所述来源信息中可包括数据库名称或数据源类型,其中,所述数据源类型包括实时类型和离线类型。在获取到数据源之后,可根据数据源的来源信息中的数据库名称或数据源类型,判断出数据源的入库模式。其中,入库模式包括实时入库模式和批量离线入库模式。例如:数据源的来源信息中包括实时类型,则可判断出该数据源的入库模式为实时入库模式;数据源的来源信息中包括的数据库名称为Mysql数据库,则可判断出该数据源的入库模式为批量离线入库模式。
在一种可实现的方法中,若所述数据源来自消息队列,则确定所述入库模式为实时模式;若所述数据源来自关系型数据库,则确定所述入库模式为批量离线模式。由于在实际应用中,消息队列具有通知机制,即一旦有新消息加入到消息队列,消息队列即可通知相应的入库处理模块来执行消息数据的实时入库处理。因此,可将需要实时更新的数据存放到消息队列中。而对于将那些离线更新的数据,则可放在关系型数据库中进行联合存储。上述来源信息中可加入消息队列的标识信息或关系型数据库的标识信息,根据来源信息即可判断出数据源是来源于消息队列还是关系型数据库,进而确定入库模式。
由于在本实施例中融合了实时入库方式和离线入库方式,每种入库方式都对应着一种入库通道。若同时进行实时入库处理和批量离线处理的话,必然会引起数据的丢失和重复,难以保证数据的一致性。通常来说,实时入库模式要求数据的实时性,因此,其对应的实时入库通道是需要一直保持着打开的状态,而批量离线模式是定期(例如,每天、每周或每月)去进行数据仓库的更新,因此,其对应的离线入库通道只有在定期进行批量离线入库时才会打开,入库完之后会被关闭。
上述步骤102中,在判断出入库模式为实时入库模式时,则需要判断当前是否符合实时入库条件,例如,若数据仓库正有批量离线数据在灌入时,则需要等待当前批量离线数据入库完毕之后,才能对该数据源进行实时入库处理。实时入库条件是数据仓库当前没有批量离线的数据在灌入。
上述步骤103中,在判断出入库模式为批量离线模式,则判断当前实时入库通道的是否是开启状态,若是,则需要先关闭实时入库通道,再对所述数据源进行批量离线数据入库处理。
本发明实施例提供的技术方案,根据数据源的来源信息,判断该批次数据源加载进入数据仓库的方式是实时入库还是批量离线入库。若为批量离线方式,则需要在关闭实时入库通道之后才能进行批量离线数据入库处理。若为实时入库方式,则需要判断当前是否满足实时入库条件,若不满足则实时入库的处理需要进行堵塞。与现有技术中只能进行离线批量更新数据仓库相比,本发明实施例融合实时入库和批量离线入库两种数据仓库的更新方式,不仅支持了实时更新数据仓库的场景,还通过实时和离线入库模式的切换避免了因两种入库模式的相互干扰导致的数据丢失和重复等问题。
图3为本发明又一实施例提供的数据入库方法的流程示意图。如图3所示,该方法包括:
201、根据数据源的来源信息,确定入库模式。
202、若所述入库模式为实时模式,则监测是否存在有正在进行批量离线数据入库处理的数据引擎。
203、若没有,则对所述数据源进行实时入库处理。
204、若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理。
上述步骤201可参照上述实施例中相应内容,在此不再赘述。
在本实施例中,系统架构中存在多个数据引擎,由多个数据引擎共同对外提供查询功能。通常来说,为了提供更好的查询服务,多个数据引擎需要同步更新数据。在上述步骤202中,若所述入库模式为实时模式,则需要监测是否存在有正在进行批量离线数据入库处理的数据引擎。当存在有正在进行批量离线数据入库处理的数据引擎时,为了避免实时入库处理和批量数据入库处理同时进行引起的数据丢失和重复等问题,需等待当前批量离线数据入库处理完毕之后,再进行实时入库处理。虽然这样会对当前的实时更新有短暂的堵塞,但是能够保证数据的一致性。当不存在正在批量离线数据入库处理的数据引擎时,则可直接进行实时入库处理。
在一种可实现的方案中,对所述数据源进行实时入库处理,包括:从所述数据源中抽取目标数据;对所述目标数据进行清洗处理;将清洗处理后的目标数据转换为预设格式;根据所述目标数据的名称及时间信息,确定所述目标数据的主键或联合主键;根据所述主键或所述联合主键,将所述预设格式的所述目标数据添加至所述主键或所述联合主键对应数据行的部分列中。
其中,所述目标数据即是需要更新至数据仓库中的数据,从数据源中抽取所需的数据。对抽取到的目标数据进行清洗处理,即是检查抽取到的目标数据一致性,处理无效值和缺失值。所述预设格式为数据仓库中数据存储结构,将清洗处理后的目标数据转换为数据仓库存储结构的格式。以目标数据的名称和时间信息确定所述目标数据的主键或联合主键,例如,以名称作为主键,将名称和时间信息作为联合主键。根据所述主键或所述联合主键,对数据仓库进行查询,若存在所述主键或所述联合主键,则将所述预设格式的所述目标数据添加至数据仓库中已有的所述主键或所述联合主键对应数据行的部分列中,若不存在所述主键或所述联合主键,则在数据仓库中创建所述主键或所述联合主键对应数据行,并将所述预设格式的目标数据添加至所述主键或所述联合主键对应数据行的部分列中。
在上述步骤204中,若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理。由于实时入库通道通常情况下是开启的状态,因此,当判断出所述入库模式为批量离线模式,则需要先关闭实时入库通道,以对所述数据源进行批量离线数据入库处理。
在一种可实现的方案中,对所述数据源进行批量离线数据入库处理,包括:从所述数据源中抽取目标数据;对所述目标数据进行清洗处理;将清洗处理后的目标数据转换为预设格式;对所述预设格式的所述目标数据进行聚合处理,以得到全量数据信息;将所述全量数据信息作为一个数据行添加至数据仓库中。
其中,所述目标数据即是需要更新至数据仓库中的数据,从数据源中抽取所需的数据。对抽取到的目标数据进行清洗处理,即是检查抽取到的目标数据一致性,处理无效值和缺失值。所述预设格式为数据仓库中数据存储结构,将清洗处理后的目标数据转换为数据仓库存储结构的格式。在批量批量模式下,是从关系型数据库中抽取的目标数据,由于关系型数据库中的一条完整的信息是分散存储在关系型数据库中各个子数据库中。因此,需要将所述预设格式的所述目标数据进行聚合以得到全量数据信息,并将所述全量数据信息作为一个数据行添加至数据仓库中。也就是说,一个数据行中的不同列来自于不同的数据库。
需要说明的是,在实时入库模式下,可以针对数据仓库中的数据行中的部分列进行更新,实现了数据仓库中部分字段的精细化更新。而批量离线模式下,只能针对数据仓库中的数据行进行全量更新,即数据行中的全部字段需要同时更新。
为了实现系统架构中数据引擎能够支持外部查询,在所述数据源入库完成后,基于已入库的数据创建外部表,以对外提供查询。可选地,可根据实际创建各种格式的外部表,例如Parquet格式、CSV格式、Hadoop分布式外部表,自定义的Hadoop格式外部表、带压缩的写Hadoop外部表。此外,若数据引擎能够支持主键、索引以及分区等属性,则可以将外部表转为内部表,这样,就可以基于内部表建立索引以提升数据查询效率。
本发明实施例提供的技术方案,根据数据源的来源信息,判断该批次数据源加载进入数据仓库的方式是实时入库还是批量离线入库。若为批量离线方式,则需要在关闭实时入库通道之后才能进行批量离线数据入库处理。若为实时入库方式,则需要判断当前是否满足实时入库条件,若不满足则实时入库的处理需要进行堵塞。与现有技术中只能进行离线批量更新数据仓库相比,本发明实施例融合实时入库和批量离线入库两种数据仓库的更新方式,不仅支持了实时更新数据仓库的场景,还通过实时和离线入库模式的切换避免了因两种入库模式的相互干扰导致的数据丢失和重复等问题。
为了针对不同的查询需求,提供多种类型的外部查询引擎以满足多元化场景的需求。本发明采用如下具体方法来实现:在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至特定文件夹,以供下游第一数据引擎离线下载;和/或在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至分布式文件系统,以供下游第二数据引擎离线下载。将数据源批量导出并转储至特定文件夹、分布式文件系统中,是为了下游的多个数据引擎可以按照各自的特性选择特定文件夹、分布式文件系统中一个进行离线数据下载。在将数据源进行批量导出时,可按照目标转储对象的数据存储格式对数据源进行格式转换,再上传至目标转储对象中。例如:可将数据源转换成文本、avro或parquet等格式,形成文件并上传至分布式文件系统HDFS中。
下面将结合具体实例进行详细介绍:
图4为本发明实施例提供的系统架构图。如图4所示,该系统框架图中包括:业务系统数据库301、Mysql二进制日志302、Mysql_1和Mysql_2为两个分布式数据库303和304、消息队列310、SQL On Hbase数据引擎311、File文件夹312、HDFS分布式文件系统313、Greenplum数据引擎314、Impala数据引擎315以及外部查询接口316。
实时场景如下:业务系统数据库中数据的变更实时地同步到消息队列310中,Mysql等其他引擎的binlog日志数据实时同步到消息队列310中,由于SQL On Hbase数据引擎311和Greenplum数据引擎314支持实时数据源,因此,SQL On Hbase数据引擎311和Greenplum数据引擎314可将消息队列中数据进行实时入库处理,并基于入库的数据创建外部表,这样,外部则能够通过外部查询结构316实时的查询到更新的数据。
批量离线场景如下:定期(例如每天、每周或每月)地将多个分布式数据库303和304中的离线数据进行批量离线入库处理,由于Hbase是分布式集群,SQL On Hbase数据引擎311在生成导出文件时可并发进行,再将导出文件导出并转储在File文件夹312和HDFS分布式文件系统313中。由于HDFS分布式系统313也是分布式的,因此,SQL On Hbase数据引擎311在将文件导出至HDFS的过程中,可以多对多的进行,减少拷贝时间。File文件夹312在接收到文件之后,会通知下游Greenplum数据引擎314(即上述第一数据引擎)来离线下载相应的文件,Greenplum数据引擎314可通过gphdfs、gpfdist等方式导入文件。HDFS分布式文件系统313在接收到文件之后,会通知下游Impala数据引擎315来离线下载相应的文件,Impala数据引擎315可通过insert插入数据和load方式加载数据。Greenplum数据引擎314和Impala数据引擎315基于离线下载的数据创建外部表,这样,外部则能够通过外部查询结构316实时的查询到更新的数据。其中,Greenplum数据引擎314支持主键、索引以及分区等属性,所以可以将外部表转为内部表,再基于内部表创建索引以提升数据查询效率。
需要说明的是,Hbase的存储最终还是依赖于HDFS,因此,后续Impala数据引擎315可直接基于同一套HDFS进行数据离线下载。
当SQL On Hbase数据引擎311、Greenplum数据引擎314和Impala数据引擎315中的一个数据引擎需要进行批量离线数据入库处理时,则需要关闭实时入库通道,暂停实时入库处理,只有当批量离线数据入库处理完成之后,开启实时入库通道以进行实时数据入库处理。
本发明实施例提供的技术方案,根据数据源的来源信息,判断该批次数据源加载进入数据仓库的方式是实时入库还是批量离线入库。若为批量离线方式,则需要在关闭实时入库通道之后才能进行批量离线数据入库处理。若为实时入库方式,则需要判断当前是否满足实时入库条件,若不满足则实时入库的处理需要进行堵塞。与现有技术中只能进行离线批量更新数据仓库相比,本发明实施例融合实时入库和批量离线入库两种数据仓库的更新方式,不仅支持了实时更新数据仓库的场景,还通过实时和离线入库模式的切换避免了因两种入库模式的相互干扰导致的数据丢失和重复等问题。
图5为本发明一实施例提供的数据入库装置的结构框图。如图5所示,该装置包括:确定模块401、第一处理模块402以及第二处理模块403。其中,确定模块401,用于根据数据源的来源信息,确定入库模式。第一处理模块402,用于若所述入库模式为实时模式,则在满足实时入库条件时对所述数据源进行实时入库处理。第二处理模块403,用于若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理。
本发明实施例提供的技术方案,根据数据源的来源信息,判断该批次数据源加载进入数据仓库的方式是实时入库还是批量离线入库。若为批量离线方式,则需要在关闭实时入库通道之后才能进行批量离线数据入库处理。若为实时入库方式,则需要判断当前是否满足实时入库条件,若不满足则实时入库的处理需要进行堵塞。与现有技术中只能进行离线批量更新数据仓库相比,本发明实施例融合实时入库和批量离线入库两种数据仓库的更新方式,不仅支持了实时更新数据仓库的场景,还通过实时和离线入库模式的切换避免了因两种入库模式的相互干扰导致的数据丢失和重复等问题。
进一步的,所述确定模块401可具体用于:若所述数据源来自消息队列,则确定所述入库模式为实时模式;若所述数据源来自关系型数据库,则确定所述入库模式为批量离线模式。
进一步的,该装置,还可包括:监测模块,用于监测是否存在有正在进行批量离线数据入库处理的数据引擎;若没有,则满足所述实时入库条件。
进一步的,上述第一处理模块可具体用于:从所述数据源中抽取目标数据;对所述目标数据进行清洗处理;将清洗处理后的目标数据转换为预设格式;根据所述目标数据的名称及时间信息,确定所述目标数据的主键或联合主键;根据所述主键或所述联合主键,将所述预设格式的所述目标数据添加至所述主键或所述联合主键对应数据行的部分列中。
进一步的,所述第二处理模块可具体用于:从所述数据源中抽取目标数据;对所述目标数据进行清洗处理;将清洗处理后的目标数据转换为预设格式;对所述预设格式的所述目标数据进行聚合处理,以得到全量数据信息;将所述全量数据信息作为一个数据行添加至数据仓库中。
进一步的,该装置,还可包括:第一导出模块,用于在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至特定文件夹,以供下游第一数据引擎离线下载;和/或第二导出模块,用于在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至分布式文件系统,以供下游第二数据引擎离线下载。
进一步的,该装置,还可包括创建模块,用于基于已入库的数据创建外部表,以对外提供查询;
进一步的,该装置,还可包括转化模块,用于对所述外部表进行内部表的转化处理。
这里需要说明的是:上述实施例提供的数据入库装置可实现上述各方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。
本发明一实施例还提供一种电子设备。如图5所示,该电子设备包括处理器501和存储器502,所述存储器502用于存储支持处理器501执行上述各实施例提供的数据入库方法的程序,所述处理器501被配置为用于执行所述存储器502中存储的程序。
所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器501调用执行。所述一条或多条计算机指令被处理器501执行时能够实现上述数据入库方法中的步骤。
存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的数据入库方法对应的程序指令/模块(例如,附图5所示的确定模块401、第一处理模块402以及第二处理模块403)。处理器501通过运行存储在存储器502中的非易失性软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述方法实施例的数据入库方法。
所述处理器501用于:根据数据源的来源信息,确定入库模式;若所述入库模式为实时模式,则在满足实时入库条件时对所述数据源进行实时入库处理;若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理。
处理器501可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本发明实施例还提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各实施例提供的数据入库方法中的步骤。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
本发明公开了A1、一种数据入库方法,包括:
根据数据源的来源信息,确定入库模式;
若所述入库模式为实时模式,则在满足实时入库条件时对所述数据源进行实时入库处理;
若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理。
A2、如A1所述的方法,所述根据数据源的来源信息,确定入库模式,包括:
若所述数据源来自消息队列,则确定所述入库模式为实时模式;
若所述数据源来自关系型数据库,则确定所述入库模式为批量离线模式。
A3、如A1或A2所述的方法,还包括:
监测是否存在有正在进行批量离线数据入库处理的数据引擎;
若没有,则满足所述实时入库条件。
A4、如A1或A2所述的方法,对所述数据源进行实时入库处理,包括:
从所述数据源中抽取目标数据;
对所述目标数据进行清洗处理;
将清洗处理后的目标数据转换为预设格式;
根据所述目标数据的名称及时间信息,确定所述目标数据的主键或联合主键;
根据所述主键或所述联合主键,将所述预设格式的所述目标数据添加至所述主键或所述联合主键对应数据行的部分列中。
A5、如A1或A2所述的方法,对所述数据源进行批量离线数据入库处理,包括:
从所述数据源中抽取目标数据;
对所述目标数据进行清洗处理;
将清洗处理后的目标数据转换为预设格式;
对所述预设格式的所述目标数据进行聚合处理,以得到全量数据信息;
将所述全量数据信息作为一个数据行添加至数据仓库中。
A6、如A1或A2所述的方法,还包括:
在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至特定文件夹,以供下游第一数据引擎离线下载;和/或
在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至分布式文件系统,以供下游第二数据引擎离线下载。
A7、如A1所述的方法,还包括:
基于已入库的数据创建外部表,以对外提供查询;
A8、如A7所述的方法,还包括:
对所述外部表进行内部表的转化处理。
本发明还公开了B9、一种数据入库装置,包括:
确定模块,用于根据数据源的来源信息,确定入库模式。
第一处理模块,用于若所述入库模式为实时模式,则在满足实时入库条件时对所述数据源进行实时入库处理。
第二处理模块,用于若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理。
B10、如B9所述的装置,所述确定模块具体用于:
若所述数据源来自消息队列,则确定所述入库模式为实时模式;
若所述数据源来自关系型数据库,则确定所述入库模式为批量离线模式。
B11、如B9或10所述的装置,还包括:
监测模块,用于监测是否存在有正在进行批量离线数据入库处理的数据引擎;若没有,则满足所述实时入库条件。
B12、如B9或B10所述的装置,第一处理模块具体用于:
从所述数据源中抽取目标数据;
对所述目标数据进行清洗处理;
将清洗处理后的目标数据转换为预设格式;
根据所述目标数据的名称及时间信息,确定所述目标数据的主键或联合主键;
根据所述主键或所述联合主键,将所述预设格式的所述目标数据添加至所述主键或所述联合主键对应数据行的部分列中。
B13、如B9或B10所述的装置,所述第二处理模块具体用于:
从所述数据源中抽取目标数据;
对所述目标数据进行清洗处理;
将清洗处理后的目标数据转换为预设格式;
对所述预设格式的所述目标数据进行聚合处理,以得到全量数据信息;
将所述全量数据信息作为一个数据行添加至数据仓库中。
B14、如B9或B10所述的装置,还包括:
第一导出模块,用于在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至特定文件夹,以供下游第一数据引擎离线下载;和/或
第二导出模块,用于在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至分布式文件系统,以供下游第二数据引擎离线下载。
B15、如B9所述的装置,还包括:
创建模块,用于基于已入库的数据创建外部表,以对外提供查询;
B16、如B15所述的装置,还包括:
转化模块,用于对所述外部表进行内部表的转化处理。
本发明还公开了C17、一种电子设备,包括存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述A1-A9中任一项所述方法中的步骤。
本发明还公开了D18、一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述A1-A9中任一项所述方法中的步骤。
Claims (14)
1.一种数据入库方法,其特征在于,包括:
根据数据源的来源信息,确定入库模式;
若所述入库模式为实时模式,则在满足实时入库条件时对所述数据源进行实时入库处理;
若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理;
所述根据数据源的来源信息,确定入库模式,包括:
若所述数据源来自消息队列,则确定所述入库模式为实时模式;
若所述数据源来自关系型数据库,则确定所述入库模式为批量离线模式;
对所述数据源进行实时入库处理,包括:
从所述数据源中抽取目标数据;
对所述目标数据进行清洗处理;
将清洗处理后的目标数据转换为预设格式;
根据所述目标数据的名称及时间信息,确定所述目标数据的主键或联合主键;
根据所述主键或所述联合主键,将所述预设格式的所述目标数据添加至所述主键或所述联合主键对应数据行的部分列中。
2.根据权利要求1所述的方法,其特征在于,还包括:
监测是否存在有正在进行批量离线数据入库处理的数据引擎;
若没有,则满足所述实时入库条件。
3.根据权利要求1所述的方法,其特征在于,对所述数据源进行批量离线数据入库处理,包括:
从所述数据源中抽取目标数据;
对所述目标数据进行清洗处理;
将清洗处理后的目标数据转换为预设格式;
对所述预设格式的所述目标数据进行聚合处理,以得到全量数据信息;
将所述全量数据信息作为一个数据行添加至数据仓库中。
4.根据权利要求1所述的方法,其特征在于,还包括:
在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至特定文件夹,以供下游第一数据引擎离线下载;和/或
在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至分布式文件系统,以供下游第二数据引擎离线下载。
5.根据权利要求1所述的方法,其特征在于,还包括:
基于已入库的数据创建外部表,以对外提供查询。
6.根据权利要求5所述的方法,其特征在于,还包括:
对所述外部表进行内部表的转化处理。
7.一种数据入库装置,其特征在于,包括:
确定模块,用于根据数据源的来源信息,确定入库模式;
第一处理模块,用于若所述入库模式为实时模式,则在满足实时入库条件时对所述数据源进行实时入库处理;
第二处理模块,用于若所述入库模式为批量离线模式,则在关闭实时入库通道后对所述数据源进行批量离线数据入库处理;
所述确定模块具体用于:
若所述数据源来自消息队列,则确定所述入库模式为实时模式;
若所述数据源来自关系型数据库,则确定所述入库模式为批量离线模式;第一处理模块具体用于:
从所述数据源中抽取目标数据;
对所述目标数据进行清洗处理;
将清洗处理后的目标数据转换为预设格式;
根据所述目标数据的名称及时间信息,确定所述目标数据的主键或联合主键;
根据所述主键或所述联合主键,将所述预设格式的所述目标数据添加至所述主键或所述联合主键对应数据行的部分列中。
8.根据权利要求7所述的装置,其特征在于,还包括:
监测模块,用于监测是否存在有正在进行批量离线数据入库处理的数据引擎;若没有,则满足所述实时入库条件。
9.根据权利要求7所述的装置,其特征在于,所述第二处理模块具体用于:
从所述数据源中抽取目标数据;
对所述目标数据进行清洗处理;
将清洗处理后的目标数据转换为预设格式;
对所述预设格式的所述目标数据进行聚合处理,以得到全量数据信息;
将所述全量数据信息作为一个数据行添加至数据仓库中。
10.根据权利要求7所述的装置,其特征在于,还包括:
第一导出模块,用于在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至特定文件夹,以供下游第一数据引擎离线下载;和/或
第二导出模块,用于在所述数据源批量离线入库完成后,将所述数据源批量导出并转储至分布式文件系统,以供下游第二数据引擎离线下载。
11.根据权利要求7所述的装置,其特征在于,还包括:
创建模块,用于基于已入库的数据创建外部表,以对外提供查询。
12.根据权利要求11所述的装置,其特征在于,还包括:
转化模块,用于对所述外部表进行内部表的转化处理。
13.一种电子设备,其特征在于,包括存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述权利要求1-6中任一项所述方法中的步骤。
14.一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述权利要求1-6中任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710503476.0A CN107463610B (zh) | 2017-06-27 | 2017-06-27 | 一种数据入库方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710503476.0A CN107463610B (zh) | 2017-06-27 | 2017-06-27 | 一种数据入库方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107463610A CN107463610A (zh) | 2017-12-12 |
CN107463610B true CN107463610B (zh) | 2021-01-26 |
Family
ID=60543848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710503476.0A Active CN107463610B (zh) | 2017-06-27 | 2017-06-27 | 一种数据入库方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107463610B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753531A (zh) * | 2018-12-26 | 2019-05-14 | 深圳市麦谷科技有限公司 | 一种大数据统计方法、系统、计算机设备及存储介质 |
CN110188111A (zh) * | 2019-05-30 | 2019-08-30 | 上海优扬新媒信息技术有限公司 | 一种离线数据批量更新方法、装置和分布式存储系统 |
CN110297830B (zh) * | 2019-06-26 | 2021-09-14 | 成都品果科技有限公司 | 一种Redshift外部表动态列的处理方法及装置 |
CN111913796B (zh) * | 2020-08-12 | 2024-03-26 | 杭州安恒信息技术股份有限公司 | 离线系统延时调度时间间隔的生成方法和延时调度方法 |
CN112148740B (zh) * | 2020-09-30 | 2023-12-08 | 北京明朝万达科技股份有限公司 | 数据传输方法、装置、存储介质及电子装置 |
CN113377786B (zh) * | 2021-08-16 | 2021-11-02 | 北京易鲸捷信息技术有限公司 | 在线创建索引的实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901218A (zh) * | 2009-05-27 | 2010-12-01 | 北京启明星辰信息技术股份有限公司 | 一种通用数据入库装置及方法 |
CN103731298A (zh) * | 2013-11-15 | 2014-04-16 | 中国航天科工集团第二研究院七〇六所 | 一种大规模分布式网络安全数据采集方法与系统 |
CN104391989A (zh) * | 2014-12-16 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种分布式etl一体机系统 |
CN105786864A (zh) * | 2014-12-24 | 2016-07-20 | 国家电网公司 | 一种实现海量数据离线分析的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567905B (zh) * | 2009-06-03 | 2011-12-21 | 杭州华三通信技术有限公司 | 一种数据同步的方法、发送端和接收端 |
CN102841897B (zh) * | 2011-06-23 | 2016-03-02 | 阿里巴巴集团控股有限公司 | 一种实现增量数据抽取的方法、装置及系统 |
US9021091B2 (en) * | 2012-10-15 | 2015-04-28 | International Business Machines Corporation | Transaction middleware based application level transaction instance tracking across a composite application |
CN106326457B (zh) * | 2016-08-29 | 2019-04-30 | 山大地纬软件股份有限公司 | 基于大数据的人社人员档案袋数据库的构建方法及系统 |
CN106651633B (zh) * | 2016-10-09 | 2021-02-02 | 国网浙江省电力公司信息通信分公司 | 一种基于大数据技术的用电信息采集系统及其采集方法 |
CN106557586B (zh) * | 2016-11-30 | 2020-06-19 | 北京星选科技有限公司 | 数据库访问处理方法及装置 |
-
2017
- 2017-06-27 CN CN201710503476.0A patent/CN107463610B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901218A (zh) * | 2009-05-27 | 2010-12-01 | 北京启明星辰信息技术股份有限公司 | 一种通用数据入库装置及方法 |
CN103731298A (zh) * | 2013-11-15 | 2014-04-16 | 中国航天科工集团第二研究院七〇六所 | 一种大规模分布式网络安全数据采集方法与系统 |
CN104391989A (zh) * | 2014-12-16 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种分布式etl一体机系统 |
CN105786864A (zh) * | 2014-12-24 | 2016-07-20 | 国家电网公司 | 一种实现海量数据离线分析的方法 |
Non-Patent Citations (2)
Title |
---|
杨杉等.面向运营商大数据的分布式ETL研究与设计.《邮电设计技术》.2016,第47-52页. * |
面向运营商大数据的分布式ETL研究与设计;杨杉等;《邮电设计技术》;20160820;第47-52页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107463610A (zh) | 2017-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107463610B (zh) | 一种数据入库方法及装置 | |
CN102682052B (zh) | 过滤数据存储上的查询数据 | |
US9514217B2 (en) | Message index subdivided based on time intervals | |
CN109271450A (zh) | 数据库同步方法、装置、服务器和存储介质 | |
CN109597842A (zh) | 数据实时计算方法、装置、设备及计算机可读存储介质 | |
CN107402963A (zh) | 搜索数据的构建方法、增量数据的推送方法及装置和设备 | |
CN106033439A (zh) | 一种分布式事务处理方法及系统 | |
CN107977396B (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN108121782A (zh) | 查询请求的分配方法、数据库中间件系统以及电子设备 | |
US20180220292A1 (en) | Blockchain-Based Subscription Management | |
CN111125099B (zh) | 基于Druid宽表的关联数据处理方法及装置 | |
CN104778175A (zh) | 一种实现异构数据库数据同步的方法及系统 | |
CN109408493A (zh) | 一种数据源的迁移方法及系统 | |
CN110781197B (zh) | 一种hive离线同步校验方法、装置及电子设备 | |
CN109885585A (zh) | 支持存储过程、触发器与视图的分布式数据库系统和方法 | |
CN109828966A (zh) | 渐进式重哈希方法、装置、计算机设备及存储介质 | |
CN114860727A (zh) | 拉链表更新方法及装置 | |
CN109344296A (zh) | 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质 | |
Cruz et al. | Assessing nosql databases for telecom applications | |
WO2020232012A1 (en) | Blockchain cache system | |
Tseng et al. | A successful application of big data storage techniques implemented to criminal investigation for telecom | |
CN115827646A (zh) | 索引配置方法、装置和电子设备 | |
CN115809311A (zh) | 知识图谱的数据处理方法、装置及计算机设备 | |
CN108563781A (zh) | 基于Hadoop的物联网大数据处理方法及系统 | |
CN115481097A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Building N3, Jinyu Zhizao workshop, No. 27, Jiancai Chengzhong Road, Haidian District, Beijing 100096 Applicant after: Beijing Xingxuan Technology Co.,Ltd. Address before: 100085 Beijing, Haidian District on the road to the information on the ground floor of the 1 to the 3 floor of the 2 floor, room 11, 202 Applicant before: Beijing Xiaodu Information Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |