分布式数据同步到数据仓库的方法及装置的制作方法

文档序号:6585889阅读:235来源:国知局
专利名称:分布式数据同步到数据仓库的方法及装置的制作方法
技术领域
本申请涉及数据存储领域,尤其涉及一种分布式数据同步到数据仓库的方法及装
置。
背景技术
数据库(Data-Base,DB)是按照某种数据模型组织的数据集合,该数据集合的数 据结构独立于使用它的应用程序;数据库是面向事务设计的,是生产系统的数据平台,一 般存储在线交易数据。数据仓库(Data Warehouse, DW)是集成的(Integrated)、相对稳 定的(Non-volatile)、反映历史变化(Time Variant)的数据集合;数据仓库是面向主题 (Subject Oriented)设计的,是分析系统的数据平台,一般存储历史数据。生产系统的数据库在访问量和存储的数据量越来越大的情况下,采取了将现有集 中式数据库升级为分布式数据库的解决方案。集中式数据库是指数据库软件部署在一台 存储服务器中,相应的,数据存储在集中式数据库的一个表中(本申请文件中,将集中式数 据库中的一个表称为大表);分布式数据库是指数据库软件部署在多台独立的存储服务器 中,相应的,集中式数据库的大表中存储的全部数据按照特定的分表规则划分到分布式数 据库的多个表中(本申请文件中,将分布式数据库中的多个表称为分表),也就是说分布式 数据库将一个逻辑表中的数据分布到多个物理表中。生产系统通过采用分布式数据库降低了对单台存储服务器的软硬件要求,但是在 数据仓库的ETL(Extraction-Transformation-Loading,数据抽取、转换和装载)过程中, 数据库中的数据同步到数据仓库的流程会发生巨大的变化。ETL是数据仓库中的重要环 节,负责将分布式、异构数据源中的数据抽取到临时中间层,进行清洗、转换、集成,最后装 载到数据仓库中,成为联机分析处理、数据挖掘的基础。常用的ETL工具包括Informatica、 Datastage、0WB、DTS等。在采用集中式数据库的情况下,只需将集中式数据库的大表中的数 据同步到数据仓库的一个表中即可,而在采用分布式数据库的情况下,针对每一个分表在 数据仓库中建立对应的表(本申请文件中,将数据仓库中为各分表对应建立的表称为映射 表),首先将生产系统中各分表的数据导出为文本,然后导入到数据仓库对应的映射表中, 最后将数据仓库各映射表中的数据合并到一个表中(本申请文件中,将数据仓库中数据合 并到的表称为汇总表)。在分布式数据库的规模较大,也就是分表的数量较多的情况下,例如有的大表会 分成1024个分表,将导致数据仓库中表的数量暴涨,使得数据仓库中表的维护数量和难度 比较大,而且在同步流程中需要对数据仓库中所有的映射表进行合并操作,过程繁杂,使得 同步流程耗费的时间较长,极易出错。可见,现有分布式数据同步到数据仓库的方案,数据 仓库中表的维护数量和难度较大,同步流程复杂,耗费时间长,可靠性低,成为数据仓库的 ETL过程的瓶颈。申请内容本申请提供一种分布式数据同步到数据仓库的方法及装置,用以解决现有技术提供的方案中,数据仓库中表的维护数量和难度较大,同步流程复杂,耗费时间长,可靠性低 的问题。本申请提供的分布式数据同步到数据仓库的方法,所述方法包括 将分布式数据库的每一个分表中的增量数据导出为文本,并对应生成文本文件;将各文本文件中的文本导入到数据仓库的增量表中;根据特定的分表规则将增量表中的全部增量数据合并到数据仓库的汇总表中,所 述分表规则是指将集中式数据库的大表中存储的全部数据划分到分布式数据库的多个分 表中时所遵循的规则。本申请提供的分布式数据同步到数据仓库的装置,所述装置包括导出单元、导入 单元和汇总单元,其中所述导出单元,用于将分布式数据库的每一个分表中的增量数据导出为文本,并 对应生成文本文件;所述导入单元,用于将各文本文件中的文本导入到数据仓库的增量表中;所述汇总单元,用于根据特定的分表规则将增量表中的全部增量数据合并到数据 仓库的汇总表中,所述分表规则是指将集中式数据库的大表中存储的全部数据划分到分布 式数据库的多个分表中时所遵循的规则。本申请提供的分布式数据同步到数据仓库的方法及装置,数据仓库的ETL过程 中,将每一个分表中的增量数据导出为文本,再将文本直接导入到增量表中,最后将增量表 中的全部增量数据合并到汇总表,彻底摒弃了在数据仓库中为全部分表建立对应数量的映 射表的同步流程,同步任务只需在数据仓库中新建两个表(增量表和汇总表)即完成数据 同步,省略了同步流程中的冗余操作,降低了耗费的时间,提升了同步效率和可靠性。本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明 书、权利要求书、以及附图中所特别指出的结构来实现和获得。


图1为本申请实施例中分布式数据同步到数据仓库的方法流程图;图2为本申请实施例中分布式数据同步到数据仓库的示意图;图3为本申请实施例中分布式数据同步到数据仓库的装置框图。
具体实施例方式本申请实施例为了解决现有ETL过程中分布式数据同步到数据仓库的方案中存 在的问题,提供了一种分布式数据同步到数据仓库的方案。假设分布式数据库中将一个 大表按照特定的分表规则划分为1024个分表,按照现有方案,需要在数据仓库中对应建立 1024个映射表,并且需要将各映射表中的数据合并到汇总表中,使得表的维护数量和难度 较大,同步流程复杂,耗费时间长,可靠性低。针对上述问题,本申请实施中提出只在数据 仓库中建立两个表,分别称为增量表和汇总表,将分布式数据库的每一个分表中的增量数 据导出为文本,并对应生成文本文件,将各文本文件中的文本导入到数据仓库的增量表中, 根据该特定的分表规则将增量表中的全部增量数据合并到数据仓库的汇总表中,从而省略同步流程中的冗余操作,降低耗费的时间,提升同步效率和可靠性。 以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的 优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申 请中的实施例及实施例中的特征可以相互组合。如图1所示,本申请实施例首先提供了一种分布式数据同步到数据仓库的方法, 包括如下步骤S101、将分布式数据库的每一个分表中的增量数据导出为文本,并对应生成文本 文件。在分布式数据库的每一个分表中,数据以记录的方式进行存储,集中式数据库的 大表中存储的全部数据按照特定的分表规则划分到分布式数据库的多个分表中,具体实施 中,需要确保每个数据是可以唯一标识的,即由全局唯一的数据标识(key)进行区分。基 于此,分布式数据库的每一个分表中的每一条记录除了包括自动生成的数据编号、以及数 据之外,还包括根据该数据在大表中的位置和分表规则为该数据分配的全局唯一的数据标 识。将分布式数据库的每一个分表中的增量数据导出为文本时,为了提升导出速度, 可以采用并行导出的方式,当然也可以采用串行导出的方式。具体实施中,将分布式数据库的每一个分表中的增量数据导出为文本时,还携带 各增量数据的全局唯一的数据标识,便于后续将增量数据汇总到汇总表中。举例说明如何将集中式数据库的大表中存储的全部数据按照特定的分表规则划 分到分布式数据库的多个分表中。假设集中式数据库的某大表中存储有如下记录,各条记 录的数据及数据格式如表1所示表 1
数据编号 用户名账户余额 ~ AAA100 元
~~2BBB150 元
~~3CCC200 元
~DDD300 元将大表按照特定的分表规则(例如按照数据编号的奇偶性进行划分的规则)将大 表中存储的全部数据划分到两个分表中,则两个分表中存储的各条记录以及存储格式分别 如表2和表3所示。其中,全局唯一的数据标识Al可以表示是奇数表中的第1条记录,根 据分表规则,可以确定对应的数据在大表中的位置(数据编号为1);全局唯一的数据标识 A2可以表示是奇数表中的第2条记录,根据分表规则,可以确定对应的数据在大表中的位 置(数据编号为3);全局唯一的数据标识Bl可以表示是偶数表中的第1条记录,根据分表 规则,可以确定对应的数据在大表中的位置(数据编号为2);全局唯一的数据标识B2可以 表示是偶数表中的第2条记录,根据分表规则,可以确定对应的数据在大表中的位置(数据编号为4)。表权利要求
1.一种分布式数据同步到数据仓库的方法,其特征在于,所述方法包括将分布式数据库的每一个分表中的增量数据导出为文本,并对应生成文本文件;将各文本文件中的文本导入到数据仓库的增量表中;根据特定的分表规则将增量表中的全部增量数据合并到数据仓库的汇总表中,所述分 表规则是指将集中式数据库的大表中存储的全部数据划分到分布式数据库的多个分表中 时所遵循的规则。
2.如权利要求1所述的方法,其特征在于,所述分布式数据库的每一个分表中的每一 条记录包括数据、以及根据该数据在大表中的位置和所述分表规则为该数据分配的全局唯 一的数据标识;以及将分布式数据库的每一个分表中的增量数据导出为文本时,还携带各增量数据的全局 唯一的数据标识。
3.如权利要求2所述的方法,其特征在于,所述分布式数据库的每一个分表中的每一 条记录还包括修改时间;以及所述增量数据是指修改时间在上一次的增量数据导出时间点到本次的增量数据导出 时间点之间的时间段内的各条记录所包括的数据。
4.如权利要求2所述的方法,其特征在于,所述分布式数据库的每一个分表中的每一 条记录还包括修改标志位,在每一次增量数据导出之后,将各分表中每一条记录的修改标 志位初始化设置为初始值,当任一记录的数据内容被修改时,将该条记录的修改标志位设 置为设定值;以及所述增量数据是指修改标志位为设定值的各条记录所包括的数据。
5.如权利要求2所述的方法,其特征在于,所述根据分表规则将增量表中的全部增量 数据合并到数据仓库的汇总表中,具体包括根据所述分表规则、以及增量表中每一个增量数据对应的全局唯一的数据标识,确定 每一个增量数据在大表中的位置;根据每一个增量数据在大表中的位置,将各增量数据合并到所述汇总表的对应位置处。
6.如权利要求1所述的方法,其特征在于,将每一个分表中的增量数据导出为文本之 后,将导出的文本中所包括的设定的分隔符替换为空格。
7.一种分布式数据同步到数据仓库的装置,其特征在于,所述装置包括导出单元、导入 单元和汇总单元,其中所述导出单元,用于将分布式数据库的每一个分表中的增量数据导出为文本,并对应 生成文本文件;所述导入单元,用于将各文本文件中的文本导入到数据仓库的增量表中;所述汇总单元,用于根据特定的分表规则将增量表中的全部增量数据合并到数据仓库 的汇总表中,所述分表规则是指将集中式数据库的大表中存储的全部数据划分到分布式数 据库的多个分表中时所遵循的规则。
8.如权利要求7所述的装置,其特征在于,所述导出单元,具体用于将分布式数据库的每一个分表中的增量数据导出为文本时, 还携带各增量数据的全局唯一的数据标识,所述分布式数据库的每一个分表中的每一条记录包括数据、以及根据该数据在大表中的位置和所述分表规则为该数据分配的全局唯一的 数据标识。
9.如权利要求8所述的装置,其特征在于,所述导出单元,具体用于将修改时间在上一次的增量数据导出时间点到本次的增量数 据导出时间点之间的时间段内的各条记录所包括的数据确定为数据增量,所述分布式数据 库的每一个分表中的每一条记录还包括修改时间。
10.如权利要求8所述的方法,其特征在于,所述装置还包括设置单元,其中所述设置单元,用于在导出单元每一次导出增量数据之后,将各分表中每一条记录的 修改标志位初始化设置为初始值,当任一记录的数据内容被修改时,将该条记录的修改标 志位设置为设定值,所述分布式数据库的每一个分表中的每一条记录还包括修改标志位;所述导出单元,具体用于将修改标志位为设定值的各条记录所包括的数据确定为增量 数据。
11.如权利要求8所述的装置,其特征在于,所述汇总单元具体包括确定子单元和合并 子单元,其中所述确定子单元,用于根据所述分表规则、以及增量表中每一个增量数据对应的全局 唯一的数据标识,确定每一个增量数据在大表中的位置;所述合并子单元,用于根据每一个增量数据在大表中的位置,将各增量数据合并到所 述汇总表的对应位置处。
12.如权利要求7所述的装置,其特征在于,所述导入单元,还用于在导出单元将每一个分表中的增量数据导出为文本之后,将导 出的文本中所包括的设定的分隔符替换为空格。
全文摘要
本发明公开了一种分布式数据同步到数据仓库的方法及装置,用以解决现有技术提供的方案中,数据仓库中表的维护数量和难度较大,同步流程复杂,耗费时间长,可靠性低的问题。分布式数据同步到数据仓库的方法,包括将分布式数据库的每一个分表中的增量数据导出为文本,并对应生成文本文件;将各文本文件中的文本导入到数据仓库的增量表中;根据特定的分表规则将增量表中的全部增量数据合并到数据仓库的汇总表中,所述分表规则是指将集中式数据库的大表中存储的全部数据划分到分布式数据库的多个分表中时所遵循的规则。
文档编号G06F17/30GK102096685SQ20091025247
公开日2011年6月15日 申请日期2009年12月11日 优先权日2009年12月11日
发明者李学升 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1