带你看看Dify的原生数据库中有什么?——深入PostgreSQL

向量数据库关系型数据库NoSQL数据库

字数 973,阅读大约需 5 分钟

说在前面

Dify 提供了拖拉拽的可视化界面,使用起来确实非常方便。
但如果你希望进行深度开发或二次开发 ,仅仅停留在界面上是远远不够的。

很多关键数据和配置信息其实都存储在数据库中,直接访问数据库 将帮助你更好地理解 Dify 的底层逻辑。

本文将以 Dify 使用的核心关系型数据库 PostgreSQL 为例,带你看到 Dify 背后的数据库服务。

  1. Dify 使用了哪些数据库?

根据 .env 配置文件中的设置,Dify 当前使用了以下三类数据库服务,分别承担不同的功能角色:

1. PostgreSQL(主关系型数据库)

  • 作用 :作为核心数据库, 用于存储用户、应用、工作流等结构化数据
  • 主要配置项 :用户名、密码、主机地址、端口、数据库名
  • 连接池配置 :最大连接数为 30,连接回收时间为 3600 秒

2. Redis(缓存与消息中间件)

  • 作用 :用于缓存数据、处理实时对话的发布/订阅机制
  • 配置参数 :主机地址、端口、密码、数据库编号
  • 支持模式 :哨兵模式和集群模式(当前默认未启用)

3. 向量数据库(默认为 Weaviate)

  • 作用 :用于向量数据的存储与相似性检索
  • 配置内容 :服务端点 URL 和 API 密钥
  • 扩展能力 :支持多种向量数据库选项,如 Qdrant、Milvus、PGVector 等

这些数据库共同构成了 Dify 的数据基础设施,分别负责结构化数据管理、缓存加速和语义级搜索功能。

  1. 以PostgreSQL为例:如何进入数据库查看数据?

⚠️ 本文默认你已成功安装并运行 Dify。

如果尚未安装,建议先参考以下教程:

Dify-v1.1.3的安装与配置

Dify 1.5.0 在线Debug的工作流你用上了吗?

如果你要查看或操作 PostgreSQL 数据库,可以按照下面三个步骤操作:找到DB配置,新增端口映射,连接DB

2.1 找到DB配置

.env 的文件路径:dify/docker/.env


 
 
 
 
   
DB\_USERNAME=postgres # PostgreSQL数据库用户名  
DB\_PASSWORD=difyai123456 # PostgreSQL数据库密码  
DB\_HOST=db # PostgreSQL数据库主机地址  
DB\_PORT=5432 # PostgreSQL数据库端口号  
DB\_DATABASE=dify # PostgreSQL数据库名称

拉取dify仓库后,如果不是很必要,这里就保持默认配置。

2.2 新增DB服务的端口映射

文件路径:dify/docker/docker-compose.yaml

docker-compose.yaml 的 "db" 服务下,新增 5432 端口映射

注意 :主机端口可以修改,内容端口要跟 .envDB\_PORT保持一致。


 
 
 
 
   
services:  
    api:  
    worker:  
    web:  
    db:  
        image: postgres:15-alpine  
        restart: always  
        ports:  
        - "5432:5432" # 新增db服务的端口映射(主机端口5432:容器端口5432)

命令解释:

    1. 端口映射(Port Mapping)是指将容器内部的端口绑定到宿主机的端口
    1. 格式为 主机端口:容器端口 ,意思是:将容器内部的5432端口 映射 到主机的5432端口
    1. 这种配置允许外部通过宿主机的端口访问容器内部服务

picture.image

然后重启dfiy服务


 
 
 
 
   
sudo docker compose down  
sudo docker compose up -d

2.3 连接DB

打开数据库工具(如 DBeaver[1])

新建PostgreSQL连接,配置数据库名称、端口、用户名和密码,最后测试连接

连通即可。

picture.image

可以看到 PG 数据库下有多个表文件

picture.image

这里介绍几个大家可能会用到的表:

| 表名 | 作用 | | app | 存储工作流应用基本信息 | | api_tokens | 存储各应用的API秘钥 | | embedding | 存储向量嵌入embedding信息 | | upload_files | 存储上传文件的所有信息,文件的主机路径、文件id等 |


你在工作中会用到哪个表?欢迎留言交流~

实践出真知,与君共勉~

引用链接

[1] DBeaver: https://dbeaver.io/

picture.image

picture.image

点击下方卡片 关注我们

picture.image

  
📢【三连好运 福利拉满】📢  
  
🌟 若本日推送有收获:  
👍 点赞 → 小手一抖,bug没有  
📌 在看 → 一点扩散,知识璀璨  
📥 收藏 → 代码永驻,防止迷路  
🍻 分享 → 传递战友,功德+999  
🔔 关注 → 关注“AI早高峰”,追更不迷路,干货永同步  
  
💬 若有槽点想输出:  
👉 评论区已铺好红毯,等你来战!  

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
云原生数据库 veDB 核心技术剖析与展望
veDB 是一款分布式数据库,采用了云原生计算存储分离架构。本次演讲将为大家介绍火山引擎这款云原生数据库的核心技术原理,并对未来进行展望。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论