PostgreSQLをWebAssemblyとしてビルドした「PGlite」がPostgreSQL 17対応にバージョンアップ
PostgreSQLのソースコードをWebAssemblyバイナリとしてビルドしたことで、Node.jsなどのJavaScriptランタイムやWebブラウザ上でほぼフル機能のPostgreSQLを実行可能にした「PGlite」がバージョンアップして「PGlite 0.3」になり、PostgreSQL 17.4対応となりました。これまではPostgreSQL 16に対応していました。
PGliteはPostgreSQLのコードをWebAssembly化
PGliteはPostgreSQLのCのソースコードをEmscriptenコンパイラを用いてWebAssemblyバイナリとして出力、JavaScript/TypeScriptからライブラリとして呼び出せるようにしたものです。
Node.js、Deno、BunなどのJavaScriptランタイムやWebブラウザで実行可能で、ファイルサイズはGzip圧縮で3MB以下となっています。
インメモリ上にその場限りとなるデータベースを作成できるだけでなく、Node.jsとBunではファイルアクセスAPIを利用して、WebブラウザではIndexedDBを利用して永続的なデータベースを作成できます。
また、PostgreSQLでベクトルデータの扱いを可能にする拡張機能である「pgvector」を始めとする多数のPostgreSQLの拡張機能にも対応するとのことです。
ただしEmscriptenでコンパイルされたプログラムは新しいプロセスをフォークできないため、PGliteはPostgreSQLのシングルユーザーモードを利用していると説明されています。
PostgreSQL 17ではスループット性能の改善など
PGliteは、これまでのバージョン0.2ではPostgreSQL 16.xがベースとなっていましたが、最新バージョンとなるPGlite 0.3ではPostgreSQL 17.4がベースとなりました。
PostgreSQL 17では、先行書き込みログ(WAL)処理の改善が行われ、高並行処理のワークロードにおいて書き込みスループット性能が最大で2倍向上、vaccumプロセスの処理速度が向上し最大でこれまでの20分の1のメモリ使用量で済むようになりました。
また、バックアップユーティリティ「pg_basebackup」が増分バックアップをサポート。本体に含まれるバックアップツールで、より効率的なバックアップが可能になるなどの機能向上が実現されています。
参考:PostgreSQL 17正式リリース。WALの改善で書き込み性能が最大2倍に、本体付属のバックアップツールで増分バックアップ対応など新機能