本篇我们简单体验下OpenTenBase-V5, V5主打Oracle兼容性,不过老杨这次不打算验证这里。主要围绕编译安装集中式以及opentenbase_ai扩展测试。
opentenbase_ai简介
直接引用官方介绍: “opentenbase_ai 插件为 PostgreSQL 数据库提供了集成人工智能大语言模型能力的接口,让您能够直接在 SQL 中使用 AI 功能。该插件支持多种 AI 模型提供商(包括 OpenAI、DeepSeek、腾讯混元、阿里通义千问等),提供文本生成、翻译、情感分析、问答提取、文本摘要、嵌入向量生成以及图像分析等功能” [1]。
opentenbase_ai原理也很简单,和pgsql-http插件组合使用。从代码 [2]来看,主要是opentenbase_ai--1.0.sql定义了一些sql函数和表,用来拼接http body,调用pgsql-http提供的函数curl https发起请求,并接收结果在数据库中格式化展示。ai.c文件中主要是自定义了几个guc,用来控制大模型选型等。
编译安装OpenTenBase
代码下载:
https://github.com/OpenTenBase/OpenTenBase/tree/v5.0-release_new
系统要求:
Memory: 4G RAM
OS: TencentOS 2, TencentOS 3, OpenCloudOS, CentOS 7, CentOS 8, Ubuntu
编译安装还是花了点精力,可能和老杨选择的操作系统版本太新相关,云服务器安装的os为TencentOS Server 4.4,编译时还算踩了一些坑,给大家分享下编译过程。
1. 安装依赖:
yum install -y libxml2-devel crypto-devel zstd libzstd-devel lz4 lz4-devel yum install -y libuuid-devel openssl openssl-devel zlib zlib-devel gcc make yum install -y readline-devel bison flex uuid-devel uuid libcurl-devel
2. configure:
这里费了些功夫,主要是configure文件中一些链接库的路径和安装的操作系统中的不一致,找不到zstd、lz4等一些链接库;另外还有一些代码规范性、库函数弃用等问题导致的编译告警报错。
所以我编译测试了好几次,才整体编译成功。
给产品提个建议,当然是我个人看法:可以针对适配操作系统直接出对应的third-party library包,下载后设置好3rdpartydir路径变量,编译时直接使用指定的3方库,这样会方便很多。
- 设置CFLAGS: 主要是保留符号表便于debug,同时忽略一些编译告警,以及指定链接库。
export CFLAGS='-g -Wall -O0 -Werror=unused-function -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -ggdb -g3 -Wno-deprecated-declarations -Wno-maybe-uninitialized -Wno-declaration-after-statement -Wno-format-overflow -Wno-misleading-indentation -I/usr/include/libxml2 -DUSE_LIBXML=1'
- 修改configure文件:
12837: 12838: LIBS="-lzstd $LIBS" 12887: 12888: LIBS="-llz4 $LIBS"
- 执行configure:
LIBS='-lssl -lcrypto -llz4 -lzstd -lz -lreadline -lcrypt -lm -lxml2' ac_cv_lib_zstd_ZSTD_compress=yes ac_cv_lib_lz4_LZ4_compress_default=yes ac_cv_lib_crypto_CRYPTO_new_ex_data=yes ac_cv_lib_ssl_SSL_new=yes ac_cv_lib_uuid_uuid_generate=yes ac_cv_lib_uuid_uuid_export=yes ./configure --prefix=/data/opentenbase/OpenTenBase-5.0-release_new/app --with-openssl --enable-debug --with-ossp-uuid --with-zstd --with-lz4
3. make && make install:
有一处代码隐患有编译告警,可以用CFLAG忽略,或者修改。这里我修改了下:
vim ./src/backend/postmaster/forwardrecv.c +949 events = malloc(32 * sizeof(struct epoll_event));
进行编译安装:
我一般只关注编译告警和报错,所以将标准输出定向到文件。
make -j 4 > make.log make install > make.log
4. initdb:
早先的版本是V2,属于PGXC分布式系。V5我们玩下集中式,所以不需要GTM、coordinator,initdb一个datanode即可。
将PATH、LD_LIBRARY_PATH写入.bashrc
export PATH=/data/opentenbase/OpenTenBase-5.0-release_new/app/bin:$PATH export LD_LIBRARY_PATH=/data/opentenbase/OpenTenBase-5.0-release_new/app/lib:$LD_LIBRARY_PATH
initdb:
initdb -U opentenbase -D /data/opentenbase/OpenTenBase-5.0-release_new/data -E=UTF-8 --nodename=dn1 --nodetype=datanode
修改配置参数: 主要是配置is_centralized_mode(集中式开关),allow_dml_on_datanode(datanode可写)
is_centralized_mode = on allow_dml_on_datanode = on
5. 安装opentenbase_ai:
依次编译pgsql-http和opentenbase_ai
[opentenbase@VM-16-13-tencentos contrib]$ cd pgsql-http/ [opentenbase@VM-16-13-tencentos pgsql-http]$ make && make install [opentenbase@VM-16-13-tencentos pgsql-http]$ cd ../opentenbase_ai [opentenbase@VM-16-13-tencentos opentenbase_ai]$ make && make install
启动实例:
pg_ctl start -D /data/opentenbase/OpenTenBase-5.0-release_new/data/ -Z datanode
创建node,default group:
psql (PostgreSQL 10.0 @ OpenTenBase_v5.21.8.11 OpenTenBase V5.21 2025-09-12 23:11:49) Type "help" for help. postgres=# create node dn1 with(TYPE='datanode',HOST='127.0.0.1',PORT=5432,PRIMARY='TRUE',PREFERRED='TRUE'); CREATE NODE postgres=# create default node group default_group with (dn1); CREATE NODE GROUP postgres=#
创建扩展:
postgres= CREATE EXTENSION postgres= NOTICE: (00000) installing required extension "http" CREATE EXTENSION postgres=
测试opentenbase_ai
- 我们这里测试混元大模型,首先得获取自己的api token,可参考官方文档 [3]
- 添加混元大模型的模型定义到模型元数据表中: 记得将your_hunyuan_api_key替换为自己的api token
postgres=
model_name => 'hunyuan_chat',
uri => 'https://api.hunyuan.cloud.tencent.com/v1/chat/completions',
default_args => '{"model": "hunyuan-lite"}'::jsonb,
token => 'your_hunyuan_api_key',
model_provider => 'tencent'
);
add_completion_model
----------------------
t
(1 row)
postgres=
配置混元大模型为默认模型
postgres=# SET ai.completion_model = 'hunyuan_chat'; SET postgres=#
测试
我主要测试了几个简单问答,挺有趣的。
postgres=# SELECT ai.generate('PostgreSQL的主要特点是什么?', NULL::text);
generate
------------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL(也称为 Postgres)是一个功能强大、开源的对象关系型数据库管理系统(ORDBMS) +
+
1. 开源:PostgreSQL 是一个开源项目,使用的协议非常友好,这意味着任何人都可以访问其源代码,并根据自己的需要进行修改和分发。 +
+
2. 兼容性:PostgreSQL 兼容多种数据格式,包括 SQL 标准、XML、JSON、CSV 等。这使得它能够轻松地与其他系统和应用程序集成。 +
+
3. 高级功能:PostgreSQL 提供了许多高级功能,如事务支持、存储过程、触发器、视图、索引、全文搜索等。 +
+
4. 可扩展性:PostgreSQL 支持自定义数据类型、函数、操作符等,这使得用户可以根据需要扩展数据库的功能。 +
+
5. 性能优化:PostgreSQL 提供了丰富的性能优化工具和技术,如查询优化器、索引、分区、缓存等,以帮助用户提高数据库的性能。 +
+
6. 安全性:PostgreSQL 提供了强大的安全功能,如 SSL 加密、角色和权限管理、审计日志等,以确保数据的完整性和安全性。 +
+
7. 社区支持:PostgreSQL 有一个庞大的开发者社区,提供了大量的文档、教程、插件和第三方工具,以帮助用户更好地使用和维护 PostgreSQL 数据库。
(1 row)
postgres=#postgres=# SELECT ai.generate('介绍下TDSQL', NULL::text);
generate
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
腾讯云的TDSQL(Tencent Distributed SQL)是腾讯云自主研发的新一代关系型云原生数据库,具有分布式设计的低成本优势和集中式的易用性。它采用存储计算分离设计,满足各种规模应用场景需求。
+
+
TDSQL兼容MySQL和PostgreSQL,支持存储弹性扩展,一主多从共享数据,性能超越社区原生MySQL和PostgreSQL。TDSQL采用shared storage架构,其弹性扩展和高性价比的基石则是CynosDB-Proxy。此外,TDSQL支持多地多活
署,单集群规模支持100+节点,同时支持多地多活部署。+
+
TDSQL采用shared storage架构,其弹性扩展和高性价比的基石则是CynosDB-Proxy。CynosDB-Proxy作为腾讯云分布式数据库集群的管理模块,为用户提供统一的数据库管理平台,屏蔽底层差异,简化运维工作。
+
+
总的来说,TDSQL是腾讯云推出的一款高性能、高性价比的关系型数据库,适用于各种规模的应用场景。
(1 row)
postgres=#postgres=# SELECT ai.generate('计算 123 * 456 的结果', NULL::integer);
generate
----------
138528
(1 row)
postgres=#postgres=# SELECT ai.generate('鸡你太美是什么意思', NULL::text);
generate
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
"鸡你太美"是一句网络流行语,为2016年11月29日SWIN-S发布的歌曲《只因你太美》的空耳。出自于蔡徐坤在综艺节目《偶像练习生》之中的自我介绍表演。原歌词的“只因你太美”被网友误听为“鸡你太美”,从而将“只因”误
为“鸡”,产生了这个网络梗。这个词语后来被部分网友用来恶意嘲讽蔡徐坤为代表的流量明星,并用这段音乐制作鬼畜恶搞视频,上传到网络上的各个平台,逐渐成为网络热梗。+
+
该词的社会影响较大,引发了关于网络暴力和恶俗烂梗的讨论。2023年3月7日,“人民热评:鸡你太美是恶俗烂梗”的相关话题登上微博热搜第一。这种恶俗烂梗会给一些人带来无形的霸凌,严重影响他们的生活。因此,我们
该共同维护网络健康,文明用语,共享绿色心灵。
(1 row)
postgres=#
好了,就先玩到这,可以参考官方文档 [1]测试其他功能。

总结
本篇介绍了OpenTenBase-V5集中式的编译安装过程,以及opentenbase_ai扩展的配置和简单使用,挺有趣的,推荐大家试玩。
另外我个人感觉提供适配3方库对编译安装来说挺方便的,建议产品侧可以斟酌下。
Reference:
[1] https://docs.opentenbase.org/guide/23-opentenbase_ai/
[2] https://github.com/OpenTenBase/OpenTenBase/tree/v5.0-release_new/contrib/opentenbase_ai
[3] https://cloud.tencent.com/document/product/1729/111008