Skip to content

Commit e0cc301

Browse files
committed
Add document of http and vectorchord
1 parent 21ed195 commit e0cc301

File tree

4 files changed

+183
-2
lines changed

4 files changed

+183
-2
lines changed

CN/modules/ROOT/nav.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
** xref:v1.17/35.adoc[pgddl (DDL Extractor)]
1818
** xref:v1.17/36.adoc[pgRouting]
1919
** xref:v1.17/37.adoc[pg_cron]
20+
** xref:v1.17/38.adoc[pgsql-http]
21+
** xref:v1.17/39.adoc[vectorChord]
2022
* Oracle兼容功能列表
2123
** xref:v1.17/11.adoc[1、Ivorysql框架设计]
2224
** xref:v1.17/12.adoc[2、GUC框架]

CN/modules/ROOT/pages/v1.17/33.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ IvorySQL 作为一款兼容 Oracle 且基于 PostgreSQL 的高级开源数据库
1616
| xref:v1.17/35.adoc[pgddl (DDL Extractor)] | 提取数据库中的 DDL(数据定义语言)语句,便于版本管理和迁移 | 数据库版本控制、CI/CD 集成、结构比对与同步
1717
| xref:v1.17/36.adoc[pgRouting] | 基于地理数据的路径规划扩展,支持最短路径、旅行商问题等算法 | 物流规划、交通网络分析、路径优化服务
1818
| xref:v1.17/37.adoc[pg_cron]​ | 提供数据库内部的定时任务调度功能,支持定期执行SQL语句 | 数据清理、定期统计、自动化维护任务
19-
| pgsql-http​ | 允许在SQL中发起HTTP请求,与外部Web服务进行交互 | 数据采集、API集成、微服务调用
20-
| vectorchord | 增强向量检索能力,提供更高效的近似最近邻搜索算法 | 大规模向量检索、AI推理服务、相似性匹配
19+
| xref:v1.17/38.adoc[pgsql-http]​ | 允许在SQL中发起HTTP请求,与外部Web服务进行交互 | 数据采集、API集成、微服务调用
20+
| xref:v1.17/39.adoc​[vectorchord] | 增强向量检索能力,提供更高效的近似最近邻搜索算法 | 大规模向量检索、AI推理服务、相似性匹配
2121
| pgvectorscale | 提供向量数据的分片和分布式扩展支持,提升大规模向量处理性能 | 分布式向量数据库、高并发向量查询
2222
|====
2323

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
2+
:sectnums:
3+
:sectnumlevels: 5
4+
5+
= pgsql-http
6+
7+
== 概述
8+
pgsql-http 是一个为 PostgreSQL 数据库设计的开源扩展,它允许用户直接在数据库内部发起 HTTP 请求,扮演了一个内置 Web 客户端的角色。该扩展的核心目的是打通数据库与外部 Web 服务之间的壁垒,使得通过简单的 SQL 函数调用即可与外部 Web 服务、API 端点进行交互,无需依赖外部应用程序或中间件。
9+
10+
借助此扩展,开发者可以在 SQL 查询、触发器或存储过程中直接获取网络数据(GET)、提交数据(POST/PUT)、更新(PATCH)或删除(DELETE)远程资源。它提供了丰富的功能,包括设置请求头、自动处理 URL 编码、发送 JSON 数据以及解析响应状态、头部和内容,极大简化了将外部数据集成到数据库操作中的流程。
11+
12+
其典型应用场景包括:实时获取外部数据(如汇率、天气信息)并存入表;在数据变更时通过触发器自动通知微服务;对数据库中的数据进行清洗后直接提交至外部 API 等。它为构建以数据库为中心的集成应用提供了强大而灵活的解决方案。
13+
14+
== 安装
15+
IvorySQL的安装包里已经集成了pgsql-http插件,如果使用安装包安装的IvorySQL,通常不需要再手动安装pgsql-http即可使用。其它安装方式可以参考下面的源码安装步骤。
16+
17+
[TIP]
18+
环境中已经安装了IvorySQL1.17及以上版本,安装路径为/usr/local/ivorysql/ivorysql-1
19+
20+
=== 源码安装
21+
22+
** 安装依赖
23+
24+
对libcurl有依赖,libcurl的开发文件(例如 libcurl4-openssl-dev)需要提前安装上
25+
```
26+
#安装依赖
27+
sudo apt install libcurl4-openssl-dev
28+
```
29+
30+
** 编译安装
31+
从https://github.com/pramsey/pgsql-http/releases/tag/v1.7.0 下载 1.7.0的源码包 pgsql-http-1.7.0.tar.gz
32+
```
33+
tar xvf pgsql-http-1.7.0.tar.gz
34+
cd pgsql-http-1.7.0
35+
# 确保pg_config在PATH里可以访问,eg: /usr/local/ivorysql/ivorysql-1/bin/pg_config
36+
make
37+
sudo make install
38+
```
39+
40+
== 创建Extension并确认http版本
41+
42+
psql 连接到数据库,执行如下命令:
43+
```
44+
ivorysql=# CREATE extension http;
45+
CREATE EXTENSION
46+
47+
ivorysql=# SELECT * FROM pg_available_extensions WHERE name = 'http';
48+
name | default_version | installed_version | comment
49+
-----------+-----------------+-------------------+-------------------------------------------------------------------------
50+
http | 1.7 | 1.7 | HTTP client for PostgreSQL, allows web page retrieval inside the database.
51+
(1 row)
52+
```
53+
54+
== 使用
55+
关于pgsql-http的使用,请参阅 https://github.com/pramsey/pgsql-http[pgsql-http官方文档]
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
2+
:sectnums:
3+
:sectnumlevels: 5
4+
5+
= VectorChord
6+
7+
== 概述
8+
VectorChord 是 PostgreSQL 的一个高性能、可扩展的向量搜索扩展,被视为 pgvecto.rs 的继任者。它专为处理大规模向量数据而设计,能够在有限的硬件资源下高效存储和检索高维向量,显著降低了向量搜索的存储与计算成本。
9+
10+
该扩展具备卓越的性能表现,其查询速度比 pgvector 快达 5 倍,并支持最高 60,000 维的向量。通过创新的 RaBitQ 压缩技术和 IVF 索引,VectorChord 实现了磁盘存储效率的极大提升,宣称仅需 1 美元即可存储 40 万条向量,成本效率远超同类服务。
11+
12+
VectorChord 完全兼容 pgvector 的数据类型和查询语法,确保了无缝的迁移和集成体验。它已成功应用于生产环境,可靠地管理了超过 30 亿个向量,是构建新一代 AI 应用和进行海量相似性搜索的理想基础组件。
13+
14+
== 安装
15+
根据开发环境,用户可从 https://docs.vectorchord.ai/vectorchord/getting-started/installation.html[VectorChord安装] 页面选择适合自己的方式进行VectorChord安装。
16+
17+
=== 源码安装
18+
除VectorChord社区提供的安装方式以外,IvorySQL社区也提供了源码安装方式,源码安装环境为 Ubuntu 24.04(x86_64)。
19+
在编译前需要确保clang和rust已经安装:
20+
clang版本要求 >= 16, 包含libclang;
21+
rust版本要求 >= 1.89, 包含cargo
22+
23+
[TIP]
24+
环境中已经安装了IvorySQL1.17及以上版本,安装路径为/usr/local/ivorysql/ivorysql-1
25+
26+
==== 安装 Clang
27+
28+
** 安装clang 16 编译器和 libclang 开发库
29+
```
30+
sudo apt update
31+
sudo apt install clang-16 libclang-16-dev
32+
```
33+
34+
** 验证安装
35+
```
36+
$ clang-16 --version
37+
Ubuntu clang version 16.0.6 (23ubuntu4)
38+
Target: x86_64-pc-linux-gnu
39+
Thread model: posix
40+
InstalledDir: /usr/bin
41+
```
42+
43+
** 设置默认 Clang (可选):​​ 类似 GCC,你可以设置默认版本:
44+
```
45+
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-16 100
46+
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-16 100
47+
```
48+
49+
** 验证默认版本
50+
```
51+
clang --version # 应该显示 clang-16
52+
clang++ --version
53+
```
54+
55+
** 设置LIBCLANG_PATH路径:通常安装 libclang-16-dev后会自动设置,但最好确认或显式设置
56+
```
57+
# 查找 libclang.so 的位置 (通常是 /usr/lib/llvm-16/lib/libclang.so.1 或类似)
58+
find /usr -name 'libclang.so*' 2>/dev/null
59+
60+
# 设置环境变量
61+
export LIBCLANG_PATH=/usr/lib/llvm-16/lib # 通常设置包含该文件的目录即可
62+
63+
# 为了永久生效,可以将上面这行 export 命令添加到你的 shell 配置文件 (~/.bashrc 或 ~/.zshrc) 中
64+
```
65+
66+
==== 安装 Rust(>=1.89) 和 Cargo
67+
按照 Vectorchord 和 Rust 官方的推荐,使用 rustup安装是最佳实践。
68+
安装 rustup:
69+
```
70+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
71+
# 运行脚本后,它会提示你。按 1选择默认安装
72+
```
73+
74+
激活环境:​​ 安装完成后,你需要让新的 PATH 设置生效
75+
```
76+
source "$HOME/.cargo/env" # 当前终端会话生效
77+
```
78+
79+
验证安装:
80+
```
81+
rustc --version # 应该输出类似 rustc 1.xx.x (稳定版版本号 >= 1.89)
82+
cargo --version # 应该输出 cargo 的版本号
83+
```
84+
85+
=== 安装 VectorChord
86+
87+
```
88+
# 拉取vectorchord源码
89+
curl -fsSL https://github.com/tensorchord/VectorChord/archive/refs/tags/0.5.1.tar.gz | tar -xz
90+
cd VectorChord-0.5.1
91+
# 将pg_config的路径设置到PATH环境变量里,eg:
92+
export PATH=/usr/local/ivorysql/ivorysql-1/bin/:$PATH
93+
make build
94+
make install
95+
```
96+
97+
== 配置ivorysql.conf 文件
98+
```
99+
# 共享预加载扩展
100+
shared_preload_libraries = 'vchord'
101+
```
102+
103+
== 重启服务
104+
105+
```
106+
pg_ctl restart -D ./data -l logfile
107+
```
108+
109+
== 创建Extension并确认VectorChord版本
110+
111+
psql 连接到数据库,执行如下命令:
112+
```
113+
ivorysql=# CREATE EXTENSION IF NOT EXISTS vchord CASCADE;
114+
CREATE EXTENSION
115+
116+
ivorysql=# SELECT * FROM pg_available_extensions WHERE name = 'vchord';
117+
name | default_version | installed_version | comment
118+
---------+-----------------+-------------------+--------------------------------------------------------------------------------------------
119+
vchord | 0.5.1 | 0.5.1 | vchord: Vector database plugin for Postgres, written in Rust, specifically designed for LLM
120+
(1 row)
121+
```
122+
123+
== 使用
124+
关于VectorChord的使用,请参阅 https://docs.vectorchord.ai/vectorchord/getting-started/overview.html[VectorChord官方文档]

0 commit comments

Comments
 (0)