由于高性能和缩短周转时间的额外优势,我正在尝试将所有数据从IBM DB2迁移到组织中的Netezza。
但我意识到Netezza没有主键概念?如果是,我可以尝试通过在Datastage中使用重复删除阶段来处理这些问题。
另外,如果我有任何限制要考虑或者我可以面对DB2到Netezza迁移的挑战,那么请你帮我理解一下吗?
答案 0 :(得分:0)
Netezza允许您指定主键和外键限制,但它们不会强制执行。这就是说它们纯粹是信息性的(对于用户和优化器来说是僵尸)。 ETL中一个格式良好的upsert进程是管理此问题的好方法。
关于您可能面临的其他问题,以下是一些想法:
代理键 确保使用Netezza的SEQUENCE对象或ETL工具中的代理键生成器生成代理键。避免在此过程中使用ROW_NUMBER,因为它通常会阻止您以这种方式使用系统的并行性质。
存储过程
存储过程应尽可能避免逐行/基于cusor的处理,因为这是另一种情况,您可能会阻止自己利用系统的并行性质。
SQL扩展函数
如果您发现依赖于DB2中存在的本地未在Netezza中找到的函数,请务必检查Netezza附带的SQL Extensions Toolkit中的可用内容,但不会自动安装/配置
<强>合并强>
如果您在当前环境中依赖MERGE,请注意您必须在v7.2.1上才能在Netezza中使用MERGE。否则,您必须将其分解为INSERT / UPDATE操作。
答案 1 :(得分:0)
在Netezza中加载数据后,我们使用的一种方法是创建一个View来访问数据并仅显示视图。该视图将具有内部逻辑以删除重复项。
祝你好运! 桑德兰