亚信安慧AntDB数据并行加载工具的实现(二)

3. 功能性说明

本节对并行加载工具的部分支持的功能进行简要说明。

1) 支持表类型

并行加载工具支持普通表、分区表。

2) 支持指定导入字段

文件中并不是必须包含表中所有的字段,用户可以指定导入某些字段,但是指定的字段数要和文件中的字段数保持一致。

3) 支持导入部分记录

并行加载工具支持指定Where条件,只将符合条件的记录导入到数据库中。

4) 自动生成序列字段值

本工具支持自动生成序列字段值,有些表的字段设置了Default值为序列,用户可能需要数据库自己生成,并没有包含在文件中。

当该字段为非分片键时,我们可以使用数据库自有的功能,在插入时自动生成该字段值。但是当该字段为分片键时,我们需要先在加载工具中生成该值,然后根据该值进行分片,插入到对应的DN节点。

5) 无分片键文件导入

当文件中不包含分片键,并且没有Default值时,加载工具将该字段置为Null计算并插入相应节点。

6) 触发器

当导入的表包含触发器时,并行加载工具并不会做特殊的处理,当触发器涉及非本数据节点时,并行加载工具并不支持。例如一个表的触发器,该触发器会插入另外一张表,但是该表分片与原表不同,此时将会涉及多个数据节点。

7) 不支持辅助表

AntDB有辅助表功能,用来优化SQL语句的性能,该表中存放数据表的相应数据。当数据表有辅助表时,并行加载工具只能将文件导入到数据表,并不会修改相应的辅助表。

8) 支持编码转换

并行加载工具支持数据编码转换,在文件中数据和数据库的编码不同时,工具会对文件中数据编码的转换之后再插入数据库。

4.性能

并行加载工具相比Copy命令,有效提升了数据加载的效率。由于表字段的个数、类型及数据的不同,并行加载工具相对Copy命令所提升的倍率并不完全相同。下面以TPCC的数据导入进行性能的对比。

1000仓的数据,需要导入到表Bmsql_Stock的记录有1亿条,数据文件Stock.csv文件的大小为29GB。测试的AntDB集群有2个DN主节点。在此场景的测试中,加载效率提升了7倍左右,加载速度对比图如下所示:

图5 加载速率对比

Bmsql_Stock表结构如下:

图6 测试表的表结构

5. 总结

本文介绍了AntDB并行加载工具的实现方式和使用方法,通过多线程的方式实现并行处理文件数据,并加载到AntDB数据库,有效提升了加载的效率。

相关推荐
小陈工34 分钟前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
科技小花5 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸5 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain5 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希6 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神6 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员6 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java6 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿6 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴6 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存