数据集成模块中如何配置Mongo DB数据同步(1)-阿里云开发者社区

开发者社区> 明离> 正文

数据集成模块中如何配置Mongo DB数据同步(1)

简介: MongoDB是面向文档的NoSQL(非关系型)数据库,它的数据结构由字段(Field)和值(Value)组成,类似于JSON对象。 数据集成的Mongodb输入组件提供了从mongodb数据库中全量和增量两种读取方式,并且能够对数据自动进行数据分片,从而可以并发的高校读取数据。
+关注继续查看


作者:终古


1 组件简介

MongoDB是面向文档的NoSQL(非关系型)数据库,它的数据结构由字段(Field)和值(Value)组成,类似于JSON对象。

Mongodb输入组件提供了从MongoDB数据库中全量和增量两种读取方式,并且能够对数据自动进行数据分片,从而可以并发的高校读取数据。

2 组件配置介绍

21.png

如上图所以,MongoDB输入组件需要以下配置信息:数据源、表、输入过滤、输出字段。

  • 数据源

数据源信息在dataphin数据源配置,配置完成后在此处可下拉框中选择

MongoDB数据库存储了表的元数据信息,选择数据源后,该表下拉框会自动列出该数据源下的表名。注意这里默认显示100条,输入表名会进行实时查询匹配

  • 输入过滤

非必选项,此为配置全量读取或者增量读取或者有条件读取的关键。此处配置的语法遵循MongoDB的过滤表达式的语法,例如只同步年龄大于23的数据: {"age":{"$gt":23}}

  • 输出字段

此处需要手动配置输出字段,支持批量添加方式和逐个增加的方式:

    • 批量添加:点击批量添加,输入json对象数组,每个json对表表示一个字段信息,可参见默认示例
    • 逐个添加:点击新建输出字段,每个字段信息包括字段名称、字段类型,字段类型为标准的MongoDB数据类型

注:因为MongoDB为NoSQL数据库,是没有固定字段元数据的,因此没有表的字段元数据,所以需要根据表的数据内容手动配置

3 组件使用

本文介绍全量和增量两种典型的数据同步场景。

3.1 全量同步

全量同步的方式非常简单,即 输入过滤 什么都不配置就是全量同步,如果需要根据条件过滤那就遵循MongoDB的过滤表达式配置过滤语句即可。

首先,这是表的数据:

22.png

其中_id是系统字段,我们的字段有:name(string)、id(long)、gmt_greate(date)。

3.1.1 无过滤的全量同步

  • 输入过滤: 无需配置
  • 界面配置:

23.png

  • 预览结果

24.png

3.1.2 有过滤的全量同步

  • 输入过滤:过滤名称为sff的数据: {"name":"sff"}
  • 界面配置:

25.png

  • 预览结果

可以看到name=2的数据被过滤掉了

26.png

3.2 增量同步

增量同步依旧是配置输入过滤,注意目前仅支持按照时间字段进行增量同步。因此,这里介绍如何使用时间字段进行增量同步。

首先,这是表的数据:

27.png

3.2.1 字段类型为Date的增量同步

  • 输入过滤:每日周期同步T-1的典型增量配置。

即假设今天是2021-09-19,那今天任务运行需要同步昨天的数据即: 2021-09-18 00:00:00,这个需要结合 调度参数 配合使用。因为mongodb的过滤表达式:

{"gmt_create":{$gte:ISODate("2021-09-18T00:00:00.000Z")}},所以这就需要拼接出2021-09-18T00:00:00.000Z这种时间格式,因此需要在调度参数那里定义两个变量:

date: {yyyy-MM-dd}

time: {hh:mm:ss}(或者不需要配置此变量,直接写死00:00:00即可)

28.png

29.png

因此 最终的输入过滤为: {"gmt_create":{$gte:ISODate("${date}T${time}.000Z")}}

若time固定从0点开始,也可以直接配置:{"gmt_create":{$gte:ISODate("${date}T00:00:00.000Z")}}

  • 界面配置:

30.png

  • 预览结果

31.png

3.2.2 字段类型为String的时间增量同步

对于类型是String的,可以直接使用字符串比较

  • 输入过滤:{"gmt_create":{$gte:"${date} 00:00:00"}} (注:date为系统变量,业务日期,yyyy-MM-dd,可直接使用)
  • 配置界面:

32.png

  • 数据预览

33.png

4 MongoDB特别注意

MongoDB每个表都有一个系统字段:_id,Object类型,由数据库维护,此字段可被覆盖,但切记不要覆盖此字段,也就是说任何写入MongoDB 表的任务都不应该显示写入 _id 字段,否则破坏该字段的类型,会导致数据集成在读取该表数据时数据切分过程报错或者读取数据不准确。因为mongodb输入组件在进行数据切分时便是使用该字段,强依赖该字段的Object类型,一旦遇到非Object类型,轻则报错,重则数据读取不准确。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何在单节点 Ceph 中配置多数据副本
crush.png 在服务器资源不足,或者测试环境下,Ceph 通常只有一个节点,就算有多个服务器组成集群,往往存储服务器也往往只有一台,Ceph 的默认配置下,只能设置单数据备份,也就是说数据只存了一份,如果磁盘坏了,数据就丢了。
1022 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9504 0
Serverless 解惑——函数计算如何访问 Mongo 数据库
本文介绍如何快速实现函数计算访问 Mongo 数据库。
1029 0
mongo数据库单节点搭建
mongo数据库单节点搭建
996 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13201 0
用Aliyun E-MapReduce集群的sqoop工具和数据库同步数据如何配置网络
如果您的E-MapReduce集群需要和集群之外的数据库同步数据,需要确保网络是联通的。本文就RDS,ecs自搭,云下私有数据库三种情况,分别介绍如何配置网络。 一.RDS 经典网络RDS 想要访问经典网络RDS,EMR(E-MapReduce,下同)最好也指定用经典网络。 经典网络的RDS
5315 0
如何给SAP C4C的产品主数据division配置出新的下拉选项
如图:C4C产品主数据division字段默认的下拉菜单选项: 切换成调试模式,找到UI这个字段绑定的模型字段名称:/Root/MaterialDivision: 再找到这个UI模型字段绑定到的core BO字段:Material.Common.MaterialDivisionCode: 进入Business Configuration的Activity List,找到Division的配置: 在这里添加一行新纪录:03-沈阳自动所产品线 本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。
668 0
+关注
明离
明离
9
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载