目录
应用分区实现大数据量抽取
B y 段丽霞
1. 基本 概念
数据库 分区 主要有两种形式:水平 分区和垂直分区。 如 下表所示, 说明 了分区的 概念:
对比项 |
水平 分区 |
垂直分区 |
定义 |
按记录进行 分区 ,不同的记录可以分开保存,每个子表的列数相同。 例如,表 T1 ,可以把 id 为单数的放到数据文件 P1 ,双数的放到数据文件 P2 |
按列进行分区,即把一条记录分开多个地方保存,每个子表的行数相同。 例如,表 T1 ,可以把 id 和 name 放到数据文件 p1 ,把 qty 放到数据文件 p2 。 |
特点 |
结构 相同,数据不同。 |
结构 不同,数据可能 不同 ,可能相同 |
分区是为了增加数据的并行度,根据系统资源如存储, CPU 等增加横向扩展能力。
2. DI 分区 功能说明
DI 产品中支持两种分区方案: 数据库 分区 和 求 余分区 。 如下表 所示 , 介绍了 DI 产品中的 两种 分区方案 :
对比项 |
数据库 分区 |
求余分区 |
定义 |
DI 中 数据库分区支持 oracle 数据库水平分区, |
对 某字段 值 通过求余 将 表数据划分为 N 个。 |
应用 场景 |
数据量 大,可以应用数据库物理 分区进行 并行操作,提升性能。 |
数据量大 ,可以应用求余 法 将数据分割为 逻辑上 的几个 分区并行 操作。 |
操作 步骤 |
|
直接在 转换中 应用分区 。 |
注意 事项 |
|
一般 来说,求余之后 划分的 表 分区比较均匀。如果 差异很大 ,则需要重新设计。 选择 字段和选择 求余的 数字是否合适。 |
4. 案例 - 数据分区
4.1. 步骤一 : 数据库连接设置 分区
如下图 所示, 编辑数据库连接,点击高级 - 使用集群,新建数据库水平分区方案,如下图所示:
4.2. 步骤二 :项目属性设置 分区
选中 项目,右键点击属性, 选择页签 【 分区 方案】 , 如下图所示 。点击按钮 【 新增 】 , 输入分区方案 名称, 这里 , 选择 【导入分区 】 (也 可以手动输入) 。
4.3. 步骤三 : 转换项设置分区
选中 需要 设置 分区的转换项 , 点击右键 , 弹出右键功能选项中的 【分区 】 ,如下图 所示 。
4.4. 测试 验证
最后 ,有必要验证一下 是否 有提升性能,达到预期效果 。 如果 未 达到效果,查看设计逻辑是否 有 问题 , 是否需要改进等。
5. 案例 - 求 余分区
5.1. 步骤一 :项目属性设置 分区
选中 项目,右键点击属性, 选择页签 【 分区 方案】 , 如下图所示 ,点击按钮 【 新增 】 , 输入分区方案 名称,在字段 【 分区 ID 】 中 输入 求余分区 需要设置 的 分区 ID 。
一般 来说, 分区 ID 的设置方法:
实施 分区的列如果类型为 整数 型 , 那么分区方案为 ,取 【 列 的值 / 分区 ID 的个数 】 的余数进行 分区 。
实施 分区的列如果类型为 字符型, 那么分区方案为 ,取该列 的哈希值进行 分区 。 哈希算法 略。
5.2. 步骤二 : 转换项设置分区
选中 需要 设置 分区的转换项 , 点击右键 , 弹出右键功能选项中的 【分区 】 ,如下图 所示 。
其中 , 【字段 】 为 需要进行分区的列 。
设置之后 ,工作区图标显示如下:
Attachments:
iUAP DI_应用分区实现大数据量抽取.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)