cdc db到es实时同步 - elastic 中文社区 · kafka es worker 同步程序 worker ... 4...

65
1 李猛 lemon 2019/11/27, 技术架构师, Elastic深度用户,@物流速运 CDCDBES实时同步

Upload: others

Post on 24-May-2020

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

1

李猛 lemon2019/11/27, 技术架构师, Elastic深度用户,@物流速运

CDC:DB到ES实时同步

Page 2: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

22

序言

• CDC概念‒ Change Data Capture 变更数据捕捉‒ 几乎所有数据库都基于WAL机制

• Elasticsearch是近实时数据库,不是实时数据库‒ 内部基于Refresh机制

• Elasticsearch不是关系型数据库,不具备关系数据库严格的 ACID 特性‒ Nosql是乐观锁模式‒ 关系数据库是悲观锁模式

• 任何两个数据库之间数据同步都有以下问题‒ 数据一致性‒ 数据实时性

概念定义

Page 3: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

3

01.需求背景DB到ES实时同步需求背景

Page 4: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

4

技术需求背景

• 复杂条件查询能力

• 关联查询效率低

• 不具备弹性扩展能力

• 索引创建/使用复杂度

• 超大数据量

DB局限性

Page 5: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

5

技术需求背景

• 复杂条件查询能力

• 关联查询效率低

• 不具备弹性扩展能力

• 索引创建/使用复杂度

• 超大数据量

DB局限性

• 高效查询效率

• 弹性扩展能力

• 索引创建/使用方便

• 反范式关联能力

ES互补性

Page 6: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

6

技术需求背景

• 复杂条件查询能力

• 关联查询效率低

• 不具备弹性扩展能力

• 索引创建/使用复杂度

• 超大数据量

DB局限性

• 高效查询效率

• 弹性扩展能力

• 索引创建/使用方便

• 反范式关联能力

ES互补性

• DB:我很全能

• ES :我很专注

DB vs ES

Page 7: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

7

业务需求背景

• 单业务领域水平分库分表

• 多业务领域垂直分库分表

业务领域复杂度

Page 8: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

8

业务需求背景

• 单业务领域水平分库分表

• 多业务领域垂直分库分表

• 水平分库分表的聚合查询

• 多业务关联联合查询

业务领域复杂度 业务查询需求

Page 9: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

9

业务需求背景

• 单业务领域水平分库分表

• 多业务领域垂直分库分表

• 水平分库分表的聚合查询

• 多业务关联联合查询

• 业务数据存储

• 业务数据查询

业务领域复杂度 业务查询需求 DB ES

Page 10: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

10

DB与ES结合问题

DB+ES结合

• DB解决了ACID事务

• ES解决了高效查询

Page 11: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

11

DB与ES结合问题

DB+ES结合 同步实时性

• DB解决了ACID事务能力

• ES解决了高效查询

• 同步实时性要求

• 同步实时性能力

Page 12: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

12

DB与ES结合问题

DB+ES结合 同步实时性 数据一致性

• DB解决了ACID事务能力

• ES解决了高效查询

• 同步实时性要求

• 同步实时性能力

• 如何保障一致性

• 如何修复数据

Page 13: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

13

02.同步场景表与索引映射关系

Page 14: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

14

单数据表=单索引一对一映射关系

订单表

Database Elasticsearch

订单索引

场景介绍:ES作为DB的映射DB为原始数据源ES为查询引擎

用途说明DB关联查询能力局限,水平分库分表数据实时查询要求不高DB索引能力局限DB解决一致性,ES解决查询性能

Page 15: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

15

单数据表=多索引一对多映射关系

场景介绍同一DB表成为多个索引的数据DB表作为索引主体对象DB表作为索引的子对象

用途说明DB关联查询能力瓶颈DB索引查询能力限制

订单表

用户订单索引

店铺订单索引

Database Elasticsearch

Page 16: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

16

多数据表=单索引多对一映射关系

订单表

订单商品用户索引

Database Elasticsearch

商品表

用户表

场景介绍:多个DB表一个索引大宽表结构

用途说明DB关联查询能力局限ES解决关联查询问题DB索引能力局限单领域业务通用查询能力

Page 17: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

17

多数据表=多索引多对多映射关系

场景说明多个DB表多个索引

用途说明DB关联查询能力局限DB跨库查询能力局限多个领域业务查询通用查询能力

订单表

订单商品用户索引

Database Elasticsearch

商品表

用户表

仓储表

商品仓储库存索引

Page 18: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

18

多源数据表=多索引多源多表多对多映射关系 表_1

索引_1

Mysql Elasticsearch

表_2

表_3

索引_2

Postgresql

Nosql

场景说明多种数据源表关系数据库/非关系型数据库多个索引映射

用途说明多领域业务关联查询

Page 19: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

19

03.技术方案解决数据实时性与一致性

Page 20: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

20

数据同步模式同步理论

推Push数据源主动推送到目标源

数据源 目标源

推Push

Page 21: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

21

数据同步模式同步理论

推Push数据源主动推送到目标源

拉Pull目标源主动拉取数据源

数据源 目标源

推Push

拉Pull

Page 22: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

22

数据同步模式同步理论

数据源 目标源

推Push

拉Pull

推+拉推+拉

推Push数据源主动推送到目标源

拉Pull目标源主动拉取数据源

推+拉数据源与目标源之间推拉结合

Page 23: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

23

CDC技术方案关键实现

dbdb启用cdc机制,记录变更到本地

cdc程序cdc程序订阅db变更记录

逻辑实现逻辑程序将db变更数据映射到es

CDC概要架构图

db(同步协议)

cdc程序(同步协议)

es

逻辑实现

同步输出

Page 24: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

24

案例:Mysql同步到ES基于mysql-binlog实时同步

Page 25: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

2525

案例:Mysql同步到ES技术架构

同步应用

Mysql(binlog)

Canal(binlog)

Scheduler调度程序

Kafka ES

Worker同步程序

Worker同步程序

Worker同步程序

Page 26: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

26

案例:Mysql同步到ESMysql-binlog:主从同步

Master主库:捕捉变更记录顺序保存到本地binlog文件

Slave从库:同步主库变更记录binlog文件回放主库binlog更新从库数据

Page 27: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

27

案例:Mysql同步到ESCanal:原理介绍

Mysql Canal

binlog

读取binlog写入binlog

Mysql-Slave Fake-Slave

Binlog启用选择Mysql从机启用binlog机制变更数据记录binlog文件

Canal读取数据伪装Mysql从机订阅Mysql同步拉取变更数据回放变更数据解析变更数据输出变更数据保证数据顺序

Page 28: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

28

案例:Mysql同步到ESCanal解析样本:库名、表名、操作

{"data": [

{"id": "1","product_name": "Name_456"

}],"database": "product_db","old": [

{"id": "1","product_name": "Name_123"

}],"table": "prodcut_table","type": "UPDATE"

}

Page 29: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

29

案例:Mysql同步到ESCanal解析样本:变更数据

{"data": [

{"id": "1","product_name": "Name_456"

}],"database": "product_db","old": [

{"id": "1","product_name": "Name_123"

}],"table": "prodcut_table","type": "UPDATE"

}

Page 30: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

30

案例:Mysql同步到ESCanal解析样本:历史数据

{"data": [

{"id": "1","product_name": "Name_456"

}],"database": "product_db","old": [

{"id": "1","product_name": "Name_123"

}],"table": "prodcut_table","type": "UPDATE"

}

Page 31: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

31

Canal:关键设置

• 单实例性能

• 集群服务

高可用

Page 32: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

32

Canal:关键设置

• 单实例性能

• 集群服务

• 逻辑表

• 分库分表

• 表主键设置

高可用 表映射

Page 33: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

33

Canal:关键设置

• 单实例性能

• 集群服务

• 逻辑表

• 分库分表

• 表主键设置

高可用 表映射 Topic

• 分区数量

• 分区键

Page 34: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

3434

案例:Mysql同步到ESKafka:存储机制

62%Supporting text goes here under the number

Page 35: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

3535

案例:Mysql同步到ESKafka:消费机制

Page 36: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

36

案例:Mysql同步到ES同步程序:同步任务调度

同步调度配置DB到ES数据映射Kafka到ES的映射

同步任务调度

Kafka配置

Elastic配置

Mapper映射

调度分配

调度控制

调度指标

Page 37: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

37

案例:Mysql同步到ES同步程序:同步任务调度 同步任务调度

Kafka配置

Elastic配置

Mapper映射

调度分配

调度控制

调度指标

同步调度配置DB到ES数据映射Kafka到ES的映射

同步调度分配调度算法分配调度操作控制调度指标监控

Page 38: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

38

案例:Mysql同步到ES同步程序:同步任务执行 同步任务执行

Kafka模块

Mapper模块

Elastic模块

Schedule模块

Kafka模块拉取同步数据提交消费位置

Page 39: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

39

案例:Mysql同步到ES同步程序:同步任务执行 同步任务执行

Kafka模块

Mapper模块

Elastic模块

Schedule模块

Kafka模块拉取同步数据提交消费位置

Mapper模块DB表与ES索引映射表字段与索引字段映射

Page 40: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

40

案例:Mysql同步到ES同步程序:同步任务执行 同步任务执行

Kafka模块

Mapper模块

Elastic模块

Schedule模块

Kafka模块拉取同步数据提交消费位置

Mapper模块DB表与ES索引映射表字段与索引字段映射

Elastic模块Bulk局部更新设置doc_as_upsert:true

Page 41: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

41

案例:Mysql同步到ES同步程序:同步任务执行 同步任务执行

Kafka模块

Mapper模块

Elastic模块

Schedule模块

Kafka模块拉取同步数据提交消费位置

Mapper模块DB表与ES索引映射表字段与索引字段映射

Elastic模块Bulk局部更新设置doc_as_upsert:true

Schedule模块执行状态控制执行状态指标

Page 42: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

4242

案例:Mysql同步到ES数据同步全过程

Mysql

Page 43: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

4343

案例:Mysql同步到ES数据同步全过程

Mysql

binlog

Page 44: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

4444

案例:Mysql同步到ES数据同步全过程

Mysql

Canalbinlog

Page 45: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

4545

案例:Mysql同步到ES数据同步全过程

Mysql

Canal

Kafka

binlog

推推

Page 46: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

4646

案例:Mysql同步到ES数据同步全过程

Mysql

Canal

KafkaWorker同步程序

binlog

Page 47: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

4747

案例:Mysql同步到ES数据同步全过程

Mysql

Canal

Kafka

ES

Worker同步程序

binlog

推推

Page 48: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

48

其它数据库同步关系型数据库/非关系型数据库

Postgresql:logical decoding1

Oracle:Redo log /Oracle GoldenGate3

Mongodb:Replicate sets4

Elasticsearch:Translog5

Sqlserver:Change Data Capture/Change Tracking 2

Page 49: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

49

其它数据库同步关系型数据库/非关系型数据库

Postgresql:logical decoding1

Oracle:Redo log /Oracle GoldenGate3

Mongodb:Replicate sets4

Elasticsearch:Translog5

Sqlserver:Change Data Capture/Change Tracking 2

Page 50: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

50

其它数据库同步关系型数据库/非关系型数据库

Postgresql:logical decoding1

Oracle:Redo log /Oracle GoldenGate3

Mongodb:Replicate sets4

Elasticsearch:Translog5

Sqlserver:Change Data Capture/Change Tracking 2

Page 51: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

51

其它数据库同步关系型数据库/非关系型数据库

Postgresql:logical decoding1

Oracle:Redo log /Oracle GoldenGate3

Mongodb:Replicate sets4

Elasticsearch:Translog5

Sqlserver:Change Data Capture/Change Tracking 2

Page 52: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

52

其它数据库同步关系型数据库/非关系型数据库

Postgresql:logical decoding1

Oracle:Redo log /Oracle GoldenGate3

Mongodb:Replicate sets4

Elasticsearch:Translog5

Sqlserver:Change Data Capture/Change Tracking 2

Page 53: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

53

04.总结与展望注意事项/后续计划

Page 54: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

54

注意事项

DB刷数据问题

• 瞬间批量更新DB数据

• CDC性能瓶颈

• 同步程序性能瓶颈

• 数据反复覆盖变化

Page 55: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

55

注意事项

DB刷数据问题 DB多表关联深度

• 瞬间批量更新DB数据

• CDC性能瓶颈

• 同步程序性能瓶颈

• 数据反复覆盖变化

• 关联深度影响索引性能

• 反向关联影响同步性能

Page 56: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

56

注意事项

DB刷数据问题 DB多表关联深度 ES高级类型限制

• 瞬间批量更新DB数据

• CDC性能瓶颈

• 同步程序性能瓶颈

• 数据反复覆盖变化

• 关联深度影响索引性能

• 反向关联影响同步性能

• Array对象类型• Nested对象类型• Join类型

• Shape类型• 高级类型转换

Page 57: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

57

问题遗留

数据校验

• DB与ES数据自动比对校验• 经济高效的方案探讨

Page 58: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

58

问题遗留

数据校验 数据修复

• DB与ES数据自动比对校验• 经济高效的方案探讨

• DB与ES数据一致性自动修复

• 经济高效方案探讨

Page 59: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

59

问题遗留

数据校验 数据修复

• DB与ES数据自动比对校验• 经济高效的方案探讨

• DB与ES数据一致性自动修复

• 经济高效方案探讨

技术演进

• 引入Flink技术平台

Page 60: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

60

总结与延伸DB与ES的关系

ES在大多数应用场景可以完全替代DB

DB适合场景?强ACID

DB与ES混合,DB解决ACID问题,ES解决高效查询

数据实时交换平台需求,满足多种DB数据任意交换

1

2

3

4

5

ES适合场景?高效查询

Page 61: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

61

总结与延伸DB与ES的关系

ES在大多数应用场景可以完全替代DB

DB适合场景?强ACID

DB与ES混合,DB解决ACID问题,ES解决高效查询

数据实时交换平台需求,满足多种DB数据任意交换

1

2

3

4

5

ES适合场景?高效查询

Page 62: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

62

总结与延伸DB与ES的关系

ES在大多数应用场景可以完全替代DB

DB适合场景?强ACID

DB与ES混合,DB解决ACID问题,ES解决高效查询

数据实时交换平台需求,满足多种DB数据任意交换

1

2

3

4

5

ES适合场景?高效查询

Page 63: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

63

总结与延伸DB与ES的关系

ES在大多数应用场景可以完全替代DB

DB适合场景?强ACID

DB与ES混合,DB解决ACID问题,ES解决高效查询

数据实时交换平台需求,满足多种DB数据任意交换

1

2

3

4

5

ES适合场景?高效查询

Page 64: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

64

总结与延伸DB与ES的关系

ES在大多数应用场景可以完全替代DB

DB适合场景?强ACID

DB与ES混合,DB解决ACID问题,ES解决高效查询

数据实时交换平台需求,满足多种DB数据任意交换

1

2

3

4

5

ES适合场景?高效查询

Page 65: CDC DB到ES实时同步 - Elastic 中文社区 · Kafka ES Worker 同步程序 Worker ... 4 Mongodb:Replicate sets 5 Elasticsearch:Translog 2 Sqlserver:Change Data Capture/Change

6565

谢谢!