阅读完实践一的小伙伴肯定心想,如果只是单表同步,那我直接mysql的主从即可,何必搞得这么麻烦。
虽然otter可以加速同步,但是国内的环境很少有达到阿里的那个场景的啊。
这时,我们就要开始第二次实践,体验otter的高扩展性了。
还是以实践一的场景为例子,但是,我们做一些扩展:
假设我在同步的时候,把目标库数据平台当成数据仓库,以后全国所有的仓库都需要往数据平台写t_inventory_bin表数据,
同时,有些数量字段不需要,只需要保留总数即可。
此外,需要增加一个最后操作时间
此时,我们分析需求,得到如下几点小结:
1.目标库t_inventory_bin需要用warehouse_id字段来标识某条数据来源于某个仓库
2.目前warehouse_id字段各个仓库并没有区分开,也就是说我们需要根据不同的仓库,重新赋值warehouse_id
3.抛弃掉总数以外的其他数量字段
4.增加一个最后操作时间
那么,我们该怎么做呢?
一、修改目标表sql
源sql为
修改后sql为
可以看到,我们去除了无用字段,增加了一个更新时间
二、编写自定义转义代码
otter的设计模型为s\e\t\l,我们可以通过增加自定义处理代码来实现高扩展性。详见otter扩展性
废话不多说,我们来看下如何通过转义代码来实现我们的需求
三、将我们的自定义代码植入到otter中
1.找到我们之前配置的映射关系,点击编辑,进入到映射关系第一页。
EventProcessor类型选择source,即源码模式。然后将我们的自定义代码黏贴到EventProcessor文本的文本框中,点击保存即可
完成