← 返回列表
一种基于消息队列的MongoDB数据实时同步方法及系统
摘要文本
本发明提出一种基于消息队列的MongoDB数据实时同步方法及系统,旨在实现从MongoDB到目标系统ElasticSearch的实时数据同步,并解决原来的同步工具在数据同步过程中同步速率慢和由于MongoDB快速写入情况而引发的同步数据丢失的问题,保证了从MongoDB到ElasticSearch的快速、准确、可靠的数据同步。
申请人信息
- 申请人:中国科学院信息工程研究所
- 申请人地址:100093 北京市海淀区闵庄路甲89号
- 发明人: 中国科学院信息工程研究所
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 一种基于消息队列的MongoDB数据实时同步方法及系统 |
| 专利类型 | 发明授权 |
| 申请号 | CN201811589761.X |
| 申请日 | 2018年12月25日 |
| 公告号 | CN111367991B |
| 公开日 | 2024年3月12日 |
| IPC主分类号 | G06F16/27 |
| 权利人 | 中国科学院信息工程研究所 |
| 发明人 | 戴琼; 石瑞聪; 彭怀梁; 王晓岩 |
| 地址 | 北京市海淀区闵庄路甲89号 |
专利主权项内容
1.一种基于消息队列的MongoDB数据实时同步方法,步骤包括:创建MongoDB与Kafka之间的长连接;跟读MongoDB的日志文件oplog,对读取到的需要同步的bson数据进行初步解析,并根据oplog数据中的ns字段,将MongoDB的集合名映射成设定的ElasticSearch的索引名;将该Bson数据转码成可以缓存到Kafka的序列化数据,并缓存到Kafka上的与ElasticSearch索引名同名的Topic中;如果Kafka上不存在Topic,则自动创建Topic;从Kafka向ElasticSearch同步数据时,为每一个Topic创建一个同步线程,多线程可以并行操作;为每一个Topic创建一条从Kafka到ElasticSearch的长连接;从Kafka的Topic中读取之前缓存好的数据,并转码还原成Bson数据;解析每一条Bson数据的操作类型,调取对应的操作方法,以解析成ElasticSearch可以识别的数据结构,并缓存在本地;当本地缓存的数据达到设定的阈值时,批量提交到ElasticSearch中。