使用 PGRX 框架开发数据库扩展
本文档介绍如何使用 Rust 和 PGRX 框架开发数据库扩展。PGRX 是一个高效、安全的 Rust 框架,适用于开发 Apache Cloudberry 的数据库扩展。
PGRX 的功能说明,参考 PGRX 核心功能。PGRX 的注意事项,参考 PGRX 注意事项。
开发环境要求
- 确保您的操作系统为 Debian/Ubuntu 或 RHEL/CentOS 系统。
- 确保您的 Apache Cloudberry 集群是通过源码编译的,非通过 RPM 包安装的。
基础软件环境
-
确保已安装以下软件:
- Rust 工具链(
rustc
、cargo
和rustfmt
),建议通过 https://rustup.rs 安装 - Git
- libclang 11 或更高版本(用于 bindgen)
- GCC 7 或更高版本
- Rust 工具链(
PostgreSQL 依赖
确保已根据操作系统安装以下 PostgreSQL 依赖:
对于 Debian/Ubuntu 系统:
sudo apt-get install build-essential libreadline-dev zlib1g-dev flex bison \
libxml2-dev libxslt-dev libssl-dev libxml2-utils xsltproc ccache pkg-config
对于 RHEL/CentOS 系统:
sudo yum install -y bison-devel readline-devel zlib-devel openssl-devel wget ccache
sudo yum groupinstall -y 'Development Tools'
完成上述依赖安装后,即可开始开发扩展。
快速上手
本节介绍如何使用 PGRX 快速开发数据库扩展,主要包括:
- 配置 PGRX 环境与安装
- 创建扩展
- 安装和使用扩展
配置 PGRX 环境与安装
注意
PGRX 由 PgCentral Foundation, Inc. 维护,但此处我们使用的版本是一个 PGRX 衍生版本,与 Cloudberry 保持了良好的兼容性。该版本是由社区成员贡献,而非 Cloudberry 官方项目。
-
为 Apache Cloudberry 的
pg_config
路径设置环境变量,其中<pg_config_path>
是 Apache Cloudberry 集群中的pg_config
路径,例如/usr/local/cloudberry-db/bin/pg_config
:export PGRX_PG_CONFIG_PATH=<pg_config_path>
-
编译 PGRX 框架:
-
克隆适配 Apache Cloudberry 的
pgrx
代码仓库:git clone https://github.com/cloudberry-contrib/pgrx
cd pgrx -
编译框架时,启用
pg14
和cbdb
:cargo build --features "pg14, cbdb"
-
-
安装已适配 Apache Cloudberry 的
cargo-pgrx
工具:cargo install --path cargo-pgrx/
-
使用数据库对应的内核版本初始化环境:
cargo pgrx init --pg14=`which pg_config`