加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MongoDB Stream是怎样实现美满数据增量迁徙的?

发布时间:2018-08-18 02:22:42 所属栏目:编程 来源:zale
导读:技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战 一、配景先容 最近微处事架构火得不可,但本质上壹贝偾风口上的一个热门词汇。 作为笔者的履素来说,想要应用一个新的架构必要带来的厘革本钱长短常高的。 尽量云云,今朝照旧有许
副问题[/!--empirenews.page--] 技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战

一、配景先容

最近微处事架构火得不可,但本质上壹贝偾风口上的一个热门词汇。

作为笔者的履素来说,想要应用一个新的架构必要带来的厘革本钱长短常高的。

尽量云云,今朝照旧有很多企业踏上了处事化改革的阶梯,这个中则免不了“旧改”的各类繁杂事。

所谓的“旧改”,就是把现有的体系架构来一次重构,拆分成多个细粒度的处过后,然后找时刻进级割接一把,让新体系上线。这个中,数据的迁徙每每会成为一个很是重要且繁杂的活儿。

拆分处事时数据迁徙的挑衅在哪?

  • 起首是难度大,做一个迁徙方案必要相识项目标前身现代,评估迁徙方案、技能器材等;
  • 其次是本钱高。因为新旧体系数据布局是纷歧样的,必要定制开拓迁徙转化成果,很难有一个通用的器材能一键迁徙;
  • 再者对付一些容量大、靠得住性要求高的体系,要可以或许不影响营业,出了题目还能追溯,因此方案上还得往伟大了想。

二、常见方案

凭证迁徙的方案及流程,可将数据迁徙分为三类:

1、停机迁徙

最简朴的方案,停机迁徙的次序如下:

MongoDB Stream是怎样实现美满数据增量迁徙的?

回收停机迁徙的甜头是流程操纵简朴,器材本钱低,然而弱点也很明明,迁徙进程中营业是无法会见的,因此只得当于规格小、应承停服的场景。

2、营业双写

营业双写是指对现有体系先举办改革进级,支持同时对新库和旧库举办写入。之后再通过数据迁徙器材对旧数据做全量迁徙,待全部数据迁徙转换完成后切换到新体系。

表示图:

MongoDB Stream是怎样实现美满数据增量迁徙的?

营业双写的方案是滑腻的,对线上营业影响极小,在呈现题目的环境下可从头来过,操纵压力也会较量小。

笔者在早些年前实行过这样的方案,整个迁徙进程确实很是顺遂,但实现该方案较量伟大,必要对现有的代码举办改革并完成新数据的转换及写入,对付开拓职员的要求较高。在营业逻辑清楚、团队对体系有足够的把控手段的场景下合用。

3、增量迁徙

增量迁徙的根基思绪是先举办全量的迁徙转换,待完成后一连举办增量数据的处理赏罚,直到数据追平后切换体系。

表示图:

MongoDB Stream是怎样实现美满数据增量迁徙的?

要害点:

要求体系支持增量数据的记录。对付MongoDB可以操作oplog实现这点,为停止全量迁徙进程中oplog被冲掉,在开始迁徙前就必需开始监听oplog,并将改观所有记录下来;假如没有步伐,必要从应用层上思量,好比为全部的表(荟萃)记录下updateTime这样的时刻戳,可能进级应用并支持将修改操纵单独记录下来。

增量数据的回放是一连的。在全部的增量数据回放转换进程中,体系如故会发生新的增量数据,这要求迁徙器材能做到将增量数据一连回放并将之追平,之后才气做体系切换。

MongoDB 3.6版本开始便提供了Change Stream成果,支持对数据改观记录做监听。这为实现数据同步及转换处理赏罚提供了更大的便利,下面将切磋怎样操作Change Stream实现数据的增量迁徙。

三、Change Stream先容

Chang Stream(改观记录流)是指collection(数据库荟萃)的改观变乱流,应用措施通过db.collection.watch()这样的呼吁可以得到被监听工具的及时改观。

在该特征呈现之前,你可以通过拉取oplog到达同样的目标;但oplog的处理赏罚及理会相对伟大且存在被回滚的风险,假如行使不妥的话还会带来机能题目。Change Stream可以与aggregate framework团结行使,对改观集举办进一步的过滤或转换。

参考链接:https://docs.mongodb.com/manual/aggregation/

因为Change Stream操作了存储在oplog中的信息,因此对付单历程陈设的MongoDB无法支持Change Stream成果,其只能用于启用了副本集的独立集群或分片集群。

监听的方针

MongoDB Stream是怎样实现美满数据增量迁徙的?

改观变乱

一个Change Stream Event的根基布局如下所示:

MongoDB Stream是怎样实现美满数据增量迁徙的?

字段声名:

MongoDB Stream是怎样实现美满数据增量迁徙的?

Change Steram支持的改观范例有以下几个:

MongoDB Stream是怎样实现美满数据增量迁徙的?

操作以下的shell剧本,可以打印出荟萃 T_USER上的改观变乱:

MongoDB Stream是怎样实现美满数据增量迁徙的?

下面提供一些样例,感觉一下:

insert变乱

MongoDB Stream是怎样实现美满数据增量迁徙的?

update变乱

MongoDB Stream是怎样实现美满数据增量迁徙的?

replace变乱

MongoDB Stream是怎样实现美满数据增量迁徙的?

delete变乱

MongoDB Stream是怎样实现美满数据增量迁徙的?

invalidate变乱

MongoDB Stream是怎样实现美满数据增量迁徙的?

更多的Change Event信息可以参考:https://docs.mongodb.com/manual/reference/change-events/

四、实现增量迁徙

本次计划了一个简朴的论坛帖子迁徙样例,用于演示怎样操作Change Stream实现美满的增量迁徙方案。

配景如下:

现有的体系中有一批帖子,每个帖子都属于一个频道(channel),如下表:

MongoDB Stream是怎样实现美满数据增量迁徙的?

新体系中频道字段将回收英文简称,同时要求能支持滑腻进级。按照前面篇幅的论述,我们将行使Change Stream成果实现一个增量迁徙的方案。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读