MySQL 到 Iceberg 同步
简述
本文主要介绍 CloudCanal 如何快速构建一条 MySQL 到 Iceberg 数据迁移同步链路。
Iceberg 简介
Iceberg 是什么?
Iceberg 是一种开放的数据表格式,包含 Catalog 和 数据存储 两种子概念。
Catalog 可简单理解为对数据的结构描述,如表列表、对应的表属性、包含的列、列类型、列长度等信息,这也是之所以为表格的原因。
数据存储 即以上 Catalog 数据 以及 实际业务数据 所组成的文件存放位置。
Iceberg 有什么特点?
Iceberg 架构开放,定义了 Catalog 、文件格式、数据存储、数据访问 等标准,从而被众多第三方组件实现和支持。
- **Catalog:**AWS Glue、Hive、Nessie、Jdbc,或者专用的 Catalog 服务通过 Rest 方式读写。
- **数据文件格式:**Parquet、ORC、Avro 等。
- **数据存储:**AWS S3、Azure Blob Storage、MinIO、HDFS、Posix FS 等各类云存储或本地存储。
- **数据访问 :**可通过类似 StarRocks、Doris、ClickHouse 等实时数仓,Spark、Flink、Hive 等流/批计算引擎检索、分析、操作数据和结构。
除了 开放 这一大特点,Iceberg 同时在 超大数据量存储 和 准实时增、删、改 之间实现了平衡。
下表从数据容量、增量实时性、事务支持、存储成本、架构开放度 5 个纬度,对各类数据库进行对比(仅作参考,欢迎讨论):
数据库种类 | 关系型数据库 | 实时数据仓库 | 传统大数据 | 数据湖 |
---|---|---|---|---|
数据容量 | 几 TB 级别 | 百 TB 级别 | PB 级别 | PB 级别 |
增量实时性 | 业务级别增量写入,延迟毫秒级别,万级别 QPS | 业务级别增量写入,延迟秒到分钟级别,千级别 QPS | 运维级别增量写入,延迟小时到天级别,个位数 QPS | 业务级别增量写入,延迟分钟级别,个位数 QPS(攒批) |
事务支持 | ACID 强一致 | ACID 强一致或最终一致 | 否 | 否 |
存储成本 | 高 | 高或很高 | 很低 | 低 |
架构开放度 | 低 | 中(存算分离) | 否 | 高 |
从上表来看,使用 Iceberg,即可得到一个 低成本、超大数据存储容量、丰富数据检索分析工具的数据库,从某种意义上来说,可以作为传统大数据系统的换代升级产品。
当然得益于其架构的开放性,还可以不断探索更多的数据使用场景。