PostgreSQLをWebブラウザ上で動かす「Postgre-WASM」、オープンソースで公開。Webブラウザ上のx86仮想マシンで実行、レプリケーションも可能

WebAssemblyを用いてWebブラウザにx86の仮想マシンを構成することで、PostgreSQLをWebブラウザ上で実行可能にした「Postgre-WASM」がオープンソースで公開されました。

WebAssemblyを用いてWebブラウザに対応させたPostgreSQLとしては、2カ月前の8月に、Webブラウザ上でPostgreSQLを動かしながら、基本の操作から性能分析などさまざまな機能を学べる「Postgres playground」が公開されています。

参考:WebAssembly化したPostgreSQLをWebブラウザ上で実際に動かして学ぶ「Postgres playground」をCrunchy Dataが公開

しかしこのPostgres playgroundはオープンソースとして公開されていませんでした。

これに触発されて、オープンソース化したWebAssembly版のPostgreSQLの開発に取り組んだSupabaseとSnapletが今回のPostgres-WASMを公開しました。

Webブラウザで起動、SQL文など実行可能

Postgres-WASMはこのリンク「wasm.supabase.com」をクリックすることで、すぐに試すことができます。このとき30MB程度のファイルがダウンロードされます。

fig

プロンプトが表示されれば、すでにPostgreSQLがWebブラウザ上で起動しているので、例えば次のようなSQL文を入力して実行することができます。

create table people (id serial primary key, name text);
insert into people (name) values ('Adam'), ('Betty'), ('Charles'), 
('Doris'), ('Eddy');
select * from people;

Postgres-WASMのベースになっているのはPostgres 14.5。ファイルやIndexDBに状態を保存、取得可能で、メモリは128MBから1024MBの間で構成可能など。

また他のPostgreSQLとのレプリケーションも可能になっているとのこと。

WebAssemblyでx86仮想マシンを動かし、その上でPostgreSQLを実行

Postgres-WASMはPostgreSQLをWebAssemblyしたのではなく、WebAssebmlyでx86エミュレータを実装した「v86」を利用し、その上でストリップダウンしたLinuxとPostgreSQLを備えた仮想マシンをロードして実行する手法を用いたと説明されています。

そのため、Postgres-WASMはチュートリアルやデモだけでなく、PostgreSQLを用いた開発環境、オフラインでのデータ分析など、さまざまな用途が想定できそうです。