尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

DB-GPT 集成 openGauss:基于 PostgreSQL 兼容驱动的原生数据源接入指南

DB-GPT 集成 openGauss:基于 PostgreSQL 兼容驱动的原生数据源接入指南 DB-GPT 集成 openGauss基于 PostgreSQL 兼容驱动的原生数据源接入指南【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPTopenGauss 是开源的关系型数据库DB-GPT 通过dbgpt_ext.datasource.rdbms.conn_openGauss中的原生连接器为其提供支持。本文以该连接器为主线完整讲解依赖安装、实例准备、数据源配置字段以及底层实现原理帮助你在 DB-GPT 中快速接入 openGauss并将其作为 Chat Data / Chat DB 等数据应用的数据底座。读完本文你将掌握从零配置 openGauss 数据源、理解其连接池与 Schema 同步机制以及通过 UI 与配置两种方式完成接入的完整能力。为什么 openGauss 可以直接接入 DB-GPTopenGauss 与 PostgreSQL 保持高度兼容因此 DB-GPT 复用 PostgreSQL 兼容的驱动路径即可完成连接。整个支持链路由三部分组成原生连接器packages/dbgpt-ext/src/dbgpt_ext/datasource/rdbms/conn_openGauss.py中的openGaussConnector参数模型同文件中的openGaussParameters驱动依赖packages/dbgpt-ext/pyproject.toml中的datasource_postgres可选依赖安装psycopg2-binary。从源码结构看openGauss 连接器本身并不重复实现数据库访问逻辑而是直接继承 GaussDB 连接器再由 GaussDB 连接器复用核心的RDBMSConnector基类形成一条清晰的继承链openGaussConnector → GaussDBConnector → RDBMSConnector openGaussParameters → GaussDBParameters → RDBMSDatasourceParametersopenGaussConnector仅需声明db_type openGauss与db_dialect openGauss即可完成类型标识见 conn_openGauss.py。同时DBType 枚举 中也注册了openGauss类型前端数据源类型声明 web/types/db.ts 与展示配置 web/utils/constants.ts 均有对应条目保证 UI 层可选择到 openGauss。第一步安装依赖openGauss 依赖 PostgreSQL 兼容驱动使用uv同步项目依赖时需显式带上datasource_postgres扩展。以代理 OpenAI 模型场景为例完整命令如下uv sync --all-packages \ --extra base \ --extra datasource_postgres \ --extra rag \ --extra storage_chromadb \ --extra dbgpts各 extra 的含义如下Extra作用baseDB-GPT 基础运行环境datasource_postgres安装psycopg2-binary即 openGauss / GaussDB / PostgreSQL 共用的 Python 驱动rag检索增强生成相关组件Chat Knowledge 等场景需要storage_chromadbChroma 向量存储RAG 场景默认向量库dbgptsDB-GPT 智能体插件Agents能力datasource_postgres的定义见 packages/dbgpt-ext/pyproject.toml。需要说明的是该处注释指出生产环境可以改用psycopg2而非psycopg2-binary若在 Ubuntu 等系统上手动安装相关依赖通常还需先安装libpq-dev编译库。第二步准备 openGauss 实例并启动 WebServer准备好一个可用的 openGauss 实例本地或远程均可确保网络可达、账号具备建表/查询权限然后启动 DB-GPT WebServeruv run dbgpt start webserver --config configs/dbgpt-proxy-openai.toml--config指定的 configs/dbgpt-proxy-openai.toml 声明了模型、Web 服务与存储的默认配置例如 WebServer 监听0.0.0.0:5670、内置元数据库使用 SQLitepilot/meta_data/dbgpt.db、向量存储使用 Chroma。启动后通过浏览器访问 Web UI即可进入数据源管理界面添加 openGauss。数据源添加入口位于 Web UI 右上角的Add Datasource按钮选择 openGauss 数据库类型并填写连接参数即可完成接入对应文档 docs/docs/application/datasources.md 中的描述第三步openGauss 配置字段详解在数据源 UI 或配置字段中需要填写以下连接参数字段必填说明host是openGauss 实例地址如localhost或内网 IPport是服务端口openGauss 默认通常为5432user是连接用户名password是连接密码支持直接填写或使用环境变量如${env:DBGPT_DB_PASSWORD}database是目标数据库名schema否数据库 Schema默认publicdriver否驱动名固定为postgresqlpsycopg2上述字段大多继承自 RDBMSDatasourceParameters其中schema与driver由 GaussDBParameters 补充定义。除基础连接信息外底层还支持以下连接池参数均有默认值无需全部配置参数默认值说明pool_size5连接池大小max_overflow10连接池最大溢出连接数pool_timeout30获取连接超时秒pool_recycle3600连接回收周期秒pool_pre_pingtrue获取连接前预检避免使用失效连接这些连接池参数由engine_args()统一组装后传给 SQLAlchemy 引擎是保证长连接稳定性的关键。数据源 URL 的构造连接器通过db_url()构造 SQLAlchemy 连接串格式为postgresqlpsycopg2://{user}:{password}{host}:{port}/{database}单元测试 验证了该 URL 的拼装结果例如postgresqlpsycopg2://test_user:test_passwordlocalhost:5432/test_db值得注意的是from_uri_db()在拼接 URL 时会分别使用quote与quote_plus对用户名、密码进行编码见 conn_gaussdb.py因此密码中包含空格、、/等特殊字符时也能正确连接测试中test password被编码为testpassword即为佐证。底层原理Schema 感知的表同步与元数据能力GaussDBConnectoropenGauss 的实际能力来源在RDBMSConnector基类之上针对 PostgreSQL 生态做了系统化适配这也是 openGauss 接入后能直接支撑 Chat Data、Chat DB 等应用的原因Schema 感知的表同步_sync_tables_from_db()通过pg_catalog.pg_tables与pg_catalog.pg_views按 Schema 读取表与视图并合并为表集合再以指定 Schema 执行metadata.reflect()见 conn_gaussdb.py字段与建表语句get_fields()从information_schema.columns读取列名、类型、默认值、可空性与列注释get_show_create_table()可将列定义、长度/精度/标度还原为CREATE TABLE语句元数据查询get_grants()角色权限、get_collation()排序规则、get_charset()字符集、get_users()用户列表、get_database_names()数据库列表等方法均通过pg_catalog与information_schema实现驱动版本兼容from_uri_db()中将 PostgreSQL 方言的_get_server_version_info固定为版本(7, 0)返回规避 PG 方言版本探测与 openGauss 服务器版本信息不匹配的问题。验证连接器行为仓库内置了针对 openGauss 连接器的单元测试 test_conn_openGauss.py覆盖了三个核心行为URL 构造openGaussParameters拼接出的db_url()与预期完全一致连接器创建openGaussParameters.create_connector()委托给openGaussConnector.from_parameters()参数传递from_parameters()将 host/port/user/password/database 及schema、engine_args连接池参数集合完整透传给from_uri_db()。这意味着只要驱动安装正确、参数填写无误openGauss 的接入路径与 PostgreSQL 完全同构可复用地使用 DB-GPT 的数据应用能力。接入后的能力与注意事项成功接入 openGauss 数据源后你可以在 DB-GPT 中在Chat Data中基于 openGauss 建库/建表用自然语言生成 SQL 并执行在Chat DB中针对 openGauss 中的表进行问答连接器提供的表结构、字段注释、索引等元数据会成为模型理解数据库语义的重要上下文通过数据源管理界面随时编辑、测试或删除连接。实操中需要留意的几个要点驱动版本官方推荐psycopg2-binary便于快速安装生产环境可切换为psycopg2并在 Ubuntu 等系统上预先安装libpq-devSchema 指定若业务表不在publicSchema 下务必显式配置schema字段否则表同步会落到默认的public密码特殊字符from_uri_db()已对用户名与密码做 URL 编码配置时可直接填写原始密码连接稳定性pool_pre_pingTrue与pool_recycle3600的默认组合可有效避免空闲连接被服务端回收后引发的断连问题一般无需修改。总结openGauss 的接入在 DB-GPT 中被设计为一条轻量路径复用 PostgreSQL 兼容驱动、继承 GaussDB 连接器的 Schema 感知元数据能力再通过原生连接器暴露为一级数据源类型。整体接入只需三步——uv sync安装datasource_postgres依赖、准备 openGauss 实例并启动 WebServer、在数据源 UI 中填写连接参数。相关实现文件与测试均可作为深入学习的入口连接器源码、能力基类、单元测试。【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表