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

本文涉及的产品
智能数据建设与治理Dataphin,200数据处理单元
简介: 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类型,轻则报错,重则数据读取不准确。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
2月前
【Azure Function】Function App和Powershell 集成问题, 如何安装PowerShell的依赖模块
【Azure Function】Function App和Powershell 集成问题, 如何安装PowerShell的依赖模块
|
3月前
|
应用服务中间件 Linux nginx
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
《FFmpeg开发实战》书中介绍了如何使用FFmpeg向网络推流,简单流媒体服务器MediaMTX不适用于复杂业务。nginx-rtmp是Nginx的RTMP模块,提供基本流媒体服务。要在Linux上集成rtmp,需从官方下载nginx和nginx-rtmp-module源码,解压后在nginx目录配置并添加rtmp模块,编译安装。配置nginx.conf启用RTMP服务,监听1935端口。使用ffmpeg推流测试,如能通过VLC播放,表明nginx-rtmp运行正常。更多详情见书本。
88 0
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
|
3月前
|
DataWorks NoSQL fastjson
DataWorks操作报错合集之DataX进行MongoDB全量迁移的过程中,DataX的MongoDB Reader插件在初始化阶段找不到Fastjson 2.x版本的类库,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
3月前
|
SQL 存储 JSON
DataWorks产品使用合集之没有dev环境的project,如何创建数据集成任务时完成网络与资源配置
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
2月前
|
NoSQL Java 关系型数据库
MongoDB保姆级指南(下):无缝集成SpringData框架,一篇最全面的Java接入指南!
前面的两篇文章已经将MongoDB大多数知识进行了阐述,不过其中的所有内容,都基于原生的MongoDB语法在操作。可是,在实际的日常开发过程中,我们并不会直接去接触MongoDB,毕竟MongoDB只能算作是系统内的一个组件,无法仅依靠它来搭建出一整套系统。
|
3月前
|
NoSQL Java MongoDB
Spring Boot与MongoDB的集成应用
Spring Boot与MongoDB的集成应用
|
4月前
|
存储 DataWorks 关系型数据库
DataWorks产品使用合集之在使用数据集成中的同步任务从mysql同步表到oss,存储为csv时,最终生成的文件中没有表头,这个属性可以在哪里配置么
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之数据源同步时,使用脚本模式采集mysql数据到odps中,使用querySql方式采集数据,在脚本中删除了Reader中的column,但是datax还是报错OriginalConfPretreatmentUtil - 您的配置有误。如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
3月前
|
NoSQL Java MongoDB
如何在Spring Boot应用中集成MongoDB数据库
如何在Spring Boot应用中集成MongoDB数据库
|
4月前
|
SQL NoSQL 关系型数据库
ClickHouse(24)ClickHouse集成mongodb表引擎详细解析
**MongoDB引擎在ClickHouse中提供只读访问远程数据,用于`SELECT`查询。不支持写入。创建MongoDB表引擎的语法:`CREATE TABLE ... ENGINE = MongoDB(host, db, coll, user, pass)`。例如:**查看[ClickHouse中文文档](https://zhangfeidezhu.com/?p=468)获取更多教程,包括系列文章覆盖的各种表引擎解析。
103 0
下一篇
无影云桌面