Greenplum での拡張プラグインの追加と管理

概要

Greenplum Database(GPDB)は PostgreSQL をベースとしており、多くの PostgreSQL 拡張機能との互換性があります。これにより、pg_trgm(類似度検索)、zhparser(中国語全文検索)、fuzzystrmatch(文字列距離計算)、roaringbitmap(ビットマップ演算)などの有用な拡張を活用できます。本記事では、Greenplum クラスタに拡張プラグインを導入・管理する手順を解説します。

拡張の確認

既にインストール済みの拡張一覧

現在データベースにロードされている拡張を確認するには、pg_extension システムビューを参照します:

SELECT extname, extversion FROM pg_extension;

デフォルトでは plpgsqlplpythonu などが有効になっている場合があります。

利用可能な拡張の一覧

インストール可能な拡張のリストは以下のクエリで取得できます:

SELECT name, default_version, comment FROM pg_available_extensions;

このリストには Greenplum 固有の拡張(例: gp_sparse_vector, diskquota)も含まれます。

拡張の詳細情報

各拡張のバージョンや依存関係、スーパーユーザー要否などを確認するには:

SELECT name, version, installed, requires FROM pg_available_extension_versions;

拡張のインストール手順

組み込み拡張の有効化

pg_available_extensions に存在する拡張は、単に CREATE EXTENSION コマンドで有効化できます:

CREATE EXTENSION fuzzystrmatch;

外部拡張のインストール

組み込みリストにない拡張(例: roaringbitmap)を追加する場合は、ソースからコンパイルしてインストールする必要があります。

1. 拡張ソースの取得

Greenplum 公式リポジトリから該当バージョンのソースコードをダウンロードします:

wget https://github.com/greenplum-db/gpdb/archive/refs/tags/6.18.2.tar.gz
tar -zxvf 6.18.2.tar.gz

2. 拡張ディレクトリへのコピー

目的の拡張(例: pg_trgm)を Greenplum の拡張ディレクトリにコピーします:

cp -r gpdb-6.18.2/contrib/pg_trgm $GPHOME/share/postgresql/contrib/

3. コンパイルとインストール

gpadmin ユーザーで以下のコマンドを実行します:

cd $GPHOME/share/postgresql/contrib/pg_trgm
make USE_PGXS=1 && make USE_PGXS=1 install

USE_PGXS=1 を指定しないと、Makefile.global が見つからないというエラーが発生します。

4. インストールの検証

正常にインストールされると、$GPHOME/share/postgresql/extension/ 配下に .control および .sql ファイルが生成されます。また、pg_available_extensions にも表示されるようになります。

5. セグメントノードへの展開

クラスタ構成の場合、すべてのセグメントノードにも同様の拡張ファイルを配置・コンパイルする必要があります。以下のように gpscpgpssh を使用して一括処理できます:

# マスターノードで拡張を圧縮
cd $GPHOME/share/postgresql/contrib
tar -czvf pg_trgm.tar.gz pg_trgm

# セグメントノードに転送
gpscp -f seghosts pg_trgm.tar.gz=:$GPHOME/share/postgresql/contrib/

# セグメントノードで展開・インストール
gpssh -f seghosts <<'EOF'
cd $GPHOME/share/postgresql/contrib
tar -zxvf pg_trgm.tar.gz
cd pg_trgm
make USE_PGXS=1 && make USE_PGXS=1 install
EOF

6. データベースへのロード

全ノードへのインストール完了後、データベース内で拡張を有効化します:

CREATE EXTENSION pg_trgm;

拡張の使用例

pg_trgm を有効化した後は、以下のように類似度関数を使用できます:

SELECT show_trgm('Greenplum is awesome!');
-- 結果: {" gr","ree","een","enp","npl","plu","lum","um ",...}

拡張の削除と更新

削除

DROP EXTENSION pg_trgm;

更新またはスキーマ変更

ALTER EXTENSION pg_trgm UPDATE TO '1.2';
ALTER EXTENSION pg_trgm SET SCHEMA utils;

よくある問題と対処法

Makefile.global が見つからない

原因: USE_PGXS=1 を指定せずに make を実行。
対処: 常に make USE_PGXS=1 を使用。

gcc がインストールされていない

対処:

sudo yum install gcc gcc-c++ make

gp コマンドが認識されない

原因: 環境変数 GPHOME が正しく設定されていない可能性あり。
確認方法:

echo $GPHOME
env | grep GPHOME

修正: ~/.bash_profile に正しいパスを設定し、再読み込み:

export GPHOME=/opt/gpdb
source ~/.bash_profile

参考リソース

タグ: Greenplum PostgreSQL Extension pg_trgm roaringbitmap

5月31日 00:07 投稿