GP数据移植注意事项

1. 移植/ETL开发过程中的注意事项
(1). 在功能没有变化的情况下,除性能问题外,最好保留脚本原来的逻辑,只进行语法移植(将Oracle的特殊SQL语法转换为Greenplum DB能识别的ANSI【美国国家标准委员会】语法);
(2).对于在朝GP数据库移植或新功能开发中需注意以下几类情况:
Ø ETL脚本中的Oracle创建临时表SQL语句,需要修改,注意数据类型、数据分布等;
Ø Oracle函数,如日期函数、字符处理函数等需要做相应转换;
Ø Oracle事务,Commit等相关语句,语法需要修改成标准ANSI语法;
Ø Oracle的OLAP函数,如RANK,GROUP BY等需要转换为Greenplum DB的OLAP语法;
Ø Oracle没有数据分布,需要认真分析现有模型和应用,选择合适的分布键,改写建表语句增加Distribution Key,形成Greenplum的物理模型;
Ø GP与Oracle分区(Partition)的实现不同,在进行物理模型迁移时重点考虑;
Ø Oracle中的存储过程,需要转换到Greenplum中的函数(Function),因为 GP中没有procedure和package的概念;
Ø 重新审查Oracle的索引,删除不必要的;在加载前删除索引,加载后重建;
Ø 索引仅仅对select/update/delete 有用,在insert时使用不到索引,因此在进行大批量数据插入时,为了提高效率,建议禁用全部索引;
Ø 对于复合索引的建立,最多不可超过3个字段,并且要把经常使用到的索引字段在建索引时需放在最前面,这样可以大大发挥索引的使用效率;同时,对于一次可以过滤掉很多数据的字段最好不要把索引建在其上(如:where sex=’男’);一般在多and连接时才使用复合索引;
Ø 在存储过程(SP)编写过程中,在需要用到like过滤的时候,需使用instr(‘column_name’,’match_char’)>=1来代替
Ø 在GP中的代码一律采用小写,因为在GP中自定义的函数或变量名等待是区分大小写的;
Ø 当对函数调用时,要保证入参的函数类型与所要插入表的字段类型一致,尤其是在直接使用时如果类型不一致将会出现异常;
Ø 对于转换函数命名采用:SF_层的简写标记_目标表名;
Ø 对于自定义公共函数命名采用:SF_PUB_源库相同函数名;
Ø 对于Oracle中有,而GP中没有的自己开发的公共函数命名采用:与oracle绑定函数相同的名字;

对于需要用到in做限制操作的部分,能够使用exists 或not exists代替的,尽量改成这种写法;



你可能感兴趣的:(GP管理)