文章目录
- 前言
- 一、部署环境
-
- [1.1 安装包版本](#1.1 安装包版本)
- [1.2 测试环境](#1.2 测试环境)
- 二、清理旧版本环境
- [三、安装 Vastbase G100 V3.0.9](#三、安装 Vastbase G100 V3.0.9)
-
- [3.1 上传并解压安装包](#3.1 上传并解压安装包)
- [3.2 切换安装用户](#3.2 切换安装用户)
- [3.3 交互式安装选择](#3.3 交互式安装选择)
- [3.4 安装完成后的环境变量](#3.4 安装完成后的环境变量)
- 四、启动数据库
-
- [4.1 启动服务](#4.1 启动服务)
- [4.2 查看数据库状态](#4.2 查看数据库状态)
- [4.3 查看监听端口](#4.3 查看监听端口)
- 五、连接与功能测试
-
- [5.1 使用 gsql 连接数据库](#5.1 使用 gsql 连接数据库)
- [5.2 基础 SQL 测试](#5.2 基础 SQL 测试)
- 六、新版本G100测试
-
- [6.1 版本检查](#6.1 版本检查)
- [6.2 测试向量类型和向量算子](#6.2 测试向量类型和向量算子)
-
- 6.2.1查看向量类型
- [6.2.2 创建向量表](#6.2.2 创建向量表)
- [6.2.3 测试 L2 距离](#6.2.3 测试 L2 距离)
- [6.2.4 测试 Cosine 距离和内积](#6.2.4 测试 Cosine 距离和内积)
- [6.2.5 测试向量函数](#6.2.5 测试向量函数)
- [6.3 测试向量索引 graph_index](#6.3 测试向量索引 graph_index)
-
- [6.3.1 创建测试表](#6.3.1 创建测试表)
- [6.3.2 插入 10000 条随机向量](#6.3.2 插入 10000 条随机向量)
- [6.3.3 创建向量索引](#6.3.3 创建向量索引)
- [6.3.4 验证是否走 ANN Index Scan](#6.3.4 验证是否走 ANN Index Scan)
- [6.4 查看新版本支持的向量索引类型](#6.4 查看新版本支持的向量索引类型)
- [6.5 测试 Oracle 兼容能力](#6.5 测试 Oracle 兼容能力)
-
- [6.5.1 dual、sysdate、nvl、decode](#6.5.1 dual、sysdate、nvl、decode)
- [6.5.2 测试 connect by 层级查询](#6.5.2 测试 connect by 层级查询)
- [6.5.3 测试 Oracle 兼容视图](#6.5.3 测试 Oracle 兼容视图)
- [6.5.4 DBMS 包测试](#6.5.4 DBMS 包测试)
- [6.6 测试审计和缓存参数检查](#6.6 测试审计和缓存参数检查)
- [6.7 测试总结](#6.7 测试总结)
- 总结
前言
这两年,国产数据库赛道真是越来越热闹。有厂商强调兼容替代,有厂商主打分布式和云原生,也有厂商开始把数据库重新定义为 AI 时代的数据底座。两个月前我受小龙姐的邀请测试官网挂包的Vastbase G100时,我最关心的并不是它是不是国产数据库,而是它到底想解决什么问题,又凭什么在一众产品里占有一席之地。至于为什么是两个月前呢emmm因为两个月前测试的时候装错版本了,后来工作一直忙也没来得及测试,恰好这两天有时间把鸽了两个月数据库测一测
当我了解完Vastbase G100的第一感受是,它不像一款只想做平替的数据库,它更像一款想同时抓住传统核心业务 和 AI新场景的产品。 这种野心并不小而且也并不轻松,因为前者要求稳定、兼容、易运维,后者要求向量、检索、生态接入,而Vastbase G100的体系恰恰是在这两条线上同时展开。
官方文档地址:
text
https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V3.0.9/1
一、部署环境
1.1 安装包版本
本次使用的安装包为:
text
Vastbase-G100-3.0_Build9_30156-Linux-x86_64-no_mot-202601221034.tar.gz
安装包校验结果:
bash
sha256sum Vastbase-G100-3.0_Build9_30156-Linux-x86_64-no_mot-202601221034.tar.gz

1.2 测试环境
| 项目 | 配置 |
|---|---|
| 虚拟机 IP | 192.168.10.128 |
| 操作系统 | Oracle Linux Server 7.9 |
| CPU | 8 核 |
| 内存 | 约 15 GB |
| 数据库版本 | Vastbase G100 V3.0.9 Build 9 |
| 数据库用户 | vastbase |
| 安装目录 | /home/vastbase/local/vastbase |
| 数据目录 | /home/vastbase/data/vastbase |
| 默认端口 | 5432 |
二、清理旧版本环境
之前环境 中已经安装过 Vastbase,但是安装版本不正确,因此本次首先对旧版本进行清理。
环境配置参考:https://blog.csdn.net/qq_46302361/article/details/157068594
删除旧版本目录。
bash
pkill -u vastbase -f 'gaussdb|vastbase|postgres|gs_ctl|vb_ctl' 2>/dev/null || true
rm -rf /home/vastbase/local/vastbase
rm -rf /home/vastbase/local/vastbase_17408
rm -rf /home/vastbase/data/vastbase
rm -rf /home/vastbase/.Vastbase
rm -rf /soft/vb
重新创建基础目录:
bash
mkdir -p /home/vastbase/local
mkdir -p /home/vastbase/data
chown -R vastbase:vastbase /home/vastbase/local /home/vastbase/data
chmod 755 /home/vastbase/local /home/vastbase/data
清理完成后再次检查:
bash
find /home/vastbase /soft -xdev \
\( -iname '*17408*' -o -path '/soft/vb*' \) \
-maxdepth 6 -print 2>/dev/null

三、安装 Vastbase G100 V3.0.9
3.1 上传并解压安装包
创建安装介质目录:
bash
mkdir -p /soft/vastbase_g100_build9_30156
cd /soft/vastbase_g100_build9_30156
上传安装包后解压:
bash
tar -xzf Vastbase-G100-3.0_Build9_30156-Linux-x86_64-no_mot-202601221034.tar.gz
解压后目录结构如下:
text
vastbase-installer/
vastbase-installer/vastbase_installer
vastbase-installer/Vastbase-G100-3.0_Build9_30156-Linux-x86_64-no_mot.tar.gz
vastbase-installer/.checksum
vastbase-installer/locales/
3.2 切换安装用户
Vastbase 安装程序不能使用 root 用户直接运行,需要切换到数据库安装用户。
bash
su - vastbase
进入安装器目录:
bash
cd /soft/vastbase_g100_build9_30156/vastbase-installer
执行安装程序:
bash
./vastbase_installer
3.3 交互式安装选择
安装过程中主要选择如下:
| 安装项 | 本次选择 |
|---|---|
| 是否实例化数据库 | Y |
| 安装类型 | 典型安装 |
| 初始化用户 | vastbase |
| 加密密钥 | 使用数据库初始化用户密码 |
| 软件安装目录 | /home/vastbase/local/vastbase |
| 数据目录 | /home/vastbase/data/vastbase |
| 兼容模式 | 默认 A |
| listen_addresses | * |
| max_connections | 500 |
| shared_buffers | 3930MB |
| max_process_memory | 10455MB |
安装过程中会生成三个默认管理员的初始密码:
text
vbadmin
vbsso
vbaudit
这些密码建议安装完成后立即保存并修改,博客中不建议直接暴露。
3.4 安装完成后的环境变量
安装完成后,环境变量会写入:
text
/home/vastbase/.Vastbase
关键内容如下:
bash
export PGPORT=5432
export PGUSER=vastbase
export PGDATA=/home/vastbase/data/vastbase
export GAUSSHOME=/home/vastbase/local/vastbase
export PATH=/home/vastbase/local/vastbase/bin:$PATH
export OM_GAUSS_VERSION=3.0.9

在 .bashrc 中会自动引用:
bash
source /home/vastbase/.Vastbase
确认安装目录:
bash
ls -ld /home/vastbase/local/vastbase
readlink -f /home/vastbase/local/vastbase
确认版本:
bash
gaussdb --version
gsql --version

四、启动数据库
4.1 启动服务
切换到 vastbase 用户后执行:
bash
su - vastbase
gs_ctl start -D "$PGDATA" -l "$PGDATA/startup.log"

4.2 查看数据库状态
bash
gs_ctl status -D "$PGDATA"
输出如下:

4.3 查看监听端口
bash
ss -lntp | grep -E '5432|5433|vastbase'

五、连接与功能测试
5.1 使用 gsql 连接数据库
进入 vastbase 用户:
bash
su - vastbase
连接默认数据库:
bash
gsql -d vastbase -p 5432
查看版本:
bash
select version();

5.2 基础 SQL 测试
执行以下 SQL,验证建表、插入和查询能力。
sql
select current_database(), current_user;
drop table if exists codex_vastbase_smoke;
create table codex_vastbase_smoke(
id int primary key,
note varchar(64),
created_at timestamp default now()
);
insert into codex_vastbase_smoke(id, note)
values
(1, 'install smoke test'),
(2, 'vastbase g100 build9');
select
id,
note,
to_char(created_at, 'YYYY-MM-DD HH24:MI:SS') as created_at
from codex_vastbase_smoke
order by id;

六、新版本G100测试
6.1 版本检查
先再确认一下没有安装错
sql
SELECT vb_version();
SHOW sql_compatibility;

6.2 测试向量类型和向量算子
6.2.1查看向量类型
bash
SELECT typname
FROM pg_type
WHERE typname ILIKE '%vector%'
ORDER BY typname;

6.2.2 创建向量表
bash
CREATE TABLE vector_basic_test (
id INT PRIMARY KEY,
name TEXT,
emb floatvector(3)
);
INSERT INTO vector_basic_test VALUES
(1, 'apple', '[1,0,0]'),
(2, 'banana', '[0,1,0]'),
(3, 'orange', '[1,1,0]'),
(4, 'car', '[0,0,1]');

6.2.3 测试 L2 距离
预期:apple 距离最近。
bash
SELECT
id,
name,
emb <-> '[1,0,0]'::floatvector(3) AS l2_distance
FROM vector_basic_test
ORDER BY emb <-> '[1,0,0]'::floatvector(3);

6.2.4 测试 Cosine 距离和内积
bash
SELECT
id,
name,
emb <=> '[1,0,0]'::floatvector(3) AS cosine_distance,
emb <#> '[1,0,0]'::floatvector(3) AS negative_inner_product
FROM vector_basic_test
ORDER BY emb <=> '[1,0,0]'::floatvector(3);

6.2.5 测试向量函数

6.3 测试向量索引 graph_index
6.3.1 创建测试表
bash
CREATE TABLE vector_ann_test (
id INT PRIMARY KEY,
emb floatvector(8)
);

6.3.2 插入 10000 条随机向量
bash
INSERT INTO vector_ann_test
SELECT
g,
array_to_floatvector(
ARRAY[
random(), random(), random(), random(),
random(), random(), random(), random()
],
8
)
FROM generate_series(1, 10000) AS g;

6.3.3 创建向量索引
bash
CREATE INDEX vector_ann_graph_idx
ON vector_ann_test
USING graph_index (emb floatvector_l2_ops);

6.3.4 验证是否走 ANN Index Scan
bash
SET enable_seqscan = off;
EXPLAIN ANALYZE
SELECT
id,
emb <-> '[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]'::floatvector(8) AS distance
FROM vector_ann_test
ORDER BY emb <-> '[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]'::floatvector(8)
LIMIT 5;

6.4 查看新版本支持的向量索引类型
bash
SELECT
am.amname,
opc.opcname,
t.typname
FROM pg_opclass opc
JOIN pg_am am ON am.oid = opc.opcmethod
JOIN pg_type t ON t.oid = opc.opcintype
WHERE t.typname ILIKE '%vector%'
OR opc.opcname ILIKE '%vector%'
ORDER BY am.amname, opc.opcname;

6.5 测试 Oracle 兼容能力
6.5.1 dual、sysdate、nvl、decode
bash
SELECT sysdate FROM dual;
SELECT nvl(NULL, 'fallback') AS nvl_test FROM dual;
SELECT decode(2, 1, 'one', 2, 'two', 'other') AS decode_test FROM dual;
SELECT to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') AS now_str FROM dual;

6.5.2 测试 connect by 层级查询
bash
SELECT level
FROM dual
CONNECT BY level <= 5;

6.5.3 测试 Oracle 兼容视图
bash
SELECT count(*) FROM all_arguments;
SELECT count(*) FROM dba_tab_cols;

6.5.4 DBMS 包测试
bash
SELECT dbms_random.value(1, 10) FROM dual;
查看支持的 DBMS 包
bash
SELECT nspname
FROM pg_namespace
WHERE nspname ILIKE 'dbms%'
ORDER BY nspname;

6.6 测试审计和缓存参数检查
bash
SELECT name, setting
FROM pg_settings
WHERE name ILIKE '%audit%'
OR name ILIKE '%cache%'
ORDER BY name;

6.7 测试总结
这次比较值得关注的是新版本的向量能力。测试中可以查询到 floatvector 类型,并且成功创建了 floatvector(3) 和 floatvector(8) 字段。通过 <->、<=>、<#> 等算子,可以分别完成 L2 距离、余弦距离和负内积计算;通过 floatvector_dims、floatvector_norm、l2_distance、cosine_distance、inner_product 等函数,也能完成向量维度、范数、距离和内积等基础运算。
在向量索引测试中,我插入了 10000 条 8 维随机向量数据,并使用 graph_index 创建了 floatvector_l2_ops 索引。后续通过 EXPLAIN ANALYZE 查看执行计划,可以看到查询走的是 ANN Index Scan using vector_ann_graph_idx,说明 Vastbase G100 V3.0 Build 9 不只是支持向量字段存储,而是已经提供了近似向量检索能力。对于语义搜索、相似度匹配、RAG 知识库这类 AI 场景,这个能力是比较实用的。
兼容性方面,Oracle 常见语法和函数的测试结果也比较顺利。dual、sysdate、nvl、decode、to_char 都可以正常执行,connect by level <= 5 也能返回层级查询结果。同时,all_arguments、dba_tab_cols 这类 Oracle 兼容数据字典视图可以查询,dbms_random.value 能正常生成随机数,系统中也能看到 dbms_job、dbms_lob、dbms_random、dbms_session、dbms_utility、dbms_xplan 等多个 DBMS_* schema。对于有 Oracle 迁移或兼容需求的业务来说,这部分能力还是比较重要的。
最后查看审计和缓存参数时,可以看到 enable_audit、audit_directory、audit_event_filter、enable_global_result_cache、enable_global_syscache、query_cache_size、result_cache_mode、vb_result_cache_mode 等参数。虽然部分能力默认是关闭状态,例如 enable_audit=off、enable_global_result_cache=off,但至少说明新版本在审计、缓存、结果缓存和计划缓存方面都预留了比较丰富的配置能力,后续如果做性能测试或生产环境验证,可以继续围绕这些参数展开。
总结
这次测试算是把两个月前"装错版本"的坑补上了。
整体体验下来,Vastbase G100 V3.0给我的感觉不是单纯做国产数据库替代,而是明显在向 AI 数据底座方向靠拢。传统关系型数据库该有的连接、建表、查询、兼容能力都在,同时又加入了向量类型、向量函数、ANN 索引和多种向量索引访问方法。对于既要承接传统业务,又想探索 AI 检索、知识库、语义匹配这类场景的用户来说,这个版本是值得继续深入测试的。