- PGliteは、WASM 環境で完全な Postgres データベースをローカル実行できる軽量ソリューション
- 圧縮時のサイズは 3MB 未満で、ブラウザやクライアント環境でも手軽に動作可能
- データ読み込み、同期、リアルタイムクエリ機能を内蔵し、反応性の高いデータ処理が可能
- pgvectorを含む動的拡張ロード機能をサポートし、多様な拡張モジュールを活用できる
- Supabase ベースの database.buildを通じて、AI により Postgres データベースを生成・デプロイでき、Web ベースのデータベース開発の柔軟性を高める
概要
- PGlite は、WASM(WebAssembly) 環境で動作する組み込み型 Postgres データベース
- ローカル環境で完全な Postgres インスタンスを実行できる
- 反応性の高いデータ処理とリアルタイム同期をサポート
主な特徴
- 軽量性: Gzip 圧縮時で 3MB 未満の完全な Postgres ビルドを提供
- 拡張性: 動的拡張ロードメカニズムにより、さまざまな Postgres 拡張機能を追加可能
- 反応性: データ読み込み、同期、リアルタイムクエリのための内蔵機能を含む
- リアルタイムなデータ更新や反応型アプリケーションの構築に適している
体験と活用
- database.build プラットフォームで、PGlite ベースの Postgres データベースを作成・公開可能
- Supabase が構築した AI ベースのツールにより、ユーザー自身でデータベースを作成できる
- ブラウザ内で PGlite Postgres インスタンス を直接実行可能
- pgvector を含む
- 追加の拡張は playground(REPL) 環境で試せる
意義
- PGlite は Postgres の機能をブラウザレベルまで拡張し、クライアント中心のデータベース実行を可能にする
- 軽量性・拡張性・反応性を組み合わせ、次世代 Web アプリケーション開発に適したデータベースソリューションとして注目されている
2件のコメント
この記事を見て、自分のプロジェクトに PGlite を試験的に導入してみました。確かに簡単なテスト用途では本当に速くて良いですね。今後にも期待しています。
Hacker Newsのコメント
私は PGlite チームで働いている。再び HN で紹介されてうれしい
最近、週間ダウンロード数が300万を超え、まもなく400万に達する見込み — npm パッケージページ を参照
もともとは Web アプリに埋め込むために作ったが、今では 開発ツール と CLI 環境 での利用が爆発的に増えている。Google Firebase と Prisma も、それぞれの CLI に PGlite を組み込んでサーバー製品をエミュレートしている
DuckDB や sql.js-httpvfs のように、リモート URL に range request を送ってブロックを読む方式のこと
私たちの研究室でも こういうプロジェクト を進めているが、http-vfs のエコシステムはまだ プロトタイプ段階 で、最適化されたライブラリがほとんどない
PostgreSQL のディスクアクセスパターンが SQLite より http-vfs に向いているのかも気になる
もしそうなら、ネットワークプロトコルをサポートして JS 以外の言語の CI 環境でも使えると本当にすごいと思う
SQLite や DuckDB の代替を目指しているのか気になる
私は JavaScript 以外のランタイム で PGlite を使いたい
たとえば Go の CLI に WASM ランタイムとして埋め込み、SQLite の代わりに使うような形
Issue #89 を見ると Rust 向けのサードパーティ製バインディングがあるようだが、公式に他言語バインディングをサポートする予定があるのか気になる
PGlite は本当に素晴らしい。私はブラウザ内 PostgreSQL サーバーとして開発用途で使っている
サーバーが PG プロトコルを実装し、クライアントが接続するとクエリをブラウザに渡して、その内部で PGlite が実行される
結果として ブラウザ内で完全な PG サーバー が動く — dbfor.dev
このプロジェクトはとても興味深い。Postgres の欠点の1つは常にサーバーをセットアップしなければならないことだが、これはその問題を解決している
もし ネイティブライブラリ としてコンパイルする方法があるのか気になる。一部のコードは再利用できそうだ
PGlite と SQLite の 違い が気になる
私は主に組み込み環境とブラウザクライアント側で SQLite を使ってきた
SQLite はシンプルさが強みだが、PGlite はさまざまな拡張機能が興味深い。2つの DB の本質的な違いが何か知りたい
SQLite で高速にテストを回せても、実際のインフラが PostgreSQL ならその価値は限定的になる
単体テストでは今でも TestContainers で Docker ベースの Postgres を動かしている
ただ、こうした代替手段のおかげで py-pglite のような Python 向けテストツールも可能になった
それでも私は、pgserver のように 本物の Postgres を pip パッケージとして軽量に動かせる 方向のほうが信頼できると感じる
あくまで単体テストの観点での意見だ
私たちのチームは新しい社内サービスを作る際、テスト環境に PGlite を導入した
テスト時には PGlite を、本番実行時には Postgres インスタンスを使うよう ラッパーを構成 したが、とても成功している
特に
.clone()機能で DB のチェックポイントを作り、各テストごとに初期状態へ戻せる50 個のテストスイートを並列実行するのもとても簡単になった
テスト用に使っているが、インメモリ SQLite とフル Postgres インスタンスの中間 のような感触だ
ずっとこういうものを探していたので、テスト速度が上がって満足している。今のところ制約もほとんどない
Doltgres という 単一実行ファイル形式の Postgres もある
Deno のように単一の
.exeファイルをダウンロードして実行すれば、そのまま Postgres が動く — Doltgres インストール文書