「瀚高数据库技术栈」瀚高db_bulkload


prtyaa
prtyaa 2024-01-12 14:04:17 64540 赞同 0 反对 0
分类: 资源 标签: 国产数据库
「瀚高数据库技术栈」瀚高db_bulkload

1  瀚高db_bulkload产品简介

瀚高db_bulkload 用于将大量数据加载到数据库。与传统INSERT/COPY等数据加载方式相比存在较大的差异。INSERT处理机制涉及查询分析、查询重写、查询规划、执行等过程,一条INSERT就会开启一个事务,批量插入数据时这种开销是很影响性能的;COPY的处理方式,跳过以上查询分析、查询重写、查询规划等过程,性能优于INSERT,但频繁的内存操作及WAL日志写入,仍不具备快速导入海量数据的处理能力。
瀚高db_bulkload 的处理方式是绕过了共享内存,不写日志,直接写入文件,速度远超传统数据加载工具。 同时,db_bulkload 支持更多特性,支持灵活的文件输入、网络输入以及SQL函数输入;输入格式支持CSV以及binary;数据加载支持多进程的multi-process模式,速度更快,支持用户自定义的filter,支持唯一约束以及非空约束等等。
db_bulkload 支持PostgreSQL 9.6以上版本、瀚高系列数据库。

2  瀚高db_bulkload架构设计

postgresql脚本

该脚本是pg_ctl的包装器命令,可以启动和停止PostgreSQL数据库服务,脚本内部包含了db_bulkload自身的逻辑处理和原生PG的pg_ctl命令。
db_bulkload提供了便捷的postgresql脚本方式,封装pg_ctl数据库管理及恢复模式于一体,完成数据恢复;脚本内部在执行pg_ctl之前首先检测是否需要执行db_bulkload的恢复模式,如果需要则自动执行恢复模式。

db_bulkload程序

该程序用于加载数据。内部调用PostgreSQL的用户定义函数pg_bulkload()并执行加载。pg_bulkload()函数将在db_bulkload安装期间创建。此命令的使用包括以下三步:
1、编辑一个控制文件,控制文件里包括了加载数据的一些设置,比如输入文件的位置,输出文件,文件格式等,也可以使用命令行参数,路径需要绝对路径。
2、执行的过程中会产出一个状态记录文件。
3、如果使用控制文件,可以使用相对路径。

用户定义函数pg_bulkload()主要由读、写两个模块组成,其基本架构图如下:

图片

reader模块负责读取输入数据,并对其进行编码检查与转换、执行filter、检查约束。writer模块负责将数据加载到表。

3  瀚高db_bulkload产品优势

l 快速加载巨量数据;

l 灵活的输入输出设置;

l 支持constrains与filter。

4  瀚高db_bulkload产品的功能

以下详细功能描述参考《瀚高数据加载工具(db_bulkload)V1.0技术白皮书 》。

4.1批量加载数据

db_bulkload具备快速加载海量数据的功能。该工具为用户提供了“命令行+参数”以及“控制文件”两种方式加载数据。各参数使用请参考4.5节。
以“命令行+参数”方式举例如下:
db_bulkload -i ./file_name.data -O table_name -l ./file_name.log -P ./parse_bad.log  -o "TYPE=CSV" -o "DELIMITER=|" -d postgres -U postgres
File_name.data 文件中的数据将被加载到table_name 表中,数据格式为CSV,列分隔符为|。日志文件为file_name.log,解析错误保存在parse_bad.log文件中。
以“控制文件”方式举例如下:
db_bulkload  ./file_name.ctl -d postgres -U postgres
控制文件file_name.ctl包含如下内容:

图片

如果db_bulkload成功完成数据加载,结果如下:

图片

4.2数据恢复

db_bulkload提供了便捷的postgresql脚本方式,封装pg_ctl数据库管理及恢复模式于一体,完成数据恢复;脚本内部在执行pg_ctl之前首先检测是否需要执行db_bulkload的恢复模式,如果需要则自动执行恢复模式。

4.3数据过滤筛选

db_bulkload支持自定义filter函数对输入数据进行逐行过滤,满足过滤条件的行将会被加载到数据库中;用户可以自行编写filter函数并在db_bulkload参数列表中指定。
filter函数举例:

CREATE FUNCTION sample_filter(integer, text, text, real DEFAULT 0.05) RETURNS record

    AS $$ SELECT $1 * $4, upper($3) $$

    LANGUAGE SQL;

4.4数据约束检查

通过CHECK_CONSTRAINTS 参数开启后在加载数据时进行检查,仅支持唯一约束与非空约束。

4.5参数设置

提供丰富、灵活的参数设置,既可以命令行参数形式使用,也可以集中写入到控制文件中。
1. 命令行参数
加载选项表

图片

连接选项表(可以环境变量代替)

图片

2. 控制文件参数

图片

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
prtyaaL1
粉丝 1 资源 1949 + 关注 私信
最近热门资源
国产操作系统环境搭建(内含镜像资源链接和提取码)  97
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD  93
分享几个在日常办公中可以用到的shell脚本  88
bat脚本生成查看电脑配置\硬件信息  83
以openkylin为例编译安装内核  81
常见系统问题及其解决方法  81
分享解决宏碁电脑关机时自动重启的方法  78
loadrunner常见问题整理  75
统信uosboot区分未挂载导致更新备份失败  73
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作  71
最近下载排行榜
国产操作系统环境搭建(内含镜像资源链接和提取码) 0
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD 0
分享几个在日常办公中可以用到的shell脚本 0
bat脚本生成查看电脑配置\硬件信息 0
以openkylin为例编译安装内核 0
常见系统问题及其解决方法 0
分享解决宏碁电脑关机时自动重启的方法 0
loadrunner常见问题整理 0
统信uosboot区分未挂载导致更新备份失败 0
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作 0
作者收入月榜
1

prtyaa 收益401.13元

2

哆啦漫漫喵 收益253.43元

3

zlj141319 收益238.36元

4

IT-feng 收益219.97元

5

1843880570 收益214.2元

6

风晓 收益208.24元

7

777 收益173.2元

8

Fhawking 收益106.6元

9

信创来了 收益106.03元

10

克里斯蒂亚诺诺 收益91.08元

请使用微信扫码

添加我为好友,拉您入交流群!

请使用微信扫一扫!