**未公開。**データベースはまだ利用できません。このページは、構築中の仕組みを公開前に説明したもので、公開までに変わることがあります。
バージョン
データベースは、そのメジャーバージョン用のプラットフォームのイメージで、公式の Debian ビルドの PostgreSQL 16、17、18(デフォルト)を動かします。データベースのメジャーバージョンは変わりません。次のバージョンに移るには、別のデータベースを作成します。
拡張機能
オーナーはスーパーユーザーではありませんが、以下の拡張機能を CREATE EXTENSION で作成できます。PostgreSQL がスーパーユーザーにしか作成を許さない拡張機能は、許可リスト(pgextwlist)がオーナーのために作成します。
| 拡張機能 | 説明 |
|---|---|
vector, vectorscale |
pgvector と、Tiger Data の pgvectorscale:ベクトルとそのインデックス |
postgis, postgis_raster, postgis_topology, postgis_tiger_geocoder, address_standardizer |
PostGIS |
timescaledb |
TimescaleDB(Apache-2.0 の部分のみ) |
pg_cron |
データベース内でのスケジュール実行のジョブ。オーナーはスキーマ cron を使える |
pg_partman |
時間の経過に合わせたパーティションの作成と削除 |
pgaudit |
ステートメントの監査ログ |
pg_textsearch |
BM25 でランク付けする全文検索:17 と 18 のみ |
pg_hint_plan, hypopg, pg_repack |
プランナーへのヒント、仮想インデックス、長いロックなしでのテーブルとインデックスの再編成 |
pg_stat_statements |
各ステートメントのコスト |
| PostgreSQL 自身のモジュール | pgcrypto、uuid-ossp、citext、hstore、ltree、pg_trgm、btree_gin、btree_gist、cube、earthdistance、fuzzystrmatch、unaccent、postgres_fdw、dblink、tablefunc、amcheck、pg_buffercache、pg_prewarm、pgstattuple、そのほかの contrib モジュールの大半 |
pg_stat_statements、pg_cron、pgaudit、timescaledb は PostgreSQL の起動時に読み込まれ、17 と 18 では pg_textsearch も読み込まれます。サーバーのファイルに触れる file_fdw と adminpack、pg_surgery、そして信頼されない手続き言語はすべて、意図的にリストから外しています。
ロール
- オーナーの
<database_name>_owner(作成時にデータベースに別の名前を付けなければglacdb_owner)はデータベースを所有し、ロールグループglac_superuserに属してその属性を持ちます。データベースとロールの作成、行レベルセキュリティのバイパス、レプリケーション、全データの読み書き、監視、ほかのセッションへのシグナル送信、サブスクライブ(16 以降)、メンテナンス(17 以降)ができ、これらを付与することもできます。スーパーユーザーではありません。 - スーパーユーザーの
postgresは、マシンのユーザーpostgresとして、マシン自身のソケットからしかログインできません。ネットワーク経由でログインすることはなく、誰かが知っているパスワードもありません。 - それ以外のログインはすべて、SCRAM によるパスワードで行います。オーナーには、プラットフォームが SCRAM ベリファイアとして設定するまでパスワードがありません。パスワードそのものがマシンに届くことはありません。
新しいデータベースの始まり方
データベースのクラスターは、データベースの作成時に作られるわけではありません。イメージには、ビルド時に作られた(データチェックサム付きの initdb)クラスターが入っており、その中にはロールグループ、オーナー、データベースだけがあり、パスワードもデータもありません。最初の起動時に、イメージはそれをデータベースの空のドライブにコピーし、データベースとオーナーに作成時に指定された名前を付けます。それ以降、データベースが書き込むものはすべて専用のドライブ上にあり、プロジェクトの暗号鍵で暗号化されます。同じイメージから作られたデータベースは、1 つのクラスターからコピーしたクラスターと同じく、PostgreSQL のシステム識別子(pg_control)を共有します。
圧縮
- 大きな値(TOAST)は、PostgreSQL 自身のデフォルトである
pglzで圧縮されます(default_toast_compression)。lz4も、それを求める列(ALTER TABLE … ALTER COLUMN … SET COMPRESSION lz4)、データベース、セッション(SET default_toast_compression = lz4)で使えます。高速ですが、値が大きくなることがあります。 - 先行書き込みログのフルページイメージは
zstdで圧縮されます(wal_compression)。
プラットフォームが維持する設定
プラットフォームは、起動のたびに、postgresql.conf の後、ALTER SYSTEM で設定したもの(これは保持します)の前に、次の設定を書き込みます。
max_connectionsはインスタンスのメモリに応じて決まります。1 GiB なら 104、2 GiB なら 209、4 GiB なら 419(最小 25)です。shared_buffersはメモリの 8 分の 1(最小 128 MB)です。wal_level = replica、SCRAM によるpassword_encryption、そして上記の圧縮。- PostgreSQL のログはデータベースのアプリのログに送られ、
GET /v1/apps/{app}/logsで読めます(ログ)。
データディレクトリはデータベースのドライブ上の /var/lib/postgresql/data にあり、インスタンスの置き換えや削除の前に、PostgreSQL は高速シャットダウンで停止されます(開いているものはロールバックされ、チェックポイントが書き込まれます)。