You need to enable JavaScript to run this app.
导航

配置 Mongo 数据源

最近更新时间2024.03.18 16:35:29

首次发布时间2023.03.17 16:07:31

DataSail 数据集成中的 MongoDB 数据源为您提供读取和写入 MongoDB 的双向通道数据集成能力,实现不同数据源与 MongoDB 之间进行数据传输。
下文为您介绍 MongoDB 数据同步的能力支持情况。

1 支持的版本

MongoDB 使用的驱动版本是 mongo-java-driver 3.11.0,该驱动支持的内核版本为 3.X 版本。
驱动能力详情请参见MongoDB官方文档

2 支持的字段类型

MongoDB 读写支持的字段类型:

类型

离线写入

离线读取

OBJECTID

支持

支持

LONG

支持

支持

STRING

支持

支持

INT

支持

支持

DECIMAL

支持

支持

NULL

支持

支持

DOUBLE

支持

支持

DATE

支持

支持

TIMESTAMP

支持

支持

BINDATA

支持

支持

BOOL

支持

支持

REGEX

支持

支持

JAVASCRIPT

支持

支持

UNDEFINED

支持

支持

JAVASCRIPTWITHSCOPE

支持

支持

ARRAY

支持

支持

3 数据同步任务开发

3.1 数据源注册

新建数据源操作详见配置数据源,下面为您介绍用连接串方式配置 MongoDB 数据源信息.
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

基本配置

*数据源类型

MongoDB

*接入方式

连接串

*数据源名称

数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。

参数配置

*主机名或 IP 地址

MongoDB 接入地址,格式为主机名: 端口,单击新增按钮,支持配置多个 Hosts。

鉴权数据库

身份认证所用库。

*数据库名

创建 MongoDB 数据库时,数据库的名称。

*用户名

数据库登录账号名称。

*密码

数据库账号密码。

3.2 新建离线任务

MongoDB 数据源测试连通性成功后,进入到数据开发界面,开始新建 MongoDB 相关通道任务。
新建任务方式详见离线数据同步

3.3 可视化配置说明

任务创建成功后,您可根据实际场景,配置 MongoDB 离线读MongoDB 离线写等通道任务。

3.3.1 MongoDB 离线读

图片
数据来源选择 MongoDB,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

*数据源类型

下拉选择 MongoDB 数据源类型。

*数据源名称

已在数据源管理中注册成功的 MongoDB 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 MongoDB 数据源。

*集合名

选择需要采集的数据集合名称,下拉可选,支持同时选择多个 Schema 相同的集合。
选择需要采集的数据集合名称,您可同时选择多个 Schema 相同的集合进行数据同步,支持区间表达式如:“table_[0-99]”、时间表达式如:“table_${date}”和正则表达式如:“table.*” 方式,来快速配置选择多个集合。

分库分表

MongoDB 支持分库分表形式读取,单击添加分库分表按钮,进行分库分表添加,在下拉框中选择分库数据源与具体分表名称信息,支持添加多个分库分表。

注意

配置分库分表,需要所有集合的 Schema 信息必须保持一致,否则任务会执行异常。

数据过滤

支持您将需要同步的数据进行筛选条件设置,只同步符合过滤条件的数据,例如:{createTime:{$gte:ISODate('2024-02-02T00:00:00.000+0800')}}

说明

该过滤语句通常用作增量同步,来限制返回 MongoDB 的数据范围。

*主键名

MongoDB 中主键字段的名称信息。

3.3.2 MongoDB 离线写

图片
数据目标端选择 MongoDB,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

*目标类型

数据去向目标类型选择 MongoDB。

*数据源名称

已在数据源管理界面注册的 MongoDB 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 MongoDB 数据源。

*集合名

对应数据源下,选择需要写入数据的集合名称,下拉可选。

*数据写入方式

写入模式指定了传输数据时是否覆盖的信息:

  • 覆盖式写入:写入时,不清除数据,唯一键相同,用新的数据覆盖旧数据,唯一键不同时,直接插入新数据。
  • 直接写入:不做其他操作,直接写入数据,表示不覆盖,出现唯一键冲突时,任务会执行失败。

*业务主键

当写入方式为覆盖写入时,需填写 MongoDB 集合的业务主键字段名称,支持配置多个业务主键,多个主键分隔符为逗号,配置形式为:a.b.c,a.d,k。

写入前准备语句

表示数据写入 MongoDB 前,对 MongoDB 中已有数据的前置操作,例如清理历史数据等,需确保输入语句符合 JSON 语法要求。

3.3.3 字段映射

数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
您可通过以下三种方式操作字段映射关系:

  • 同名映射:单击同名映射按钮,根据目标端/源端数据表信息,可以自动填充源端/目标端的字段信息。
  • 自动添加:单击自动添加按钮,读端可根据数据集合 Schema 信息,自动填充来源的字段信息。
  • 手动添加:单击手动添加按钮,可以手动编辑来源和目标的字段信息,可以逐个添加。
  • 移动\删除字段:您也可以根据需要移动字段映射顺序或删除字段。

4 高级参数说明

对于可视化通道任务,读参数需要加上 job.reader. 前缀,写参数需要加上 job.writer. 前缀,如下图所示:
图片

4.1 MongoDB 离线读

离线读支持以下高级参数,您可根据实际情况进行配置:

参数名

描述

默认值

reader_fetch_size

单批次读取文档 doc 的数量。

100000

filter

指定读取过滤条件,满足 MongoDB 语法,如读取 id = 1000 的数据,填写示例如下:
{id: {$eq: 1000}}

split_mode

分片模式支持两种:

  1. paginating:单个分片的数量为:totalRecords / batchSize
  2. parallelism:若 MongoDB 支持 splitVector 功能,则使用 MongoDB 内置切片功能,否则将根据文档数量/parallelism 平均划分,单个分片的数量为:totalRecords / parallelismpaginating:根据数据量/fetchsize精确分片

说明

若需关闭分片,可设置并发度为 1。

parallelism

4.1 MongoDB 离线写

离线写支持以下高级参数,您可根据实际情况进行配置:

参数名

描述

默认值

max_connection_per_host

连接池最大连接数。

100

connect_timeout_ms

连接超时时间。

10000

batch_size

单批次写入 MongoDB 的数据量。

100