IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 炫“酷”行动-人大金仓有奖征文--金仓分析型数据库迁移IBM Netezza一体机技术可行性 -> 正文阅读

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

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

KADB

备注

VARBINARY(n)

支持

支持

通过varbit类型支持

ST_GEOMETRY(n)

支持

支持

通过PostGIS支持

字符数据类型
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) ]替代

精确数字类型
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§

支持

使用numeric [ § ]的别名decimal [ § ]

numeric

支持

使用numeric的别名decimal

decimal

支持

非精确数字类型
Netezza

KADB

备注

float§

支持

支持

可以用decimal(p)替代

real

支持

相当于float(6)

支持

double precision

支持

支持

逻辑数字类型
Netezza

KADB

备注

boolean (alias bool)

支持

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

支持

时间类型
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秒

不支持

二、SQL语法差异
MERGE INTO 语句(不支持)
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 语句。
Create table语句
Netezza数据库表的分布键由1到4个列组成,并通过关键字DISTRIBUTE ON指定,支持的数据分布包括:HASH、RANDOM。使用关键字ORGANIZE ON可以将1到4个列组成一个簇,同一个簇中的列物理上保存在一起。

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

database.schema.table

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

database.table
GROOM TABLE语句
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;

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

Read committed
Read uncommitted
支持下面的事务语法:

BEGIN、START TRANSACTION开启一个事务
END、COMMIT提交一个已经开启的事务
ROLLBACK回滚事务中所作的所有操作,恢复数据到事务开始前的状态
SAVEPOINT在事务中标记一个锚点,支持部分事务回滚
ROLLBACK TO SAVEPOINT回滚一个事务到标记的位置.
RELEASE SAVEPOINT 释放事务中使用SAVEPOINT标记的锚点位置
Repeatable read
Serializable
迁移方案
IBM datastage工具迁移
迁移步骤
配置ETL工具的数据源端(Netezza)连接,按照表梳理的结果配置表的迁移(迁移涉及到拉链表和增量表)
配置ETL工具的数据目标端(KingbaesMPP)连接
配置迁移作业
按照第6章的数据校验方案进行迁移后的数据校验
方案存在问题及解决
使用ETL工具可能存在的数据不一致问题:

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

对于问题3,需要测试估算Datastage在现场硬件配置的情况下实际的迁移效率,评估是否能在规定的迁移时间窗口内完成迁移。同时对需要迁移的数据做梳理统计,将表分批迁移。首先,迁移保证应用运行必须的数据,在不影响应用运行的前提下,逐步将其他历史数据做迁移。对于增量表,按天为单位迁移最近的数据,历史数据可以逐步追加迁移。
nzsql的-o参数导出文本迁移
迁移步骤
使用Netezza的nzsql工具将表的数据导出为文本,例如
nzsql -t -d iss_testdb -u portal -pw portal -o ‘zb.txt’ -c “SELECT …… FROM ZB_METRICS” -F ‘|’

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

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

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

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

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

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

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

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

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

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

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

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

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

对于问题1,目前缺乏原厂技术支持的情况下,只能在测试过程中减小导出工作对源数据库的压力。另外建议在数据库运行压力低峰时执行导出任务,并做好数据库宕机恢复预案。
数字精度问题
迁移效率问题
————————————————
版权声明:本文为CSDN博主「littlegirll」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/littlegirll/article/details/120688286

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-13 11:30:47  更:2021-10-13 11:31:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:59:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码