【時間がない人向け】記事の要約
- Supabase社がLive Share機能を発表
- ブラウザ上のPGliteにクライアント接続可能
- Postgres互換のWebAssembly版DBを実現
Supabase社が発表したLive Share機能の詳細
PostgreSQLをベースにしたBaaS(Backend as a Service)の「Supabase」を開発・提供するSupabase社は、2024年10月10日にdatabase.build(旧postgres.new)の新機能「Live Share」を発表。Webブラウザ上で実行中のWebAssembly版PostgreSQL(PGlite)をサーバーとして、外部のPostgreSQLクライアントから接続することが可能になった。[1]
Live Share機能を利用するにはdatabase.buildでデータベースを作成した後、サイドバーメニューからLive Shareを選択すると、ユニークなPostgres接続文字列が表示され任意のPostgreSQLクライアントから接続できる。この機能によってpsqlやpg_dump、ORM、データベースIDEなど、様々なツールでブラウザ内のPGliteインスタンスにアクセスできるようになった。
技術的にはWebSocketとTCPの間で、Postgresワイヤープロトコルメッセージをリレーするプロキシを開発することで実現している。ブラウザ側では永続的なWebSocket接続を確立し、クライアントからのメッセージを逆方向にPGliteインスタンスに送信する。サーバー側ではpg-gatewayを使用してTCP接続を処理し、適切なWebSocketトンネルにルーティングしている。
Live Share機能の主な特徴
接続方法 | 対応クライアント | 技術的実装 | |
---|---|---|---|
特徴 | ユニークな接続文字列 | PostgreSQLクライアント全般 | WebSocket-TCP プロキシ |
メリット | 簡単な外部接続 | 既存ツールの利用可能 | ブラウザ内DBへの直接アクセス |
用途例 | データエクスポート | ORM統合、IDE利用 | カスタム開発環境構築 |
PGliteについて
PGliteとは、WebAssembly(WASM)でビルドされたPostgreSQLのことを指しており、主な特徴として以下のような点が挙げられる。
- ブラウザ上で直接実行可能なPostgreSQL互換データベース
- 単一接続限定の軽量版PostgreSQL実装
- JavaScript/TypeScriptからネイティブに利用可能
PGliteはdatabase.buildプラットフォームの基盤技術として利用されている。ユーザーはブラウザ上で無制限のPostgreSQLデータベースを作成し、自然言語(LLM経由)を使用して操作することが可能になった。また、CSVファイルのドラッグ&ドロップによる自動テーブル生成や通常のSQLを使用したクエリ実行など、柔軟なデータベース操作環境を提供している。
trends編集部「K」の一言
Live Share機能の導入によって、ブラウザベースのデータベース開発環境がさらに実用的になった点は非常に素晴らしい。従来のクラウドデータベースサービスと比較して、セットアップの手軽さと既存ツールとの互換性を両立させた点は画期的だ。その一方でPGliteの単一接続制限により、同時に複数のクライアントから接続できないという課題も存在する。
今後の課題としては、より複雑なPostgreSQL機能の実装や複数接続のサポートが挙げられる。これらの問題に対しては、WebAssemblyのマルチスレッディング対応やPGliteの機能拡張が解決策となり得るだろう。また、セキュリティ面での強化も重要で、接続文字列の有効期限設定やアクセス制御機能の追加なども検討すべきかもしれない。
将来的にはLive Share機能を基盤として、よりシームレスなクラウド・ローカル開発環境の統合が期待される。例えば、ローカル開発環境とブラウザ内データベースの自動同期機能、GitHubなどのバージョン管理システムとの連携強化などが考えられる。
References
- ^ Supabase. 「Live Share: Connect to in-browser PGlite with any Postgres client」. https://supabase.com/blog/database-build-live-share, (参照 24-10-18).
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- Figma AIの使い方!プロトタイプや画像をAIで自動生成する方法を紹介
- 【Python】int型の最大値を確認する方法をサンプルコード付きで解説
- 【Python】桁数をprintで出力する方法などをサンプルコード付きで解説
- AI漫画のメリット・デメリットと実際の活用事例を解説
- 【最新VRヘッドセット】MeganeX superlight 8K登場!特徴やMeta Quest 3との違いを詳しく解説