配景
大多数的数据库都配备了本身研发的导入导出工具,对于不同的使用者来说,这些工具可以或许发挥不一样的作用。例如:DBA可以使用导数工具举行逻辑备份恢复,开发者可以使用导数工具完成系统间的数据交换。这篇文章重要是为OceanBase的用户先容一下OceanBase自研的数据库导出工具——obdumper。让各人相识导数工具的发展历程和现状。
官方文档阐明过 obdumper 使用Java语言开发的,这里之以是选择Java语言,重要是为了办理跨平台的题目。毕竟平台适配相干的工作也是一件比较烦的事儿,事实上已经有效户咨询过 obdumper 是否可以直接运行在 x86, arm 等平台,好像一切都在当初语言选择的预料之中。虽然 OceanBase 对于 MySQL/Oracle 的内核特性具备较高的兼容性,但是开源的 MySQL/Oracle 生态工具是不推荐使用的,因其没有更好地兼容 OceanBase 内核的行为。我们没有选择魔改开源工具,而是选择自研的目的就是为了让其变得更加贴身。除此以外,也希望可以或许随着 OceanBase 自身业务的发展而能做到任意扩展。下面我们会从不同的角度来先容这款工具。
核心功能
简单说先容几个功能的应用场景:
- 导出过去某个时间点的汗青快照数据,便于后期的系统降级回滚;
- 导出一张表中满足指定条件的数据,定期导出数据举行业务分析;
- 导出的表数据文件举行高压缩处理,降低长期备份归档存储资本;
- 导出整库的数据定期举行备份归档,为了系统灾备大概合规审计;
- 导出的数据举行加工处理,例如:转换、脱敏等。合规使用数据;
上述功能是不是常常用在一样平常的开发、测试、运维等工作中?既要满足业务,又要与时俱进。以文件压缩来讲,常见的数据导出工具是将数据导出成CSV文件,再举行后置压缩,压缩效果并不好。为了让开发环境可以或许使用与生产相近的数据,可以对导出的数据举行脱敏,再导入到开发库中。导数工具的目标就是让数据可以或许在企业内部高效地流动起来,充分发挥业务数据应有的代价。
架构原理
obdumper 内部基于业务schema的定义计划了一套非常丰富的表数据切分策略(大概叫分片策略),一个库大概一张表举行多使命并行化处理,大幅提升数据的导出性能。固然,影响性能的因素有很多,例如:表布局计划,数据传输网络,数据落盘的IO 等。团体的框架是面向格式和存储举行扩展,像CSV,SQL等面向行存储的格式便于小数据量业务直接使用,例如:Excel 直接打开文件举行查看、分析;像ORC, Parquet 等面向列存储的格式可以存放大规模的表数据。同时,我们也将会支持将数据导出到不同的存储介质,让数据与存储充分解耦,促进数据跨平台的流动性。大抵的架构如下图所示:
提示:我们剧烈建议用户计划表布局时,为表添加主键。表的数据量庞大时,还要对表举行分区化改造,并且保证每一个分区内的数据相对均衡。
性能测试
使用TPC-H 100GB测试库按照不同的文件格式举行导出,由于 ORC/Parquet 导出过程中默认开启压缩,以是数据导出性能比CSV/SQL格式略低一些。现实业务中牺牲一点性能换取更低的存储空间,大多数用户还是能担当的。导出测试性能图表如下:
压缩测试
整库100GB数据按照 ORC/Parquet 格式导出,默认采用zstd压缩大约是 4 : 1。如果对 CSV 文件中雷同的数据采用后置压缩,压缩率远远达不到这么高。压缩率高低,不但与压缩算法相干,也与数据的特征也有很大的关系。不同的业务数据采用雷同的算法举行压缩后的效果差别也很明显,建议用户以现实的业务数据举行压缩为准。(压缩率的计算公式:Compression Ration ≈ Uncompressed Size/Compressed Size)
相干文档
官方文档: 导数工具
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |