OB导入数据是选择OB Loader好还是选择Load data的方式好?

【 使用环境 】= 测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.1
【问题描述】请问ETL导出导入OB数据,是选择OB dumper/Loader 好,还是选择select into file/Load data方式比较好?
【复现路径】
【问题现象及影响】

【附件】

推荐使用obloader,它是目前效率最高的导数工具

1 个赞

回复:
obloader与load data 是相同的导入原理,两款工具都是读取并解析文件,组织成Insert SQL插入数据库。最大的区别是 obloader 是Java开发的客户端工具,消耗的是客户端资源;而 load data 是C++开发的服务端工具,消耗的是数据库服务器的资源;obloader 也提供大文件自动拆分,并行解析,分区路由,批量插入等若干特性加速导入性能。更多功能可以查阅官方文档。这里我贴一下 obloader 4.0.0 版本在内部的性能测试报告:

环境配置

OBDUMPER 4.0.0 导出 100GB TPC-H 数据

OBLOADER 4.0.0 导入 100GB TPC-H 数据

注意事项

  • 安装 JDK 1.8.0_3xx 以上版本;
  • 下载最新版本的导入导出工具,调整导入导出脚本中JVM参数;
  • 调整数据库内核中与性能有关的系统参数,要关闭服务端限流;

回复:
obdumper 也支持复杂的查询导出 —— 自定义查询导出。该功能与 select … into outfile; 相似。但是 obdumper 支持多种导出格式,例如:CSV, Insert SQL, ORC, Parquet。使用 ORC, Parquet 列存格式,默认启用压缩,存储成本会降低 70% 左右。

样例:

./obdumper ...省略若干命令行选项...  --query-sql ‘任意的查询语句’ 

用户只要保证 --query-sql 中指定的SELECT语句正确且性能符合预期,即可完成数据导出。典型的应用,例如:复杂联表查询等。

旁路导入功能做到更全面的话,后续可以使用旁路导入

是的,等待内核旁路写入接口正式发布的时候,LOAD DATA, INSERT INTO…SELECT, OBLOADER 都会支持旁路插入。数据的导入性能会再提升一些。