使用场景
Mongobee可以用来做数据迁移。例如:1. 给文档新增一个字段,需要初始化值;2. 新增一个文档,数据需要重其他文档中迁移过来。等等场景。
集成示例
在Mongobee的开源代码中的README中介绍的比较详细。开源链接地址:https://github.com/mongobee/mongobee。
实现原理(代码版本:mongobee-0.13)
1.主类Mongobee实现了Spring的接口InitializingBean,在Spring完成Bean初始化后会回调afterPropertiesSet方法。
2.在afterPropertiesSet方法中执行execute,做以下几件事情完成迁移逻辑的调用。
1)使用mongo-java-driver的方法和mongodb建好连接。
2)创建文档dbchangelog的唯一索引:索引字段,changeId和author。
3)创建文档mongobeelock的唯一索引:索引字段,key。
4)插入一条数据到文档mongobeelock,数据为:{"key":"LOCK","status":"LOCK_HELD"},利用这条数据实现逻辑上的锁。
- 扫描配置的changset的包路径,找到所有包含注解为@ChangeSet的类。
6)按order排序后,每个类解析所有@ChangeLog的方法,并按order排序类中的方法。
7)通过反射的方式回调含有注解@ChangeLog的方法完成数据迁移。
Mongobee的数据迁移流程图.png Mongobee的类图.png
网友评论