
# DWS-Connector版本说明
DWS-Connector版本发布包含：dws-client、dws-connector-flink、dws-flink-ingestion组件，入库相关均使用dws-client作业底层入库组件。
- [dws-client](https://support.huaweicloud.com/tg-dws/dws_07_0175.html#ZH-CN_TOPIC_0000002166775164)是一款集成了DWS JDBC的高性能数据库入库工具。
- [dws-connector-flink](https://support.huaweicloud.com/tg-dws/dws_07_0176.html#ZH-CN_TOPIC_0000002166615900)是在封装dws-client的基础上，对接开源Flink的工具。
- dws-flink-ingestion是在集成前两者的基础上，DWS提供的一个Flink入库作业包（**该组件当前未开放提供，如需使用请联系技术支持**）。
三个组件统一使用dws-client版本号：当前版本分为**1.x** 和**2.x** 两个系列。版本记录参见[表1]，各版本与jdbc的配套关系参见[表2]。
- **1.x版本将不再引入新的功能，仅对已有功能加固**。
- **2.x版本为长期演进版本，由于整体设计做了较大重构，部分功能使用会和1.x版本不兼容**。
因此1.x版本短期会持续维护修复重要问题，待2.x稳定使用后将停止演进1.x版本。
#### 版本变更记录
 表1版本变更记录 
| 版本           | 变更描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 备注                                                                                                                                                                                                                                      |
|:---|:---|:---|
| 1.0          | 初始化版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | dws-connector-flink仅发布Scala2.11 Flink 1.12版本                                                                                                                                                                                            |
| 1.0.2        | dwsclient优化异常重试逻辑，由所有异常重试修改为只重试：连接异常、数据库只读、超时、连接数过多、加锁异常五类异常。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | dws-connector-flink支持版本： Scala2.11： Flink 1.12、1.13 Scala2.12：Flink 1.12、1.13、1.15 |
| 1.0.3        | 1. 已知问题修复与性能优化。  2. 支持update写入场景。  3. 支持使用唯一索引。  4. 由于支持update模式，为避免原dwsClient中upsert接口歧义，故后续统一使用write接口承载写入操作，两接口能力一致推荐使用write。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | -                                                                                                                                                                                                                                       |
| 1.0.4        | 增加SQL执行超时时间，避免长时间阻塞。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | -                                                                                                                                                                                                                                       |
| 1.0.5        | 修复无主键表相同数据写入丢失问题。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | -                                                                                                                                                                                                                                       |
| 1.0.6        | 1. 优化攒缓存逻辑代码性能，提升在CPU不足场景的吞吐。  2. 增加临时表复用，避免在copy merge/upsert场景频繁创建临时表。  3. copy增加CSV格式，避免在数据复杂时受特殊字符干扰无法正常入库。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | -                                                                                                                                                                                                                                       |
| 1.0.7        | 1. 数据库重启中写入数据失败后支持重试。  2. 增加as方式创建临时表，解决在有主键表无法使用copy merge/upsert的问题。  3. 数据库字段适配为默认大小写不敏感。  4. Flink SQL增加打印主键参数，用于分析数据缺失时排查问题。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | -                                                                                                                                                                                                                                       |
| 1.0.8        | 1. 修复Flink SQL主键配置必须大小写和数据库一致问题。  2. 增加设置sink并发的参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | -                                                                                                                                                                                                                                       |
| 1.0.9        | 优化时间类型入库。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | -                                                                                                                                                                                                                                       |
| 1.0.10       | 1. 修复client并发执行delete和insert，导致有概率先执行insert后执行delete，当同主键数据在同一批缓存中先删除后写入会导致丢数据问题。  2. 修复Kafka写dws链路中偶现写DWS异常后丢数据问题。  3. 新增connector参数ignoreUpdateBefore，部分主要参数兼容flink-connector-jdbc。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | -                                                                                                                                                                                                                                       |
| 1.0.11       | 1. dws client write接口支持传入schema用于检查数据库字段是否和传入schema一致，如果缺少字段将自动新增字段。  2. 支持配置比较字段，必须满足新数据比数据库值大才会被更新。  3. flink sql支持逻辑删除。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | connector-flink新增 Scala2.12：Flink 1.17                                                                                                                                                                                                  |
| 1.1.0        | dws client 缓存写入性能优化                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | -                                                                                                                                                                                                                                       |
| 1.1.0.1      | 1. client适配bit类型入库。  2. client适配nvarchar为null时入库。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | -                                                                                                                                                                                                                                       |
| 1.1.0.2      | 修复问题： 1. 表字段大写报错  2. 当使用upsert入库，如果数据库类型为bigint，但是数据源第一条为int类型，后面为long类型并且超过int范围，报错超过int范围。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | -                                                                                                                                                                                                                                       |
| 1.1.0.3      | 修复问题： 1. 修复表名大写时读取binlog报错。  2. 修复copy模式下源数据带\\u0000报错问题。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | -                                                                                                                                                                                                                                       |
| 2.0.0-r0\~r2 | 2.x版本初始化： 1. 新增直连DN入库能力。  2. 重构缓存模型，表级别下新增分区级别缓存，每个表中可以有多份缓存，缓存通过分布列映射到不同分区中，可实现并发入库。  3. client初始化支持properties配置文件方式。  4. upsert、merge等操作强制要求前一批数据完成后才能执行，保证入库顺序和缓存写入顺序一致。  5. 数据类型的转换迁移至写缓存时，copy、upsert均可生效。  6. 适配Schema、表名、表字段、大写无法读取问题。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | -                                                                                                                                                                                                                                       |
| 2.0.0-r3     | 若干问题修复，主要包括： 1. flink sql binlog读取时，表名称配置为不存在表导致dws集群连接耗尽。  2. flink sql入库过程中如果dws发生故障，有概率触发单条数据丢失。   功能优化增强： 1. flink sql及API增加入库时延、入库速度指标。  2. 当无主键但是有唯一索引时可自动获取唯一索引。  3. jdbc连接增加标签。  4. 时间类型字段转换逻辑增强。  5. DwsInvokeFunction接口context使用Map接口。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | -                                                                                                                                                                                                                                       |
| 2.0.0.r4     | 修复flink sql中字段顺序和物理表字段顺序不一致的数据格式解析报错问题。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | -                                                                                                                                                                                                                                       |
| 2.0.0.5      | 修复问题： 1. 维表序列化报错问题。  2. 新增参数lookupBatchScanEnable支持维表批量读。  3. t点位重复消费导致基于binlog的聚合计算出错问题。   功能优化增强： 1. flink sql binlog能力增强。同步点位及时注册，定时打印BinlogQueueSize大小，提供跳过全量阶段的参数binlogSkipFullSync，提供过滤条件参数binlogCondition。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 适配Maven的版本号规则，修正版本号不携带字母，均采用数字和点进行命名。                                                                                                                                                                                                   |
| 2.0.0.6      | 修复问题： 1. 维表场景下当cacheType=ALL时初始化卡住的问题。  2. 直连DN场景下查表元数据未走索引导致性能不佳的问题。  3. Flink Checkpoint耗时过长的问题。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | -                                                                                                                                                                                                                                       |
| 2.1.0.1      | 修复问题： 1. PgConnection连接类型转换错误的问题。  2. 开启直连DN后，报错relation "public.pgxc_node_ips" does not exist的问题。  3. 部分类型转换错误的问题（如nvarchar2类型）。  4. Flink TIMESTAMP_LTZ类型报错问题。  5. source表中有timestamp同步数据时报错的问题。  6. truncate临时表失败导致数据重复的问题。  7. 使用临时表进行merge时未指定nodegroup的问题。  8. 使用临时表没有指定orientation和分布列，性能不佳的问题。  9. delete操作入库下游后被upsert操作覆盖的问题。  10. copy入库模式下，处理使用null 'null'的语法导致数据不一致的问题。  11. 使用copy+有主键表进行入库时，调整入库模式为copy_upsert。   功能优化增强： 1. Binlog全量同步时，如果开启了executeDirectOn，修改为直接使用SQL查询的方式查表。  2. 直连DN特性重构，计算Hash散列到DN的过程切换为使用动态库的方式。  3. 维表支持条件下推能力。   | 直连DN不需要再依赖UDF能力。                                                                                                                                                                                                                        |
| 2.1.0.2      | 修复问题： 1. 表有过增删列行为后，attnum值对应的分布列下标可能超过真实列数，导致的空指针问题。 2. COPY_MERGE模式下，开启大小写敏感仍入库失败的问题。 3. Binlog场景下checkpoint线程不再与工作线程共用连接池。 参数变更： 1. 废弃connectionMaxUseTimeSeconds参数。 2. 新增connectionMaxUseTimeThreshold参数，表示连接创建后强制释放时间的阈值，使用固定单位秒，默认值为3600。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | -                                                                                                                                                                                                                                       |
| 2.1.0.3      | 修复问题： 1. 直连DN场景下计算partition数组越界的问题。 2. 优化copyMerge\\copyUpdate\\copyUpsert的日志打印，按照各自type进行区分。 3. copy sql入库特殊字符，如\\0报错的问题。 4. Flink subtask消费慢影响性能的问题，去除ConverUtils数据类型转换的类型校验。 参数变更： 1. 新增dws.client.primary-copy-to-copy-upsert.enable参数。是否支持将有主键表使用copy模式强制转换为copy_upsert。此参数为了适配有主键时走更新的逻辑，避免同主键数据走copy报错。 2. 新增dws.client.copy.compatible-illegal-chars.enable参数。表示COPY语句是否支持compatible_illegal_chars参数，避免特殊字符在copy时报错。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | -                                                                                                                                                                                                                                       |
| 2.1.0.4      | 参数变更： 1. 新增connectionPoolUseUnfairLock参数。表示Binlog连接池是否开启公平锁，默认为true。 2. 新增connectionTimeout参数。表示Binlog连接池的连接超时时间，默认为30000ms。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | -                                                                                                                                                                                                                                       |
| 2.1.0.5      | 修复问题： 1. client的close方法调用后部分对象未清理导致的内存泄漏问题。 功能优化增强： 2. Binlog逻辑加固，在出现nodeCount为0的异常场景时提供重试。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | -                                                                                                                                                                                                                                       |
   
#### dws-connector与JDBC配套关系
 表2dws-connector与JDBC版本对应关系 
| dws-connector版本   | JDBC版本        |
|:---|:---|
| 1.1.0.1及之前        | 8.1.3         |
| 1.1.0.2、1.1.0.3   | 8.2.1.300-200 |
| 2.0.0-r0\~2.0.0.6 | 8.2.1.300-200 |
| 2.1.0.1及以后        | 8.6.1-200     |
   
#### dws-connector-flink与Flink版本配套关系
表3dws-connector-flink与Flink版本配套关系 
| dws-connector-flink版本 | 适配场景                                | Flink版本                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 对应包名                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 大小写敏感约束                | 下载地址                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|:---|:---|
| 1.0                   | Flink SQL + Stream API              | Scala 2.11：Flink 1.12                                                                                                                                                                                                                                                                                                                                                                                                                                                | dws-connector-flink_${scala.version}_${flink.version}                                                                                                                                                                                                                                                                                                                                                                                                                | 不支持。                   | [引入依赖下载地址](https://support.huaweicloud.com/tg-dws/dws_07_0179.html#ZH-CN_TOPIC_0000002166615872__zh-cn_topic_0000001903733186_section1463231125412)  |
| 1.0.2\~1.0.10         | Flink SQL + Stream API              | - Scala 2.11：Flink 1.12、1.13  - Scala 2.12：Flink 1.12、1.13、1.15        | dws-connector-flink_${scala.version}_${flink.version}                                                                                                                                                                                                                                                                                                                                                                                                                | 1.0.7开始仅支持数据库字段大小写不敏感。 | [引入依赖下载地址](https://support.huaweicloud.com/tg-dws/dws_07_0179.html#ZH-CN_TOPIC_0000002166615872__zh-cn_topic_0000001903733186_section1463231125412)  |
| 1.0.11\~1.1.0.3       | Flink SQL + Stream API              | - Scala 2.11：Flink 1.12、1.13  - Scala 2.12：Flink 1.12、1.13、1.15、1.17       | dws-connector-flink_${scala.version}_${flink.version}                                                                                                                                                                                                                                                                                                                                                                                                                | 仅支持数据库字段大小写不敏感。        | [引入依赖下载地址](https://support.huaweicloud.com/tg-dws/dws_07_0179.html#ZH-CN_TOPIC_0000002166615872__zh-cn_topic_0000001903733186_section1463231125412)  |
| 2.0.0-r0              | 仅 Stream API/Flink SQL，兼容Stream API | Scala 2.12：1.15                                                                                                                                                                                                                                                                                                                                                                                                                                                      | - dws-connector-flink  - dws-connector-flink-sql-${flink.version}           | 适配数据库字段、表名、schema大写读取。 | [引入依赖下载地址](https://support.huaweicloud.com/tg-dws/dws_07_0179.html#ZH-CN_TOPIC_0000002166615872__zh-cn_topic_0000001903733186_section1463231125412)  |
| 2.0.0-r1\~r4          | 仅 Stream API/Flink SQL，兼容Stream API | - Scala 2.11：Flink 1.12、1.13  - Scala 2.12：Flink 1.12、1.13、1.15、1.17、1.20   | - dws-connector-flink  - dws-connector-flink-sql-${flink.version}       | 适配数据库字段、表名、schema大写读取。 | [引入依赖下载地址](https://support.huaweicloud.com/tg-dws/dws_07_0179.html#ZH-CN_TOPIC_0000002166615872__zh-cn_topic_0000001903733186_section1463231125412)  |
| 2.0.0.5及以后            | 仅 Stream API/Flink SQL，兼容Stream API | Scala 2.12：Flink 1.12、1.13、1.15、1.17、1.20                                                                                                                                                                                                                                                                                                                                                                                                                            | - dws-connector-flink  - dws-connector-flink-sql-${flink.version}   | 适配数据库字段、表名、schema大写读取。 | [引入依赖下载地址](https://support.huaweicloud.com/tg-dws/dws_07_0179.html#ZH-CN_TOPIC_0000002166615872__zh-cn_topic_0000001903733186_section1463231125412)  |
   
