栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

炫“酷”行动-人大金仓有奖征文--金仓分析型数据库迁移IBM Netezza一体机技术可行性

炫“酷”行动-人大金仓有奖征文--金仓分析型数据库迁移IBM Netezza一体机技术可行性

https://bss.csdn.net/m/topic/kingbase

本文正在参与“炫库”行动--人大金仓有奖征文

  1. 一、 数据类型兼容性   

  2. 通常异构数据库移植的工作量繁重。这些工作量主要来源于:在数据类型、SQL语言、PL/SQL语言、甚至客户端应用编程接口等诸多方面对两个数据库所进行的、大量的语法或功能的对齐处理。本节对不同数据类型做对比说明
  3.  二进制数据类型
  4. Netezza

    KADB

    备注

    VARBINARY(n)

    支持

    支持

    通过varbit类型支持

    ST_GEOMETRY(n)

    支持

    支持

    通过PostGIS支持

  5.  字符数据类型
  6. Netezza

    KADB

    备注

    Fixed length, character(n) (alias char(n))

    支持

    最大长度64000

    支持

    最大长度10485760

    通过char [ (n) ]类型支持

    Variable length, character varying(n) (alias varchar(n))

    支持

    最大长度64000

    支持

    最大长度10485760

    通过varchar [ (n) ]支持

    Fixed length, Unicode (alias nchar(n))

    支持

    最大长度16000

    可以用char [ (n) ]替代

    Variable length, Unicode (alias nvarchar(n))

    支持

    最大长度16000

    可以用varchar [ (n) ]替代

  7.  精确数字类型
  8. Netezza

    KADB

    备注

    byteint (alias int1)

    支持

    1字节,-128~127

    支持

    可以用smallint替代

    -32,768~32,767

    smallint (alias int2)

    支持

    2字节,-32,768~32,767

    支持

    integer (alias int and int4)

    支持

    4字节,-2,147,483,648~ 2,147,483,647

    支持

    bigint (alias int8)

    支持

    8字节,-9,223,372,036,854,775,808 ~9,223,372,036,854,775,807

    支持

    numeric(p, s)

    支持

    支持

    使用numeric [ (p, s) ]的别名decimal [ (p,

    s) ]

    numeric(p)

    支持

    使用numeric [ (p) ]的别名decimal [ (p) ]

    numeric

    支持

    使用numeric的别名decimal

    decimal

    支持

  9.  非精确数字类型
  10. Netezza

    KADB

    备注

    float(p)

    支持

    支持

    可以用decimal(p)替代

    real

    支持

    相当于float(6)

    支持

    double precision

    支持

    支持

  11.  逻辑数字类型
  12. Netezza

    KADB

    备注

    boolean (alias bool)

    支持

    取值为true(t)或者false(f)

    支持

  13.  时间类型
  14. Netezza

    KADB

    备注

    date

    支持

    支持

    time

    支持

    支持

    ime with time zone (alias timetz)

    支持

    支持

    timestamp

    支持

    支持

    interval (alias timespan)

    支持

    支持

    numeric(6,0)

    支持

    时间跨度,例如:010521代表1小时5分21秒

    不支持

    numeric(8,0)

    支持

    不支持

    numeric(14,0)

    numeric(15,1)

    numeric(16,2)

    numeric(17,3)

    numeric(18,4)

    numeric(19,5)

    numeric(20,6)

    支持

    例如:类型为numeric(17,3)的00017355018391999,表示1年73个月55天1小时83分钟91.999秒

    不支持

  15. 二、SQL语法差异

  16.  MERGE INTO 语句(不支持)
  17. MERGE INTO 语句根据与源表连接的结果,对目标表进行插入和更新操作,通常用来实现表同步。Netezza的MERGE INTO语法如下所示:

    MERGE INTO target_table [ [ AS ] target_alias [ ( column_alias_list ) ] ]
    USING source_table [ [ AS ] source_alias [ ( column_alias_list ) ] ]
    ON matching_condition 
    when_condition_then_action [, ...]
    [ ELSE IGNORE ]
    KADB不支持MERGE INTO 语句。
  18.  Create table语句
  19. Netezza数据库表的分布键由1到4个列组成,并通过关键字DISTRIBUTE ON指定,支持的数据分布包括:HASH、RANDOM。使用关键字ORGANIZE ON可以将1到4个列组成一个簇,同一个簇中的列物理上保存在一起。

    KADB除支持Netezza表的分布键特性外,还支持复制表(可以将数据量较小的维度表复制到集群中的每一个计算节点上,加快访问速度)和表分区功能(表按照分布键分布到计算节点中,在每一个计算节点上使用表分区将局部数据二次分组)
  20.  表的访问方式
  21. Netezza支持表的跨库访问特性,可以使用下面的语法访问位于不同数据库中的表:

    database.schema.table

    KADB不直接支持表的跨库访问,访问表的语法为:

    database.table
  22.  GROOM TABLE语句
  23. Netezza使用GROOM TABLE命令回收表中的过期数据并将delete语句影响的数据从磁盘上回收,在命令执行期间允许其他会话访问表,语法为:

    GROOM TABLE

    例如:

    MYDB.SCH1(USER)=> GROOM TABLE

    RECORDS ALL;

    KADB可以使用命令VACUUM命令达到同Netezza一样的功能,语法如下:

    VACUUM [({ FULL | FREEZE | VERBOSE | ANALYZE } [, ...])] [table [(column

    [, ...] )]]

    例如:

    VACUUM ANALYZE;

  24. 事务

  25. 数据库使用事务保证数据的完整性,处于同一事务的SQL语句要么都成功执行,要么都不执行。Netezza唯一实现了ANSI定义的4中隔离级别中的Serializable隔离级别。KADB实现了4种隔离级别:

  26. Read committed
  27. Read uncommitted
  28. 支持下面的事务语法:

  29. BEGIN、START TRANSACTION开启一个事务
  30. END、COMMIT提交一个已经开启的事务
  31. ROLLBACK回滚事务中所作的所有操作,恢复数据到事务开始前的状态
  32. SAVEPOINT在事务中标记一个锚点,支持部分事务回滚
  33. ROLLBACK TO SAVEPOINT回滚一个事务到标记的位置.
  34. RELEASE SAVEPOINT 释放事务中使用SAVEPOINT标记的锚点位置
  35. Repeatable read
  36. Serializable




  37.  迁移方案




  38. IBM datastage工具迁移
  39. 迁移步骤
  40. 配置ETL工具的数据源端(Netezza)连接,按照表梳理的结果配置表的迁移(迁移涉及到拉链表和增量表)
  41. 配置ETL工具的数据目标端(KingbaesMPP)连接
  42. 配置迁移作业
  43. 按照第6章的数据校验方案进行迁移后的数据校验
  44. 方案存在问题及解决
  45. 使用ETL工具可能存在的数据不一致问题:

  46. 文本乱码问题
  47. 数字精度问题
  48. 迁移效率问题
  49. 对于问题1、2,可以通过第6章的数据校验方案解决。

    对于问题3,需要测试估算Datastage在现场硬件配置的情况下实际的迁移效率,评估是否能在规定的迁移时间窗口内完成迁移。同时对需要迁移的数据做梳理统计,将表分批迁移。首先,迁移保证应用运行必须的数据,在不影响应用运行的前提下,逐步将其他历史数据做迁移。对于增量表,按天为单位迁移最近的数据,历史数据可以逐步追加迁移。




  50. nzsql的-o参数导出文本迁移
  51. 迁移步骤
  52. 使用Netezza的nzsql工具将表的数据导出为文本,例如
  53. nzsql -t -d iss_testdb -u portal -pw portal -o 'zb.txt' -c "SELECT …… FROM ZB_METRICS" -F '|'

    为了提高效率,多个表的导出可以写成脚本的方式进行,通过脚本控制导出任务的并发

  54.  将导出的数据拷贝到加载机
  55. 在KingbaesMPP数据库中创建表,选择合适的分布方式
  56. 使用批量加载工具gpload从加载机中加载数据到KingbaesMPP中,为了提高效率,多个表的加载可以写成脚本的方式进行,通过脚本控制加载任务的并发
  57. 按照第6章的数据校验方案进行迁移后的数据校验
  58. 方案存在问题及解决
  59. 使用nzsql导出表的数据为文本的方式存在下述的问题:

  60. 文本乱码问题
  61. 数字精度问题
  62. 迁移效率问题
  63. 对于问题1、2,可以通过第6章的数据校验方案解决。

    对于问题3,需要测试估算在现场硬件配置的情况下实际的迁移效率,评估是否能在规定的迁移时间窗口内完成迁移。同时对需要迁移的数据做梳理统计,将表分批迁移。首先,迁移保证应用运行必须的数据,在不影响应用运行的前提下,逐步将其他历史数据做迁移。对于增量表,按天为单位迁移最近的数据,历史数据可以逐步追加迁移。

    为了提高导出和导入的效率,在测试的基础上把数据导出/导入的步骤脚本化,通过脚本控制导出/导入的并发任务数。





  64. Netezza外部表导出文本迁移
  65. 迁移步骤
  66. 创建Netezza外部表,例如:
  67. CREATE EXTERNAL TABLE extemp SAMEAS emp USING (DATAOBJECT

    ('/tmp/emp.dat'));

  68. 将需要迁移的表数据通过外部表卸载为文本文件
  69. INSERT INTO extemp SELECt * FROM emp;

  70. 将导出的数据拷贝到加载机
  71. 在KingbaesMPP数据库中创建表,选择合适的分布方式
  72. 使用批量加载工具gpload从加载机中加载数据到KingbaesMPP中
  73. 为了提高迁移效率可以将上述的导出/导入步骤脚本化,并通过脚本控制数据导出/导入的并发。

  74. 方案存在问题及解决
  75. 使用外部表导出表的数据为文本的方式存在下述的问题:

  76. 使用Netezza外部表可能导致产品本身的bug,造成数据库宕机
  77. 文本乱码问题
  78. 对于问题2、3,可以通过第6章的数据校验方案解决。

    对于问题4,需要测试估算在现场硬件配置的情况下实际的迁移效率,评估是否能在规定的迁移时间窗口内完成迁移。同时对需要迁移的数据做梳理统计,将表分批迁移。首先,迁移保证应用运行必须的数据,在不影响应用运行的前提下,逐步将其他历史数据做迁移。对于增量表,按天为单位迁移最近的数据,历史数据可以逐步追加迁移。

    为了提高导出和导入的效率,在测试的基础上把数据导出/导入的步骤脚本化,通过脚本控制导出/导入的并发任务数。

      对于问题1,目前缺乏原厂技术支持的情况下,只能在测试过程中减小导出工作对源数据库的压力。另外建议在数据库运行压力低峰时执行导出任务,并做好数据库宕机恢复预案。
  79. 数字精度问题
  80. 迁移效率问题
  81. 转载请注明:文章转载自 www.mshxw.com
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号