
# MongoDB数据源
MongoDB是一个面向文档的NoSQL数据库，以灵活的JSON格式存储数据，支持高并发和水平扩展。
本数据集成服务支持开源及云上MongoDB产品，支持其主流版本，可满足不同用户在多种部署环境下的数据同步需求。
#### 使用前准备及限制
- **网络要求**
  MongoDB数据源必须与CDM网络进行通讯，以确保数据传输的顺畅性。详情请参见[网络打通](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7765.html)。
  
- **权限** **要求**
  - **读权限** ：数据集成服务需要从MongoDB读取数据，可在目标数据库授予**read**内置角色。该角色允许用户执行find、aggregate、listCollections、listIndexes等读取操作。
  
  - **写权限** ：数据集成服务需要向MongoDB写入数据，可在目标数据库授予**readWrite**内置角色。该角色涵盖read 全部权限，并额外支持insert、update、remove、createCollection、createIndex等写入与结构变更操作。
   
- **端口放通**
  MongoDB端口（27017）：需放通TCP 27017（及副本集/分片集群实际监听端口）供华为云数据集成服务访问。
  
 
#### 支持的数据类型
本数据集成服务支持MongoDB大部分类型，以下为您列举支持类型详情。
| 分类       | 字段类型      | 读取是否支持 | 写入是否支持 |
|:---|:---|:---|:---|
| 数值       | Integer   | √      | √      |
| 数值       | Long      | √      | √      |
| 数值       | Double    | √      | √      |
| 数值       | Decimal   | √      | √      |
| ObjectId | ObjectId  | √      | √      |
| 时间       | Date      | √      | √      |
| 时间       | Timestamp | √      | √      |
| 文档       | Document  | √      | √      |
| 字符       | String    | √      | √      |
| 数组       | Array     | √      | √      |
| 布尔       | Boolean   | √      | √      |
| 二进制      | Binary    | √      | √      |
| Null     | Null      | √      | √      |
   
#### 支持的迁移场景
数据集成离线同步支持以下三种同步方式，以满足不同数据迁移场景的需求：
- **单表同步**
  适用于数据入湖和数据上云场景下，表或文件级别的数据同步。
  
- **分库分表同步**
  适用于数据入湖和数据上云场景下，多库多表同步场景。
  
- **整库迁移**
  适用于数据入湖和数据上云场景下，离线或自建数据库整体同步场景。
  
需要注意的是，分库分表与整库迁移能力会根据不同region的上线支持情况有所不同，具体支持情况以页面为准。以下是针对MongoDB的支持迁移场景概览：
| 支持迁移场景 | 单表读取 | 单表写入 | 分库分表读取 | 分库分表写入 | 整库读取 | 整库写入 |
|:---|:---|:---|:---|:---|:---|:---|
| 是否支持   | √    | √    | x      | √      | x    | x    |
   
#### 核心能力速览
- **连接配置**
  
  | 配置项   | 支持情况 | 说明                     |
  |:---|:---|:---|
  | SSL支持 | x    | 支持SSL加密，保障数据传输安全，暂不支持。 |
     
  
- **读取能力**
  
  | 配置项          | 支持情况 | 说明                                                          |
  |:---|:---|:---|
  | 增量读取         | √    | 支持通过【find条件】配置，实现增量读取。                                      |
  | 分片并发         | x    | 通过并发读取，充分利用资源，提升读取性能，MongoDB链路暂不支持。                         |
  | Document嵌套解析 | √    | 支持解析嵌套的Document数据结构，能够正确处理包含多层嵌套字段的Document数据，确保数据的完整性和准确性。 |
  | 自定义字段能力      | √    | 可在任务级追加计算列、常量列或脱敏函数，满足个性化业务需求。                              |
  | 脏数据能力        | √    | 支持异常数据写入脏数据桶，避免因少量异常数据导致作业失败。                               |
     
  
- **写入能力**
  
  | 配置项   | 支持情况 | 说明                            |
  |:---|:---|:---|
  | 导入前清空 | √    | 支持preSql操作，可在数据导入前进行数据清洗和处理。  |
  | 冲突解决  | √    | 支持【新增】/【替换】等多种写入方式，可灵活处理数据冲突。 |
  | 并发写入  | √    | 支持并发写入，提升写入效率。                |
  | 脏数据能力 | √    | 支持异常数据写入脏数据桶，避免因少量异常数据导致作业失败。 |
     
  
 
#### 创建数据源
在DataArts Studio管理中心新建相应的数据源，详情请参见[创建DataArts Studio数据连接](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0009.html)。
#### 创建数据集成离线作业
在DataArts Studio数据开发中新建MongoDB集成作业，详情请参见[新建离线处理集成作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1458.html)。
