
# Doris数据源
Doris是一种高性能、高扩展性的分布式分析型数据库，支持实时数据写入和快速查询，适用于海量数据的多维分析和报表生成等场景。
本数据集成服务支持华为云上MRS Doris与CloudTable Doris数据源，提供高效便捷的数据迁移服务。
#### 实现原理
Doris Reader通过原生JDBC方式进行数据读取，DorisWriter写入支持JDBC/StreamLoad两种写入方式，提供高效的读写能力。
#### 使用前准备及限制
- **网络要求**
  Doris数据源必须与CDM网络进行通讯，以确保数据传输的顺畅性。详情请参见[网络打通](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7765.html)。
  
- **权限** **要求**
  - **MRS Doris读写权限**
    - **读权限** ：如果需要从MRS Doris读取数据，需要为数据集成服务的IAM用户或用户组授予MRS Doris的只读权限，如**MRS ReadOnlyAccess** 系统策略，或者根据具体需求创建自定义策略，授予如**SELECT**等读取相关操作的权限。
    
    - **写权限** ：如果需要向MRS Doris写入数据，需要为数据集成服务的IAM用户或用户组授予MRS Doris的写入权限，如**MRS CommonOperations** 或**MRS FullAccess** 系统策略，或者创建自定义策略，授予如**INSERT INTO TABLE** 、**CREATE TABL**E等写入相关操作的权限。
     
  
  - **CloudTable Doris读写权限**
    - **读权限** ：为数据集成服务的IAM用户或用户组授予CloudTable的**ReadOnlyAccess** 系统策略，或创建自定义策略授予**SELECT**等读取操作权限。
    
    - **写权限** ：为数据集成服务的IAM用户或用户组授予CloudTable的**CommonOperations** 或**FullAccess** 系统策略，或创建自定义策略授予**INSERT INTO TABLE** 、**CREATE TABLE**等写入操作权限。
     
   
- **端口放通**
- **MRS Doris端口** ：
  - **JDBC端口（29982）**：确保Doris服务的JDBC端口29982已放通，以便数据集成服务通过JDBC连接到Doris数据库进行数据读取和写入操作。
  
  - **StreamLoad端口（29980）**：如果使用StreamLoad方式写入数据，需要确保Doris服务的StreamLoad端口29980已放通，以便数据集成服务能够通过此端口将数据高效地写入Doris。
  
  - **StreamLoad端口（29991）**：如果使用StreamLoad方式写入数据且开启HTTPS加密，需要确保Doris服务的StreamLoad HTTPS端口29991已放通，以便数据集成服务能够通过此端口将数据安全地写入Doris。
   
- **CloudTable Doris** **端口** ：
  - **JDBC端口（9030）**：确保Doris服务的JDBC端口9030已放通，以便数据集成服务通过JDBC连接到Doris数据库进行数据读取和写入操作。
  
  - **StreamLoad端口（8030）**：如果使用StreamLoad方式写入数据，需要确保Doris服务的StreamLoad端口8030已放通，以便数据集成服务能够通过此端口将数据高效地写入Doris。
  
  - **StreamLoad端口（8050）**：如果使用StreamLoad方式写入数据且开启HTTPS加密，需要确保Doris服务的StreamLoad HTTPS端口8050已放通，以便数据集成服务能够通过此端口将数据安全地写入Doris。
   
 
#### 驱动使用
Doris配置连接的驱动应使用MySQL 5.x版本的驱动。
![](https://support.huaweicloud.com/usermanual-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
- Doris 2.0及以上版本：由于数据集成（离线作业）的限制，目前不支持MySQL 8.x版本的驱动。
- Doris 2.0以下版本：不支持MySQL 8.x版本的驱动。
 
#### 支持的字段类型
不同Doris版本支持不同的数据类型。下面为您介绍本数据集成服务Doris当前主要字段的支持情况。各版本Doris的全量字段类型请参见[Doris的官方文档](https://doris.apache.org/zh-CN/docs/table-design/data-type)。
| 分类 | 字段类型           | 读取是否支持 | 写入是否支持 |
|:---|:---|:---|:---|
| 数值 | SMALLINT       | √      | √      |
| 数值 | INT            | √      | √      |
| 数值 | BIGINT         | √      | √      |
| 数值 | LARGEINT       | √      | √      |
| 数值 | FLOAT          | √      | √      |
| 数值 | DOUBLE         | √      | √      |
| 数值 | DECIMAL        | √      | √      |
| 数值 | DECIMALV3      | √      | √      |
| 时间 | DATE           | √      | √      |
| 时间 | DATETIME       | √      | √      |
| 时间 | DATEV2         | √      | √      |
| 时间 | DATETIMEV2     | √      | √      |
| 字符 | CHAR           | √      | √      |
| 字符 | VARCHAR        | √      | √      |
| 字符 | STRING         | √      | √      |
| 字符 | TEXT           | √      | √      |
| 其余 | POINT          | x      | x      |
| 其余 | JSON           | √      | √      |
| 其余 | ARRAY          | x      | x      |
| 其余 | JSONB          | x      | x      |
| 其余 | HLL            | x      | x      |
| 其余 | BITMAP         | x      | x      |
| 其余 | QUANTILE_STATE | x      | x      |
   
#### 支持的迁移场景
数据集成离线同步支持以下三种同步方式，以满足不同数据迁移场景的需求：
- **单表同步**
  适用于数据入湖和数据上云场景下，表或文件级别的数据同步。
  
- **分库分表同步**
  适用于数据入湖和数据上云场景下，多库多表同步场景。
  
- **整库迁移**
  适用于数据入湖和数据上云场景下，离线或自建数据库整体同步场景。
  
需要注意的是，分库分表与整库迁移能力会根据不同region的上线支持情况有所不同，具体支持情况以页面为准。以下是针对Doris的支持迁移场景概览：
| 支持迁移场景 | 单表读取 | 单表写入 | 分库分表读取 | 分库分表写入 | 整库读取 | 整库写入 |
|:---|:---|:---|:---|:---|:---|:---|
| 是否支持   | √    | √    | x      | √      | x    | x    |
   
#### 核心能力速览
- **连接配置**
  
  | 配置项     | 支持情况                                                      | 说明                                                                                                                                                                                          |
  |:---|:---|:---|
  | 支持协议    | JDBC/ Streamload | 数据集成服务支持通过JDBC协议和Streamload方式与Doris进行数据交互。 JDBC协议适用于通用的数据库操作。 Streamload方式则提供了更高效的数据写入性能，尤其适合大规模数据的快速导入。 |
  | HTTPS支持 | √                                                         | 数据集成服务支持通过HTTPS协议与Doris进行安全的数据传输，确保数据在传输过程中的加密和完整性。                                                                                                                                         |
  | 连接配置调优  | √                                                         | 支持connectTimeout等连接配置调优，可根据实际需求优化连接性能。                                                                                                                                                      |
     
  
- **读取能力**
  
  | 配置项   | 支持情况 | 说明                                                        |
  |:---|:---|:---|
  | 增量读取  | √    | 支持【where条件】或通过【sql方式】的增量读取。                               |
  | 读取模式  | √    | 支持【库表模式】和【sql方式】。库表模式可直接读取指定表数据；SQL方式可通过SQL语句灵活查询，满足复杂需求。 |
  | 分片并发  | √    | 支持按常见字段做水平分片或根据分区进行分片，多线程并行抽取，显著提升吞吐效率。                   |
  | 自定义字段 | √    | 可在任务级追加计算列、常量列或脱敏函数，满足个性化业务需求。                            |
  | 脏数据处理 | √    | 支持异常数据写入脏数据桶，避免因少量异常数据导致作业失败。                             |
     
  
- **写入能力**
  
  | 配置项    | 支持情况                                                       | 说明                                                                                                                                               |
  |:---|:---|:---|
  | 写入模式   | JDBC/ STREAM_LOAD | 数据集成服务支持通过JDBC协议和Streamload方式与Doris进行数据交互。JDBC协议适用于通用的数据库操作。 Streamload方式则提供了更高效的数据写入性能，尤其适合大规模数据的快速导入。 |
  | 导入前后处理 | √                                                          | 支持preSql/truncate等操作，可在数据导入前后进行数据清洗和处理。                                                                                                          |
  | 写入行数调优 | √                                                          | 在JDBC方式下，支持在连接中配置【单次写入行数】参数调优，可根据实际需求优化写入性能。 在STREAM_LOAD方式下，支持【streamload配置参数】，可根据实际需求优化写入性能。            |
  | 脏数据处理  | x                                                          | 支持异常数据写入脏数据桶，避免因少量异常数据导致作业失败，暂不支持。                                                                                                               |
  | 并发写入   | √                                                          | 支持并发写入，提升写入效率。                                                                                                                                   |
     
  
 
#### 创建数据源
在DataArts Studio管理中心新建相应的数据源，详情请参见[创建DataArts Studio数据连接](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0009.html)。
#### 创建数据集成离线作业
在DataArts Studio数据开发中新建Doris集成作业，详情请参见[新建离线处理集成作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1458.html)。
#### 最佳实践
[Doris JDBC、StreamLoad写入方式最佳实践](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1544.html)
