u***t 发帖数: 3986 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: usatt (Easy Go Lucky), 信区: Programming
标 题: DW BI ETL 问题 - Data Validation and Recordset Comparison
发信站: BBS 未名空间站 (Fri Jul 15 16:08:29 2011, 美东)
我目前在某Forture 100公司主持data migration的接收测试, 坑爹的offshore把简单
的问题搞大搞复杂来多要钱, 弄得新的数据库妖精一样...
问题: 我的approach还能再好点吗?
Source: SQL Server 2005
Target: DB2
如何测试Data Migration? 两种方法:
1. Sequential comparison
从Source DB得出个recordset A;
从Target DB的出个recordset B;
从A取第一个record, 到B用loop来找, 找到看B中的相关data是否正确.
(* 我枪弊了这个方案! Millions of rows, dozens of millions of fields. 一
个table 都要用无穷无尽的时间来execute. 而且很可能就out of memory. 除非是spot
check, 否则不可行)
2. Parallel comparison (*我的方案)
从Source DB得出个recordset A;
从Target DB的出个和Recordset A identical的recordset B;
用SQL statement, 用Union All, Except等来找出mismatched的records
(* challenge是CTLLD的target DB被整得极其恶心, 和source DB牛头不对马嘴.
比如source 的 一个record, 到了target 就变成4个record分别在8个table里, 所以,
写出recordset B需要对business rules十分熟悉而且对工作人员的SQL 水平有要求...
这就是我目前的不爽的地方.)
哪位大侠有更好的建议? 或者来个安慰比如"没事, 这事本来就是很tedious的"什么的? | B*****g 发帖数: 34098 | 2 看一看zenny前面的贴子,先生成hash,hash不一样的肯定不同,hash一样的再double
check一下。
spot
,
..
的?
【在 u***t 的大作中提到】 : 【 以下文字转载自 Programming 讨论区 】 : 发信人: usatt (Easy Go Lucky), 信区: Programming : 标 题: DW BI ETL 问题 - Data Validation and Recordset Comparison : 发信站: BBS 未名空间站 (Fri Jul 15 16:08:29 2011, 美东) : 我目前在某Forture 100公司主持data migration的接收测试, 坑爹的offshore把简单 : 的问题搞大搞复杂来多要钱, 弄得新的数据库妖精一样... : 问题: 我的approach还能再好点吗? : Source: SQL Server 2005 : Target: DB2 : 如何测试Data Migration? 两种方法:
| u***t 发帖数: 3986 | | g***l 发帖数: 18555 | 4 一个RECORD变四个8个TABLE,做DW的?首先你这ARCHITECTURE不能有漏洞吧,什么数据
被清理被剔除,MATCH不上的怎么办,应该设计DW的时候就考虑了,LOAD完之后就是QA
和BA的工作了,每种情形都要考虑到,多个CASE测试。老印做的东西要很小心,我这招
DBA,来个几个老印,号称是SENIOR,结果比JUNIOR考的都差。如果我猜的不错,你这
是SQL SERVER转到已经建好的DB2里,不是ETL DW,原则上我觉得应该先把数据原封不
动LOAD到DB2里,看有什么问题,否则中间丢了东西根本就没地找去。 | u***t 发帖数: 3986 | 5 嗯, 确实只如此.
我的小组负责自动化测试
DB2接着Websphere Commerce, 确实是fixed的数据库, 老印做得, 我本人看里面的
frandulent的设计所以migrate好以后, 我在target里所有的数据都要看
QA
【在 g***l 的大作中提到】 : 一个RECORD变四个8个TABLE,做DW的?首先你这ARCHITECTURE不能有漏洞吧,什么数据 : 被清理被剔除,MATCH不上的怎么办,应该设计DW的时候就考虑了,LOAD完之后就是QA : 和BA的工作了,每种情形都要考虑到,多个CASE测试。老印做的东西要很小心,我这招 : DBA,来个几个老印,号称是SENIOR,结果比JUNIOR考的都差。如果我猜的不错,你这 : 是SQL SERVER转到已经建好的DB2里,不是ETL DW,原则上我觉得应该先把数据原封不 : 动LOAD到DB2里,看有什么问题,否则中间丢了东西根本就没地找去。
| y****w 发帖数: 3747 | 6 问问看能不能找个db2 federation的测试版或类似的东东,把sql server那边的表
catalog过来,然后用sql比。 | u***t 发帖数: 3986 | 7 我的core也是by SQL
【在 y****w 的大作中提到】 : 问问看能不能找个db2 federation的测试版或类似的东东,把sql server那边的表 : catalog过来,然后用sql比。
| w*r 发帖数: 2421 | 8 正解,先把data 分块(by geo indicator or time indicator),做hash sum, 这样找
出问题的时候再细分
double
【在 B*****g 的大作中提到】 : 看一看zenny前面的贴子,先生成hash,hash不一样的肯定不同,hash一样的再double : check一下。 : : spot : , : .. : 的?
| y****w 发帖数: 3747 | 9 退回原点。 这个问题有必要搞这么复杂么?还是说有些什么因为权限之类的不能做?
把那个src的集合想办法弄到db2那边去,只是几个M的数量级,硬件不太差sql不太弱加
上合适的索引难道还不够?看lz发帖子说到out of memory,难道说的是jvm oom? 在
java里面做这计算么?
【在 w*r 的大作中提到】 : 正解,先把data 分块(by geo indicator or time indicator),做hash sum, 这样找 : 出问题的时候再细分 : : double
| B*****g 发帖数: 34098 | 10 把数据拷过去没有技术含量呀
【在 y****w 的大作中提到】 : 退回原点。 这个问题有必要搞这么复杂么?还是说有些什么因为权限之类的不能做? : 把那个src的集合想办法弄到db2那边去,只是几个M的数量级,硬件不太差sql不太弱加 : 上合适的索引难道还不够?看lz发帖子说到out of memory,难道说的是jvm oom? 在 : java里面做这计算么?
|
|