---
order: 1
navTitle: 数据源管理
---
# 数据源管理

数据源是SuccBI读取数据和存储数据的数据库连接，系统的元数据、日志、权限、用户信息、表单提交的数据会存储到数据源，报表、仪表板等对象的查询分析统计也需要用到数据源。

SuccBI的数据源是多[项目](../project-manage/README.md)共享的。

在**项目列表**中的**数据源**模块下，可对数据源进行管理。点击右上角的眼睛按钮，可以查看数据源的更多属性，如**数据库版本号**、**数据库版本信息**、**JDBC驱动信息**等，勾选即可显示对应属性。

![数据源管理](./images/2024-12-12-16-22-01.png)

## 新建数据库连接{#create-datasource}

点击**新建**，`连接数据库`窗口中展示了SuccBI支持的所有数据库类型，可通过顶部标签页按[数据库用途类型](../devops/install/database/README.md)进行筛选，同时也支持在搜索框中搜索指定名称的数据库类型

![新建数据库连接](./images/2021-04-13-14-14-34.png)

选择数据库类型后，点击**下一步**，配置[数据库连接属性](#properties-setting)，在**数据库配置**中填写数据源名称、用途和地址等必填信息，按需在**连接池配置**来设置最大连接数等高级属性

![配置连接](./images/2024-12-13-10-38-01.png)

数据库连接属性配置完成后，点击**连接测试**，测试通过后点击`确定`即可完成数据库连接。连接成功后该数据库会出现在**项目**>**项目设置**>**数据**中的允许使用数据源中，选择该数据源后，才会在项目中能够使用，详见[项目数据管理设置](../project-manage/data-mgr-setting.md)

::: tip
若测试失败，仍可继续保存，后续修改后可继续测试。
:::

### 数据库连接属性设置{#properties-setting}

连接属性设置包含基础配置和高级配置，基础配置是必填项，高级配置是选填项。

**数据库配置**

- **名称**：项目中引用数据源时显示的名称（引用方式详见[项目数据管理设置](../project-manage/data-mgr-setting.md)），用户可自定义，新建后不能修改
- **描述**：描述该数据源的业务用途
- **用途**：根据权限不同，分为只读和可写。只读只允许读取数据，可写允许对数据和表结构进行修改。如果用户只有只读权限，但是用途设置为可写，数据库仍然能连接，但是写入数据时会提示用户没有权限，无法写入数据。
- **地址**：输入数据库地址和端口号，若输入的地址IP中带有端口号和数据库名，系统会自动识别填充
- **数据库名**：需要连接的物理数据库名称
- **JDBC URL**：数据库连接时，用来连接到指定远程数据库标识符。用户输入ip、数据库名和数据库类型后会自动生成一个JDBC URL。反之，输入JDBC URL也会自动生成ip、数据库名和数据库类型
- **用户名**：连接数据库用到的账户
- **密码**：连接数据库用到的密码

**连接池配置**

- **最大连接数**：数据库连接池的最大连接数，设置为100就是同时只能有100个连接在执行sql，若超过100个系统就会报错并显示超过最大连接数
- **等待超时（秒）**：数据库连接的最大等待时间，若数据库连接超过设置的时间，数据库会强行断开已有的连接
- **连接最大空闲时长（秒）**：数据库连接的最大空闲时间，当连接长时间未使用后将被关闭。连接池中的连接在长时间不使用时可能会由于某种原因而失效，但连接池并不知道，此时可以设置此选项，以丢弃长时间未使用的连接
- **连接最大使用时长（秒）**：数据库连接的最大使用时间，当连接自最初创建到现在的时间长度超过了这个最大使用时间，那么连接会被销毁（物理关闭），重新获取新的连接，保持连接池连接的新鲜度。主要为了解决长时间持有连接，可能出现的各种问题。
- **连接超时（毫秒）**：此设置是应用发起一个新的数据库连接时的超时，有时候不同的网络设置，可能某些数据库无法连接时会等待很长时间，此设置可以确保最多等待指定的时间，如果还未完成连接则抛出超时错误。
- **网络通信超时（毫秒）**：此设置是应用和数据库之间的网络通信读写超时，比如应用端从数据库段读取数据，如果超过这个时间没有返回任何数据则出现超时错误。
- **连接有效性检查**：用于获取连接时检查连接是否有效
- **启用健康检查**： 启用时将会定时检查连接池的状态，包括数据库是否能连接，自动侦测是否存在连接漏洞并自动回收。
- **镜像库**：启用镜像库功能，镜像库是数据库本身的能力，系统可以利用数据库的镜像能力做到读写分离和分散查询压力，增加系统的承压能力
- **镜像库URL**：启用镜像库功能后，需要配置镜像库的地址
- **镜像同步延迟时间**：设置一个镜像库延迟读取时间，用于修改模型数据后，是否延迟读取镜像库数据。单位秒，默认0，表示不延迟，可以直接查镜像库。比如：期望修改后5分钟内，只查主库，则设置为300
- **高级属性**：用于数据源的特定参数，详见[数据源自定义属性](#custom-properties)

### 数据源自定义属性{#custom-properties}

有些数据库要设置特定的属性，用于指定在数据源中管理表时的默认属性或者用于优化性能。这些属性通常是来自数据库内部的定义，也有产品内置的属性。在自定义属性框中以名值对的形式设置属性，如`databaseStatisticsSchedule=true`，不同的数据库类型设置的属性也不一样，可参考[jdbc配置文件格式](/dev/meta/jdbc-conf)。

<!-- ### 新建Elasticsearch连接{#create-es-connect}

![新建Elasticsearch连接](./images/2021-04-13-14-21-44.png)

新建Elasticsearch连接除了需要设置基本的连接属性外，通常还要设置如下的自定义属性：

```ini
pinyin_analyzer=pinyin
en_analyzer=standard
zh_analyzer=hanlp_index
index.refresh_interval=-1  # 关闭自动刷新，ES检索同步后，程序自动发起refresh
index.translog.durability=async  # 异步写入
index.translog.sync_interval=600s  # 600s写入间隔
index.translog.flush_threshold_size=1024mb  # 1024mb写入阈值
index.per_commit_threshold_mb=5  # es单次提交5mb的数据
```

### Elasticsearch自定义属性{#es-custom-properties}

在es数据源中常见的自定义属性主要分为`分词器设置`和`索引设置`。  

**分词器设置**

分词器设置用于指定创建ES检索时不同分词模式对应使用的分词器，参数如下：

- **zh_analyzer**：指定中文分词器
- **pinyin_analyzer**：指定拼音分词器
- **en_analyzer**：指定英文分词器

未指定时，默认均为 `standard`分词器。常见的分词器设置：

```ini
zh_analyzer=hanlp_index
pinyin_analyzer=pinyin
en_analyzer=standard
```

::: tip 提示
Elasticsearch没有内置中分分词器和拼音分词器，使用时需要在Elasticsearch服务器上提前安装
:::

**索引设置**  
es中常见的索引属性参数：

* **index.refresh_interval**：刷新间隔
* **index.translog.durability**：写入磁盘的策略
* **index.translog.sync_interval**：写入磁盘的时间间隔
* **index.translog.flush_threshold_size**：写入磁盘的阈值
* **index.per_commit_threshold_mb**：单次提交的数据量

参考设置

```ini
index.refresh_interval=-1  # 关闭自动刷新，ES检索同步后，程序自动发起refresh
index.translog.durability=async  # 异步写入
index.translog.sync_interval=600s  # 600s写入间隔
index.translog.flush_threshold_size=1024mb  # 1024mb写入阈值
index.per_commit_threshold_mb=5  # es单次提交5mb的数据
```   -->

## 编辑数据库连接属性{#edit-properties}

点击**操作**中的**编辑**，可修改该数据源的连接属性设置，**修改后无需重启服务**。修改页面与[新建数据库连接](#新建数据库连接)页面相同。

::: tip
由于default库是元数据数据源，因此只能点击**操作**中的**查看**来查看该数据源详细的连接属性信息，但无法编辑。
:::

## 删除数据库连接{#delete}

点击**操作**中的**删除**，再勾选**我确认删除数据源**进行确认后，可删除该数据源。数据源删除后，可从回收站恢复或者重新连接，**恢复后的数据源与删除前相同**。

![删除数据库连接](./images/2021-04-13-14-24-49.png)

## 刷新数据库连接状态{#refresh}

当数据源状态发生变化，例如数据库出现异常后运维工程师在后台修复，此时点击**操作**中的**刷新**，可刷新数据源状态，验证是否成功连接

![刷新数据库连接](./images/2021-04-13-14-25-41.png)

## 默认数据库{#defdb}

默认数据库用来存储系统表和元数据，比如**default库**，除迁移环境时需要修改默认数据库以外，其它情况下不建议直接修改默认数据库，修改默认数据源时，修改的数据源属性会保存到工作目录的jdbc.conf文件中。详见[工作目录和默认数据库配置](../devops/install/basic-install/workdir-and-defdb.md)

## 分组管理数据源连接{#datasources-group}

当数据源很多时，可以根据业务分类对数据源进行分组管理，在**高级属性**处使用`group`属性定义分组。详见[jdbc配置文件格式](/dev/meta/jdbc-conf/)
![分组管理数据库连接](./images/2024-12-23-16-35-01.png)
