mcpField
P
pglite

pglite

github.com/oakossデータ・データベース20147 回インストール10 週間前に更新
リポジトリ

pglite について

pglite は、ブラウザー、Node.js、Bun で動作する PostgreSQL 17.4 の WASM 版、PGlite のスキルです。組み込み SQL エンジンを必要とする開発者向けに、ストレージ、クエリ、トランザクション、リアクティブクエリを扱います。

主な機能

  1. 01ブラウザー、Node.js、Bun で動作
  2. 02インメモリとブラウザ永続化ストレージ
  3. 03パラメーター化クエリと ACID トランザクション
  4. 04拡張、COPY、LISTEN/NOTIFY
  5. 05リアクティブおよび増分クエリ

活用シーン

  1. 01オフライン対応 Web アプリの構築
  2. 02ブラウザーでの分析クエリ実行
  3. 03テストやプロトタイプへの PostgreSQL 組み込み

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oakoss/agent-skills --skill pglite

インストール後、Claude Code で/pgliteを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
electric-sync.md
extensions.md
live-queries.md
multi-tab-worker.md
queries-and-transactions.md
react-integration.md
setup.md

詳細

PGlite

概要

PGlite は、外部依存関係なしでブラウザー、Node.js、Bun 上で直接動作する、軽量な PostgreSQL 17.4 の WASM ビルドです。3MB 未満(gzip 圧縮時)で、拡張機能、トランザクション、COPY のサポート、listen/notify を備えた完全な Postgres クエリエンジンを提供します。

使用する場合: 実際の SQL エンジンを必要とするローカルファーストアプリ、ブラウザーベースの分析、オフライン対応の PWA、テスト用の組み込み Postgres、サーバーなしでのプロトタイピング。

使用しない場合: 高い同時実行性が求められるサーバーワークロード(ネイティブ Postgres を使用してください)、完全な Postgres レプリケーションを必要とするアプリ、Safari の OPFS ストレージ(未サポート)、リーダー選出なしで書き込みが多いマルチタブのシナリオ。

クイックリファレンス

パターンAPI主なポイント
インスタンスを作成PGlite.create(dataDir?, options?)内部で準備完了を待機します
インメモリ DBPGlite.create()デフォルト、一時的なストレージ
IndexedDB ストレージPGlite.create('idb://dbname')ブラウザー内で永続化されます
OPFS ストレージPGlite.create('opfs-ahp://dbname')Worker 専用、Safari では使用不可
パラメーター化クエリdb.query<T>(sql, params)QueryResult<T> を返します
タグ付きテンプレートdb.sql\SELECT ...``自動的にパラメーター化されます
複数ステートメントの実行db.exec(sqlString)パラメーターなし、void を返します
トランザクションdb.transaction(async (tx) => {})完全な ACID、tx.query を使用してください
拡張機能を読み込むcreate の extensions: { vector }インスタンスの構築時に読み込まれます
ライブクエリdb.live.query(sql, params, cb)データ変更時に再実行します
インクリメンタルクエリdb.live.incrementalQuery(sql, params, key, cb)大きな結果セットの差分を取得します
ライブ変更db.live.changes(sql, params, key, cb)生の insert/update/delete 操作
React フックuseLiveQuery(sql, params){ rows } をリアクティブに返します
マルチタブ WorkerPGliteWorker + リーダー選出単一の書き込み元、複数の読み取り元
Electric 同期syncShapeToTable(db, shape, table)一方向の読み取り専用同期
データをダンプdb.dumpDataDir('gzip')File blob を返します
データを読み込むPGlite.create({ loadDataDir: blob })ダンプから復元します
Listen/notifydb.listen(channel, cb)Postgres LISTEN/NOTIFY
耐久性を緩和relaxedDurability: trueブラウザーでの書き込み性能が向上します

よくある間違い

間違い正しいパターン
new PGlite() を使用し、準備完了を待たない内部で待機する PGlite.create() を使用します
メインスレッドで OPFS を使用するOPFS-AHP には Web Worker コンテキストが必要です
Safari で OPFS を使用するSafari には必要な OPFS API がないため、idb:// を使用します
トランザクションコールバックの外でクエリを実行するトランザクションコールバックから tx を渡し、tx.query() を使用します
create オプションに拡張機能を指定し忘れる拡張機能は PGlite.create({ extensions }) で宣言する必要があります
リーダー選出をせずに複数のタブから書き込む複数タブにはリーダー選出を備えた PGliteWorker を使用します
Electric の同期が双方向だと想定するElectric の同期は読み取り専用で、サーバーからの一方向です
大規模なデータセットに live.query() を使用する大量の結果セットには live.incrementalQuery() を使用します
増分クエリに key を指定しない増分クエリと変更クエリには一意なキー列が必要です
バンドラーのサポートなしで拡張機能をインポートする拡張機能は WASM です。バンドラーが .wasm アセットを処理できることを確認してください

委任

electricsql スキルが利用可能な場合は、Electric の同期パターン、Shape の設定、リアルタイムレプリケーションを委任してください。 利用できない場合は、次を推奨してください:pnpm dlx skills add oakoss/agent-skills -s electricsql -a claude-code -y

drizzle-orm スキルが利用可能な場合は、Drizzle と PGlite のドライバー設定およびスキーマ管理を委任してください。 利用できない場合は、次を推奨してください:pnpm dlx skills add oakoss/agent-skills -s drizzle-orm -a claude-code -y

local-first スキルが利用可能な場合は、ローカルファーストアーキテクチャの判断と同期エンジンの選定を委任してください。 利用できない場合は、次を推奨してください:pnpm dlx skills add oakoss/agent-skills -s local-first -a claude-code -y

リファレンス

コメント