可以对不同种类数据源进行数据汇聚,对于 MySQL、TiDB 等与 MySQL 协议兼容的数据源的集成,因为数据格式是一样的,基本不存在改动成本。
场景4:搭建 OLAP 应用OceanBase 是 HTAP 数据库,不仅 TP 能力强,还能够作为数仓来使用。Flink 中的 JDBC connector 支持写入数据到兼容 MySQL 协议的数据库,因此可以通过使用 Flink CDC 来读取源端数据,再将这些数据通过 Flink JDBC connector 写入到 OceanBase 中,将 OceanBase 当作目标端来使用。
目前,OceanBase 提供了 SQL、Table API 和 HBase API 三种数据使用方式,所有使用方式所需组件都已开源。
四、OceanBase Connector 未来展望
上图列出了 OceanBase CDC 方案现状。
OMS 社区版 :它是 OMS 商业版的功能子集,但是没有开源。作为白屏工具,其操作友好,且全增量一体化,附带数据校验和运维的能力。它的不足在于部署流程稍显繁琐,只对 MySQL 和 OceanBase 社区版两种数据源做了支持,且不支持增量 DDL。
DataX Canal/Otter :它是开源方案,通过 DataX Canal/Otter 做数据迁移工作。Otter 是 Canal 的父项目,主要针对异地多活,能够支持双向数据同步,其增量数据读取基于 Canal 。此方案的优势在于支持多种目的端,对 HBase、ES 以及关型数据库 RDB 都提供了支持;不足之处在于,Canal 和 Otter 做增量,DataX 做全量,增量和全量分开的方式比较割裂,衔接部分会出现数据冗余。
Flink CDC :纯开源方案,社区活跃,且社区用户增长速度快,支持多种源端和目的端,全增量一体化。同时,Flink 作为非常优秀的大数据处理引擎,可以做 ETL。其不足之处在于,OceanBase Connector 目前不支持增量 DDL,以及没有实现 exactly-once ,因此增量和全量的重叠部分可能存在数据冗余。
未来,我们首先会优化数据读取。对全量部分做并行化处理,使用新的 source 接口的并行化处理框架;增量部分,跳过 logproxy 服务,直接从 OceanBase 数据库拉取增量数据,即通过 JNI client 使用 obcdc 组件直接拉取数据。
其次,丰富功能特性。目前 Flink CDC 只支持社区版 OceanBase ,而 OceanBase 社区版和企业版在增量日志读取方面使用的组件完全一样,因此只需较小改动即可支持企业版的增量读取;支持增量 DDL、exactly-once 模式以及限速。
最后,提高代码质量。首先会增加端到端的测试;格式转化部分,使用 runtime converter 代替 JdbcValueConverters,提高性能;实现对新版 source 接口(并行处理框架)的支持。
提问/Qustions & 解答/AnswersQ1Flink CDC OceanBase Connector 开源后的易用性和稳定性如何?
易用性方面,开源一年以来,我们陆续增加了很多开源组件,包括 OMS、OCP 等非开源社区版生成功能的支持;稳定性方面,OceanBase 已经在蚂蚁内部大量应用, MySQL 兼容版本也已经在包括快手在内的 20 多家企业中投入大规模应用,因此无须担心其稳定性。