MongoDB
数据同步到 ElasticSearch
的方式
技术 | 覆盖版本 | 维护情况 | 实现及使用方式 | 设计模式 | 同步方式 | 补偿机制 | 存在问题 |
---|---|---|---|---|---|---|---|
Mongoosastic | x.x | 2018-10-16,800stars | Node Module » Hook + HTTP | 高耦合 | Hook增量 | - | Model.remove 和 Model.update 数据未同步 |
transporter | 5.x | 2018-05-14,1000stars | Go CLI Tool | 低耦合 | 单次同步 | - | 仅能执行一次,无法自动完成同步 |
elasticsearch-river-mongodb | 1.x | 2016-03-22 | Java,ES plugin | 低耦合 | 增量 | - | 官方已关闭river方式 |
Jdbc input plugin | x.x | 官方组件 | Logstash input filter | 低耦合 | 增量+全量 | 追加定时全量 | 需要JDBC驱动程序支持,而mongo没有支持良好的JDBC驱动程序 |
mongo-connector | 5.x | 2018-12-06,1500stars | Python CLI Tool » OpLog | 低耦合 | - | - | 基于OpLog |
基于 mongo-oplog 自研 | x.x | 2018-09-17,400stars | Node Module » Hook + HTTP | 自定义 | Hook增量 | 自研追加定时全量 | 基于OpLog,开发成本 |
基于 Mongoose 自研 | x.x | - | Node service | 自定义 | 增量轮询 | 自研追加定时全量 | 不利于Mongo高并发,占用mongo链接 |
基于 redis/MQ/Kafka | x.x | - | Node service | 低耦合 | 数据流 | 自研追加定时全量 | 改造成本大,需要在前置业务端拆解功能 |
Mongoosastic
数据同步说明
Auto indexing
Mongoosastic try to auto index documents in favor of mongoose's middleware feature.
Mongoosastic will auto index when document.save/Model.findOneAndUpdate/Model.insertMany/document.remove/Model.findOneAndRemove, but not include Model.remove/Model.update.
And you should have new: true options when findOneAndUpdate so that mongoosastic can get new values in post hook.
Oplog
方式说明
因 Oplog
在一定程序上侵入 DB
(运维)边界和权限。
但此工具编写的目的是为了同步数据,亦是运维内部的一部分任务。
给每个 database 指定 user 权限,确保单点工具操作拥有对应权限的数据进行同步。