1 前言

本篇文章先介绍Netezza迁移到GBase 8a MPP Cluster的方法和建议,主要包括迁移过程中替换硬件的配置和集群规模评估、表及数据迁移方案、迁移后数据稽核等内容。

后续会介绍GBase 8a MPP Cluster成功替换Netezza的项目案例及Netezza迁移到GBase 8a MPP Cluster过程中,两数据库在数据类型、操作符、谓词及函数等方面的差异。

本方案适用于开展Netezza向GBase 8a MPP Cluster迁移的项目经理、开发人员、编写项目方案人员和实施人员。

本文章每章节介绍内容如下:

第一章节:总体描述了方案内容及适用范围;

第二章节:介绍GBase 8a MPP Cluster替换Netezza硬件和集群规模评估方法;

第三章节:介绍迁移流程、对象迁移、数据迁移及数据稽核的方法;

2 硬件资源和节点规模评估

本章节的GBase 8a MPP Cluster替换Netezza硬件资源和集群规模评估为通用方案。评估时,具体还需要结合客户实际业务、实际硬件和网络情况综合考虑。

2.1 Netezza硬件配置介绍

IBM官方文档中,Netezza硬件平台现分为如下几个系列(见表2-1),每系列硬件详细配置见表2-2。

表2- 1

名称

备注

Netezza100

单机箱,单机,没有HA

Netezza C1000系列

类似N1001系列,但每个机架有更多存储空间更大的数据环境

PureData System for Analytics N1001系列

N1001系列是对Netezza 1000的更新,与Netezza 1000 具有相同的架构和接口。

PureData System for Analytics N2001系列

与N1001系列相比,增加容量和性能

PureData System for Analytics N3001系列

N30001系列是最新一代的数据仓库

表2- 2

名称

配置

Netezza100

100-1

S-Blades:1

Snippet processors:8

Disks [Spares]: 8[1]  

User Data Storage (Raw):2.8TB

Netezza C1000系列

C1000-8

C1000-16

S-Blades:8   

Snippet processors:64    

Disks [Spares]; 288[16] 

User Data Storage (Raw):288TB

S-Blades:16

Snippet processors:128

Disks [Spares]; 576[32]

User Data Storage (Raw):576TB

PureData System for Analytics N1001系列

N1001-002

N1001-005

N1001-010

S-Blades:4

Snippet processors:24

Disks [Spares]: 24[2]

User Data Storage (Raw):8TB

S-Blades:7

Snippet processors:48

Disks[Spares]:48[2] 

User Data Storage (Raw):16TB

S-Blades:14

Snippet processors:96 

Disks [Spares]:96[2]

User Data Storage (Raw):32TB

PureData System for Analytics N2001系列

N2002-002

N2002-005

N2002-010

N2002-020

S-Blades:2

Snippet processors:32

Disks [Spares]:48[4] 

User Data Storage (Raw):8TB

S-Blades:4;

Snippet processors:64

Disks [Spares]: 144[16]

User Data Storage (Raw):24TB

S-Blades:7;

 Snippet processors:112

 Disks [Spares]; 288[34] 

User Data Storage (Raw):48TB

S-Blades:14

Snippet processors:224

Disks [Spares]: 576[68]

User Data Storage (Raw):96TB

PureData System for Analytics N3001系列

N3001-002

N3001-005

N3001-010

N3001-020

S-Blades:2

Snippet processors:32

Disks [Spares]:48[4]

User Data Storage (Raw):8TB

S-Blades:4 

Snippet processors:64

 Disks [Spares]; 144[16] 

User Data Storage (Raw):24TB

S-Blades:7

Snippet processors:112

Disks [Spares]: 288[34]

 User Data Storage (Raw):48TB

S-Blades:14

Snippet processors:224

Disks [Spares]: 576[68]

User Data Storage (Raw):96TB

2.2 硬件配置和集群规模评估

一、硬件评估方法

Netezza一体机采用了部分硬件层面优化,故X86_PC Server硬件整体配置与Netezza完全相同的情况下,其性能与Netezza一体机相比有一定差距。因此评估GBase 8a MPP Cluster部署硬件时,整体要考虑推荐的GBase 8a MPP Cluster部署硬件配置要优于Netezza一体机硬件配置。
CPU配置评估:GBase 8a MPP Cluster主要应用于数据IO密集型应用场景,系统整体性能与IO能力密切相关,对CPU的消耗主要是数据压缩、解压、以及SQL运算中的计算需求。因此硬件配置选型时,计算节点的CPU配置通常依据工程项目经验,同时结合市场主流的CPU技术及价格进行评估,一般可以与Netezza CPU核数持平或者略高即可。
内存配置评估,通常和单节点所管理的数据量及CPU配置有关。在不考虑计算类型的情况下,业界通常采用每核CPU管理4GB到16GB内存的方式进行评估。如果项目的应用场景多为高压力的综合分析,对内存要求较高,则推荐按照每核CPU配备16GB内存计算,配置256GB以上内存。
磁盘整体配置依据Netezza存储的裸数据量,同时考虑未来业务数据增长量及项目经费预算来评估磁盘容量配置。

二 、集群规模评估方法

依据单节点存储最优数据量考虑,同时考虑GBase 8a MPP Cluster通常配置1副本,即主本+副本共2份数据,推算出集群规模评估公式为:

集群规模=(迁移裸数据+未来增长的数据量)*2÷单节点数据量(非压缩的裸数据)

在评估集群规模时需要注意以下两点:

1、推荐使用SSD、Nvme等磁盘,磁盘利用率建议不超过80%,即存储5T(压缩数据)的数据文件的情况下,应准备7T(压缩数据)左右的可用磁盘容量;

2、对于SAS、SATA等类型磁盘,其磁盘性能随着容量增加性能逐步衰减,当总容量达到70%以上后IO性能出现急剧下降,因此建议使用SAS、SATA等磁盘的集群,每个节点应预留足够的磁盘空间,如5T(压缩数据)数据文件情况下应准备不少于8T(压缩数据)的可用磁盘容量。

三、替换案例

某实际替换Netezza案例中,该项目Netezza主要承接外部传输的数据,存储管理内部数据,为上层应用层提供及时有效的数据查询分析。Netezza硬件配置及部署GBase 8a MPP Cluster硬件配置见表2-3,部署规模为6个节点(3个管理节点,6个数据节点),入库非压缩裸数据为12T。

1)部署GBase 8a MPP Cluster硬件配置评估

本案例中依据Netezza一体机硬件配置,按照2.2章节硬件评估方法,评估部署GBase 8a MPP Cluster硬件配置,详见表2-3。GBase 8a MPP Cluster单节点CPU内核数略高于Netezza一体机每刀片CPU核数。磁盘容量评估依据Netezza现有裸数据,同时再考虑未来数据增长量,故磁盘容量评估约为Netezza一体机的2倍,内存依据每CPU核心管理16GB内存算,12核CPU应该为16*12=192,推荐256内存。

表2-3

分类

配置项

配置情况

Netezza一体机整体硬件配置

Netezza计算节点整体CPU配置情况(SMP HOSTS节点不计算)

每刀片CPU颗数=2颗

每刀片CPU核数 = 2 * 4 = 8核

Netezza计算节点整体内存配置情况 (SMP HOSTS节点不计算)

每刀片24G

总体内存容量 = 24G * 7 = 168G

Netezza整体磁盘存储容量

48块 SAS盘  

16T空间*4=64T未压缩数据

部署GBase 8a硬件配置

CPU配置

单台服务器CPU=2 颗

单台服务器CPU核数=2*6=12核

内存配置

单台服务器内存:256G

总体内存容量 = 256G * 6 = 1536G

磁盘存储容量

磁盘:15000转SAS盘;

单台服务器磁盘容量:600G*10

总体磁盘容量:600G*10*6≈35T

2)集群规模评估

举例原始非压缩数据为12T,依据2.2章集群规模评估方法,评估步骤如下:

  • 非压缩裸数据存储需求为12TB,配置1副本,不考虑未来增长的数据量,单节点按照推荐值5T(15T非压缩数据)计算,同时遵照GBase 8a MPP Cluster部署要求,数据节点在10以内,管理节点最少为3个,故集群规模至少为3个(12*2÷15≈3)。
  • 结合客户未来数据增长的需求,新系统性能提升的需求,以及实际项目经费预算,最终推荐客户部署6个节点(3个管理节点+6个数据节点)。

3 迁移方案

在实施Netezza到GBase 8a MPP Cluster迁移工作前,应进行迁移方案、迁移计划、迁移评估等工作,形成可落地实施的迁移方法和计划。

3.1迁移内容

Netezza迁移到GBase 8a MPP Cluster一般涉及到的工作内容主要包括三类:数据库对象迁移、数据迁移和业务迁移。

1、数据库对象迁移:从Netezza导出DDL脚本,按照GBase 8a MPP Cluster语法批量修改脚本,确保在GBase 8a MPP Cluster中成功创建对象表。

2、数据迁移:在Netezza数据库中,按规定十六进制分隔符及字符编码将历史数据通过创建外部表CREATE EXTERNAL TABLE或者使用nzsql -c “select * from tb” 方式导出成文本文件,借助GBase 8a MPP Cluster load装载工具加载数据入库。

3、业务迁移:该阶段将Netezza的存储过程,按照GBase 8a MPP Cluster的存储过程的语法进行转换,转换过程中根据函数对照表替换函数,不支持的函数等,需要手动进行改写。

3.2迁移流程

在进行Netezza迁移工作时,可以参考如下流程开展迁移。
1、采集原数据:统计原数据及磁盘空间使用情况;
2、导入表结构:根据Netezza表结构,创建GBase 8a MPP Cluster库及表结构;
3、数据分类:统计Netezza数据库中表的数据量(select count方式),并按照数据量大小分类;
4、原数据导出:根据第3步统计的表,对于Netezza数据库中的数据,按批次导出文本文件,并指定服务器进行存放;
5、数据加载:通过load data infile方式将导出的数据文本文件加载到GBase 8a MPP Cluster数据库中;
6、数据验证:通过创建存储过程,建立统计表,对原数据及新数据进行数据校验对比,确保GBase 8a MPP Cluster数据与Netezza数据一致;
7、增量数据导入:全量数据导入后,根据项目时间点确认增量数据并导入,进行数据校验。

3.3表结构迁移

数据库对象迁移主要包括表结构、字段等对象的迁移工作。对于Netezza数据库中的数据库对象,如表的列名、数据类型、长度、精度、约束、索引等。需要和GBase 8a MPP Cluster数据库所支持的数据库对象进行比对和差异转换,将需要迁移的数据库对象迁移到GBase 8a MPP Cluster数据库系统中。GBase 8a MPP Cluster作为数仓数据库,建表语法符合SQL标准,迁移时需要针对分布式列存数据库的技术特性,结合表的业务使用场景,设定好表的数据分布方式(随机表、分布表、复制表),数据压缩方式使用默认值(或根据需求进行调整)。

3.3.1表结构迁移

1、表迁移
GBase 8a MPP Cluster作为数仓数据库,建表语法符合SQL标准,但语法细节与Netezza仍略有差距。迁移时,Netezza数据库中的表列注释需要comment on语句实现,GBase 8a MPP Cluster中采用comment作为关键字, “--” 均为可忽略注释的意思。

2、随机分布表
Netezza需要显示声明distribute on random表示采用random方式进行数据分布,GBase 8a MPP Cluster在不指定分布键时,默认采用random方式进行数据分布。故迁移时需要注意两者语法的差别。

3、复制表
Netezza数据库不支持复制表(各分片数据相同的表),GBase 8a MPP Cluster支持复制表,迁移时,可将数据量较小且关联时经常使用的表(如维度表)建成复制表,关联时可避免各节点间不必要的数据拉取操作。

4、数据分布键的选择
Netezza数据库在建表时,不指定分布键,Netezza会自动选择一个列作为分布键。GBase 8a MPP Cluster V953版本产品,支持多分布键的选取,迁移时一般延用Netezza表上的分布键,使用Distributed by的方式即可。

5、压缩策略的选择
GBase 8a MPP Cluster数据库可以指定每个表的压缩算法。压缩算法分为(5,5)、(3,1) 两种压缩算法。(5,5)压缩算法是轻量级压缩算法,压缩比一般可以达到3:1或4:1左右,有助于提高查询性能。(3,1)压缩算法是重量级压缩算法,压缩比一般可以达到10:1至20:1左右,但是数据库的查询性能不高。如项目无特殊压缩要求,一律使用(5,5)压缩算法。

6、临时表
GBase 8a MPP Cluster临时表是会话级的,会话断开会自动删除,因此如果需要保留中间表数据,不要创建为临时表。如果创建临时表,在create后增加TEMPORARY关键字。

7、字段
GBase 8a MPP Cluster作为关系型数据库,字段的定义与传统关系型数据库字段定义相似,迁移时可参考南大通用提供的相关文档,用于指导GBase 8a MPP Cluster与Netezza数据库的字段语法对比,包括对字符、数字、日期、大字段等字段类型的映射关系。

8、索引
GBase 8a MPP Cluster是分布式列存数据库,主要面向海量数据查询及统计分析类业务,与传统数据库在架构和技术实现上存在差异,支持的索引及实现形式也会有所不同。其在索引方面实现的原则是全列支持、自动化维护、以代价相对小的粗粒度索引实现过滤,针对精确查询的进一步过滤优化则可采用HASH索引。而Netezza全字段的粗粒度索引只保存每个extent的最大值和最小值。配合聚丛基表技术,只能支持最多2个字段的优化。
GBase 8a MPP Cluster HASH INDEX存储是索引列值经过HASH计算后的键值对应的物理存储地址,所以创建HASH INDEX后,基于索引列的等值查询("=","IN"和"<>”)的性能会提高,尤其在表中的数据量非常大的情况下。
Netezza表结构中含有ORGANIZE ON关键字的,是Netezza的聚簇索引,迁移后进行性能优化时,可以考虑将聚簇索引列进行排序。

3.4数据迁移

数据迁移是整个数据库迁移中非常重要的一环,该工作包括数据初始化全量同步和数据日常定期同步。初始化全量同步是将历史数据从现行数据仓库系统全量同步到新建数据库,日常定期同步是指在完成初始化全量同步,与现行数据仓库的数据追平后,改由从平台脚本定期向目标数据库进行数据同步。
海量数据场景下主要采用效率更高的数据批量导出、批量加载方式。

3.4.1数据迁移前准备工作

Netezza正式迁移前,可以提前进行如下工作,为后续迁移做准备:
1、考虑数据安全性,建议向客户申请Netezza数据库普通⽤户(⽆删除权限),该用户只具有select和导出权限。
2、对Netezza中的库及库内的表进行分类及统计,按数据DDL、DML操作及数据表的重要性进⾏分类。根据分类原则,对表进⾏优先级排序。统计每张表的时间列(主要列名),为后期按where条件时间列导出全量数据做准备。
3、对于数据中含有“null”及前后有空格的,要提前与客户沟通,空格是否保留,确保数据的⼀致性。
4、迁移前,区分原数据哪些是全量数据,哪些是增量数据。原则可以通过Netezza数据DDL操作表及数据表重要性,来区分全量数据与增量数据。因此对于全量与增量数据划分需要与应用开发商沟通确认。
以单表举例,例如⼀张Netezza数据DDL操作表,根据年份或⽇期,第⼀次⼊库时间截⾄2021年10⽉的数据不在更新(此为历史数据,也为全量数据),2021年11⽉的数据,根据存储过程,每天更新11⽉份数据(此为更新数据也为增量数据)。对于此表导出时,根据where条件,导出全量数据(第⼀次⼊库时间截⾄2021年10⽉)。
对于增量数据,需考虑并⾏加载⽅式,加载数据分别向Netezza与GBase 8a MPP Cluster 进⾏数据加载,加载后进⾏数据⽐对。以单表举例,如⼀张Netezza ddl操作表,此表为临时数据,则不存在全量与增量数据。
5、全量数据迁移的时间窗口评估决定全量迁移是一次性还是分批,影响全量数据迁移的方案因素有一下几个方面,迁移前需要实施人员进行如下评估。

  • 源数据库迁移数据量:需要实测以评估源库内数据的压缩比;
  • 业务允许的停机时间窗口(此过程中源库需要处于只读状态,且负载要轻):是硬约束条件;
  • 源数据库数据导出性能:需要实测,确定导出性能;
  • 加载文件服务器台数、IO性能、与8a集群网络带宽是迁移环境制约因素;
  • GBase 8a MPP Cluster节点的加载性能:需要综合考虑IO性能和网络带宽;
  • 增量业务的类型append only、IDU、拉链表每次都全量:决定增量追跑的方式,是否支持分批迁移;
  • 数据仓库设计上是否支持分层、是否支持数据加工幂等特性:决定迁移是否可以按业务或者层次进行纵向或横向的分批。

6、数据迁移所需临时空间评估

Netezza数据库中存储了大量数据,存在剩余的可用磁盘空间不足以支撑数据导出到本地空间的问题。通常采用如下方式处理:

  • 分批次导出,根据Netezza一体机剩余可用空间情况,逐表进行导出,将导出数据转移到文件服务器,大表数据导出可采用分批次导出方式;
  • 外接存储,如在Netezza一体机上挂载高容量的移动磁盘,挂载NAS文件服务器,使用NFS文件系统等方式,将Netezza导出的数据文件直接落地在外接存储上。

3.4.2 数据迁移时间窗口评估

迁移前实施人员需要评估项目整体迁移时间,是否满足应用开发商整体项目进度要求,评估公式如下:

数据迁移整体时间 = Nettezza导出时间 + GBase 8a加载时间 + 文件转移时间

文件转移时间 = 文件大小/磁盘或网络IO性能
(注:文件转移时间取决于数据文件导出到什么文件系统中。如按表分批次导出到Netezza一体机的文件系统中,则需要将表文件转移到文件服务器后,统一从文件服务器加载。)

Netezza导出时间 = Netezza存储数据量(单位GB) / Netezza并行导出性能(GB/小时)
(注:Netezza导出时间应包含在业务繁忙时间段不能执行数据导出的时间。通常每天可以有12个小时左右的时间窗口可以执行数据导出任务。)

GBase 8a加载时间 = Netezza导出数据量(单位GB) / GBase 8a并行加载性能(GB/小时)

GBase 8a并行加载性能 = 加载机台数 * 1000MB/s * 1/2 *3600

评估Netezza迁移时间时,需要注意以下几点:

1、Netezza存储数据量要转化为导出库外平面文件的数据量,因此要评估压缩比;
2、Netezza并行导出的性能需要实测,并考虑导出时Netezza的负载情况;
3、GBase 8a MPP Cluster并行加载性能需要实测,估算时间方法可参考计算GBase 8a MPP Cluster并行加载性能公式。

3.4.3数据卸载

在进行正式数据迁移工作前,数据卸载方案也是实施工程师考虑的一个环节,例如卸载数据所需时间,卸载后数据存储位置等。在某Netezza迁移实际案例中,Netezza网络环境为千兆,卸载Netezza裸数据20T,经过现场支持工程师测试,卸载速率仅为200M/S,卸载工作时间最多12小时。经过评估,在上述情况下,卸载20T数据最短需要1个月时间。考虑到最终项目完工时间节点,客户升级Netezza的千兆网环境为万兆网,卸载速率提升至700M/s,卸载数据时间压缩三分之二,极大缩短了整个项目周期。因此在迁移前,实施工程师需要评估卸载数据时间(具体评估方法可见3.4.2数据迁移时间窗口评估)

目前客户生产环境需要替换的Netezza一体机磁盘容量大都有限,卸载数据到本地,需要考虑卸载数据的存储问题,可以通过NAS方式存储或者外挂磁盘的方式存储卸载数据,具体以何种方式,还需要结合项目实际情况考虑。

Netezza卸载数据可以通过CREATE EXTERNAL TABLE或者使用nzsql -c “select * from tb”导出方式进行,两种方式需要根据实际情况结合使用。

采用nzsql -c “select * from tb”导出优点是可指定换行符,方便数据加载,卸载小表或带回车的表可以用该方式,缺点卸载速率较慢。
采用CREATE EXTERNAL TABLE外部表卸载数据优点是卸载速度快。千兆网络条件下,速度可达到200M/s;万兆网络条件下,卸载速率可达700M/s。卸载大表建议采用该种方式,分隔符使用十六进制符号,缺点卸载时无法指定包围符。

3.4.4数据加载

1、数据初始化全量同步

数据初始化主要是将现行数据仓库中的数据同步至新建数据仓库,达到双方数据一致,后续从平台脚本定期数据同步需要以此数据作为基础。初始化同步可分为一次性同步和分批追平式同步。 主要工作内容包括:

  • 创建表结构;
  • 利用LOAD DATA INFILE  SQL语句将数据进行加载;
  • 加载后,需要对导出数据条⽬数据与导⼊的数据条⽬,逐一比对;
  • 对于乱码数据,需要逐⼀核对。可通过Loader_log日志中,生成err报错日志来查看加载报错信息;
  • 如果是分批追平,则分批获取增量数据并加载,直至追平现行数据库。

2、数据日常定期同步

数据日常定期同步是在完成数据初始化全量同步后进行,为保持与源端数据的一致,根据数据同步时效性要求,进行定期数据同步的方式。只迁移原始数据,并不做数据二次加工。

3、数据获取(推送数据)

原始数据由上层系统,定时将数据文件存放在文件系统服务器中,并由文件系统服务器,通过SFTP方式加载到GBase 8a MPP Cluster数据库中,完成数据加载。

3.5业务迁移

3.5.1存储过程迁移

在Netezza构建的业务系统中,通常使用Netezza的存储过程完成数据加工处理逻辑过程,其主要将Netezza的标准扩展 SQL 转化成 GBase 8a支持的SQL,进行查询类操作,同时还要处理 Netezza中的存储过程、视图和用户自定义函数等,典型的数据应用包括查询、分析、报表等。
Netezza存储过程可以用脚本转化工具进行迁移,经过在实际项目验证,该工具可以完成存储过程90%迁移量,剩余10%需要人工手动改写迁移,为了保证人工迁移转换后 DML以及查询类代码或脚本转换后的可用性和一致性,采用如下原则进行转换。
1、保证原有业务逻辑、算法等功能的正确运行;
2、程序流程控制类脚本尽量少改变;
3、Netezza的 SQL 在某些细节上和 GBase 8a MPP Cluster 的 SQL 应用有细微的差别,迁移时需要对这些有变化的 SQL 进行改写。

3.5.2脚本程序迁移

客户的业务中,存在使用shell、python等脚本语言封装业务SQL的情况,统称为脚本程序。针对脚本程序的迁移,包含SQL语法的改写迁移、数据库接口的替换两部分。
SQL语法改写迁移可以通过脚本转化工具进行迁移,由人工进行迁移结果的检查和测试修改。
数据库接口的替换,如使用gccli工具、python api等替代Netezza数据库的客户端工具进行GBase 8a MPP Cluster的连接。
3.5.3开发接口迁移
该部分工作需要由应用开发商来完成,在其应用程序中使用GBase 8a MPP Cluster的JDBC、ODBC、ADO.Net等开发接口替换Netezza的开发接口,并完成SQL语法的改写。

3.6 迁移工具介绍

在GBase 8a MPP Cluster替换Netezza迁移工作中,使用迁移工具可以大幅降低迁移工作的人力和时间成本,同时减少手工迁移造成的迁移标准不统一等问题。目前提供如下产品化工具和脚本支持迁移:
1、GBase Migration Toolkit迁移工具是一款可以实现异构数据库进行数据迁移的工具。该工具可将源数据库中的表结构和数据迁移到目标GBase 8a MPP Cluster数据库中。完成基础表结构迁移后,还需要根据业务情况进行表结构的调整优化,如修改表类型,调整HASH分布字段等。

2、ntzddl2gb是一款用python编写的脚本转换工具,用于DDL迁移,支持comment迁移、分布列的迁移和字段类型的迁移,该工具可以完成表对象迁移99%的工作量。

3、ntzproc2gb是一款用python编写的脚本转换工具,可实现行存储过程90%的自动改写,该脚本支持如下内容的迁移:

支持%rowtype迁移,但需要先做DDL迁移,在库中执行完DDL后,该项迁移才能有效;

  • 对于CHARACTER VARYING(ANY)转换(ANY)为(10);
  • 转换chr函数到char;
  • ALIAS FOR $x别名转换到入参;
  • 转换raise notice到select、timestamp到datetime的替换;
  • 动态sql的变量声明及执行转换;
  • 变量赋值转换;
  • 异常处理的转换;
  • for循环转换;
  • 关联update的转换;
  • --注释的转换;
  • max、min多参数输入的转换;
  • truncate到trunc的转换;
  • char\的类型转换;
  • ::类型转换等。

3.7数据稽核

3.7.1稽核数据思路

稽核数据时可以采用如下两种思路:
1.自顶向下的稽核顺序:上层指标核对通过则可暂时不考虑底层的不一致问题;
2.自底向上的错误排查顺序:出现不一致的上层指标需要利用血缘关系图从底层开始排查。

3.7.2稽核方法

数据稽核包括原始数据稽核、加工处理过程间数据稽核,以及集市应用访问类数据稽核。根据数据生命周期决定,加工初期数据存在问题则势必影响后续各阶段的数据,通常可着重对重点业务的集市类数据进行稽核,发现问题后向前追溯逐步排查问题,或从原始数据进行稽核。
在对数据进行稽核时可采用先总后分的原则:

1.总量稽核
对数据的总量进行验证,总量指标包括:总记录数,度量指标的总值、均值、最大值、最小值等。总量正确说明数据没被重复装载或遗漏数据,总量不正确则需要检查装载程序,如果装载阶段没有问题,则需要检査数据的加工处理规则。 

2.分量稽核
在总量正确的前提下,对数据分布情况进行稽核,在这个过程中,需要对每个维度上的分布的每个度量进行查询,如果数据在每个维度上的分布都正确,则在组合维查询时数据也正确,即保证多维分析的正确性。

3.全面稽核
对于数量大难以校对的数据集,例如加工处理生成的中间及最终数据集,可将现行系统以及新建系统上处理的结果直接入库,进行完整比对。利用查询语句直接对比数据集间的差异。
原始数据稽核可分为初始化数据稽核和增量数据稽核,两类数据稽核方法如下:

  1. 初始化数据稽核
    记录条数:源系统记录条数、导出文件记录条数、加载入库的记录条数;
    指标核对:对度量值字段统一进行SUM计算后进行比对。
  2. 增量数据稽核
    数据加载完成后,进行数据比对及后续处理,以解决数据不一致问题,此时的处理需要人工介入,以便对不一致问题进行分析定位,提出解决办法,让数据尽快一致,以提升分析质量。

以上为迁移的方案介绍,后续文章将会展示几个项目实际迁移案例,敬请关注!