20 ポイント 投稿者 GN⁺ 2025-12-05 | 2件のコメント | WhatsAppで共有
  • PGliteは、WASM 環境で完全な Postgres データベースをローカル実行できる軽量ソリューション
  • 圧縮時のサイズは 3MB 未満で、ブラウザやクライアント環境でも手軽に動作可能
  • データ読み込み、同期、リアルタイムクエリ機能を内蔵し、反応性の高いデータ処理が可能
  • pgvectorを含む動的拡張ロード機能をサポートし、多様な拡張モジュールを活用できる
  • Supabase ベースの database.buildを通じて、AI により Postgres データベースを生成・デプロイでき、Web ベースのデータベース開発の柔軟性を高める

概要

  • PGlite は、WASM(WebAssembly) 環境で動作する組み込み型 Postgres データベース
    • ローカル環境で完全な Postgres インスタンスを実行できる
    • 反応性の高いデータ処理とリアルタイム同期をサポート

主な特徴

  • 軽量性: Gzip 圧縮時で 3MB 未満の完全な Postgres ビルドを提供
    • ブラウザや軽量クライアント環境でも実行可能
  • 拡張性: 動的拡張ロードメカニズムにより、さまざまな Postgres 拡張機能を追加可能
    • pgvector拡張を標準サポート
  • 反応性: データ読み込み、同期、リアルタイムクエリのための内蔵機能を含む
    • リアルタイムなデータ更新や反応型アプリケーションの構築に適している

体験と活用

  • database.build プラットフォームで、PGlite ベースの Postgres データベースを作成・公開可能
    • Supabase が構築した AI ベースのツールにより、ユーザー自身でデータベースを作成できる
  • ブラウザ内で PGlite Postgres インスタンス を直接実行可能
    • pgvector を含む
    • 追加の拡張は playground(REPL) 環境で試せる

意義

  • PGlite は Postgres の機能をブラウザレベルまで拡張し、クライアント中心のデータベース実行を可能にする
  • 軽量性・拡張性・反応性を組み合わせ、次世代 Web アプリケーション開発に適したデータベースソリューションとして注目されている

2件のコメント

 
qqq7300 2025-12-10

この記事を見て、自分のプロジェクトに PGlite を試験的に導入してみました。確かに簡単なテスト用途では本当に速くて良いですね。今後にも期待しています。

 
GN⁺ 2025-12-05
Hacker Newsのコメント
  • 私は PGlite チームで働いている。再び HN で紹介されてうれしい
    最近、週間ダウンロード数が300万を超え、まもなく400万に達する見込み — npm パッケージページ を参照
    もともとは Web アプリに埋め込むために作ったが、今では 開発ツールCLI 環境 での利用が爆発的に増えている。Google Firebase と Prisma も、それぞれの CLI に PGlite を組み込んでサーバー製品をエミュレートしている

    • 興味深い。ところで、なぜ WASM 専用 として作ったのか気になる。普通はまずライブラリ化してから WASM に移す流れのように思えるので、何か見落としているのかもしれない
    • 素晴らしい仕事に感謝。もし http-vfs の read-only シナリオをサポートする予定があるのか気になる
      DuckDB や sql.js-httpvfs のように、リモート URL に range request を送ってブロックを読む方式のこと
      私たちの研究室でも こういうプロジェクト を進めているが、http-vfs のエコシステムはまだ プロトタイプ段階 で、最適化されたライブラリがほとんどない
      PostgreSQL のディスクアクセスパターンが SQLite より http-vfs に向いているのかも気になる
    • Flutter 向けライブラリ の予定があるか聞きたい
    • PGlite がメモリモードで通常の Postgres より速いのか気になる
      もしそうなら、ネットワークプロトコルをサポートして JS 以外の言語の CI 環境でも使えると本当にすごいと思う
    • 本当にすごそう。具体的にどんな ユースケース で使うとよいのか知りたい
      SQLite や DuckDB の代替を目指しているのか気になる
  • 私は JavaScript 以外のランタイム で PGlite を使いたい
    たとえば Go の CLI に WASM ランタイムとして埋め込み、SQLite の代わりに使うような形
    Issue #89 を見ると Rust 向けのサードパーティ製バインディングがあるようだが、公式に他言語バインディングをサポートする予定があるのか気になる

    • その通り、PGlite + Go の組み合わせは本当に良さそう
  • PGlite は本当に素晴らしい。私はブラウザ内 PostgreSQL サーバーとして開発用途で使っている
    サーバーが PG プロトコルを実装し、クライアントが接続するとクエリをブラウザに渡して、その内部で PGlite が実行される
    結果として ブラウザ内で完全な PG サーバー が動く — dbfor.dev

  • このプロジェクトはとても興味深い。Postgres の欠点の1つは常にサーバーをセットアップしなければならないことだが、これはその問題を解決している
    もし ネイティブライブラリ としてコンパイルする方法があるのか気になる。一部のコードは再利用できそうだ

    • 私は試験的に React Native 向けにコンパイルしてみた。iOS と Android で Postgres が動く — PR リンク
    • ネイティブライブラリは現在 ロードマップに含まれている
    • 本当に同感。SQL や動作を変えずに 組み込みからネットワークモードへ切り替え できるなら、とても素晴らしいと思う
  • PGlite と SQLite の 違い が気になる
    私は主に組み込み環境とブラウザクライアント側で SQLite を使ってきた
    SQLite はシンプルさが強みだが、PGlite はさまざまな拡張機能が興味深い。2つの DB の本質的な違いが何か知りたい

    • 私の考えでは主な用途は テスト/CI 環境
      SQLite で高速にテストを回せても、実際のインフラが PostgreSQL ならその価値は限定的になる
  • 単体テストでは今でも TestContainers で Docker ベースの Postgres を動かしている
    ただ、こうした代替手段のおかげで py-pglite のような Python 向けテストツールも可能になった
    それでも私は、pgserver のように 本物の Postgres を pip パッケージとして軽量に動かせる 方向のほうが信頼できると感じる
    あくまで単体テストの観点での意見だ

    • 2つのアプローチの トレードオフ がどんなものか気になる。こういう実体験はいつも参考になる
  • 私たちのチームは新しい社内サービスを作る際、テスト環境に PGlite を導入した
    テスト時には PGlite を、本番実行時には Postgres インスタンスを使うよう ラッパーを構成 したが、とても成功している
    特に .clone() 機能で DB のチェックポイントを作り、各テストごとに初期状態へ戻せる
    50 個のテストスイートを並列実行するのもとても簡単になった

  • テスト用に使っているが、インメモリ SQLite とフル Postgres インスタンスの中間 のような感触だ
    ずっとこういうものを探していたので、テスト速度が上がって満足している。今のところ制約もほとんどない

  • Doltgres という 単一実行ファイル形式の Postgres もある
    Deno のように単一の .exe ファイルをダウンロードして実行すれば、そのまま Postgres が動く — Doltgres インストール文書