postgres-wasm,在帶有 WebAssembly 的瀏覽器中運行的 PostgreSQL 服務器

postgres-wasm

Postgres-wasm 是一個將 PostgreSQL 移植到 WebAssembly 的項目

最近,postgres-wasm 宣布免費開放。這是一個運行在瀏覽器中的 PostgreSQL 伺服器,提供全套功能,包括瀏覽器狀態持久化、從 pg_dump 復原以及從遠端資料庫進行邏輯複製。

Postgres-wasm 是一個開源項目,它將 PostgreSQL 移植到了 WebAssembly 平台。該解決方案是由雲端資料庫供應商 Supabase 和專門從事資料庫程式設計的公司 Snaplet 合作開發的。

“今天我們將與 Snaplet 的朋友一起推出 postgres-wasm,”Supabase 工程師 Mark Burggraf 說

對於不熟悉 Postgres 的用戶來說是最先進的開源資料庫管理系統之一。它功能豐富,擁有強大的資料類型、索引功能以及一系列內建函數,這些函數可以簡化資料棧,讓開發人員專注於建立應用程式。 Postgres 不僅僅是一個關聯式資料庫,它已成為您值得信賴的數據平台。

關於 Postgres-wasm

Supabase並非第一個在瀏覽器中執行Postgres的團隊;這個頭銜屬於Crunchy Data團隊,他們一個月前在HN上分享了他們的版本。為了開發Crunchy Data專有版本的開源版本,Supabase與Snaplet合作開發了Postgres-wasm。

由於 Postgres-wasm,PostgreSQL 可以直接在Web 瀏覽器中運作。這是透過 Linux 發行版 Buildroot 實現的,該發行版以其極小的體積而著稱,並且內建的 v86 模擬器能夠模擬 x86 終端的操作。

另一方面,WebAssembly旨在允許在網頁上建立高效能應用程序,但它不依賴Web,也不提供Web特有的功能,因此也可以在其他環境中使用。它是一個開放標準,旨在支援任何作業系統上的任何語言,實際上,所有最受歡迎的語言都已經獲得了一定程度的支援。 Supabase使用v86在瀏覽器中執行其虛擬機器。

在瀏覽器中執行 Postgres 固然不錯,但使用 PgAdmin 連線則更勝一籌。然而,瀏覽器會阻止對虛擬機器 TCP 網路的存取。為了繞過這項限制,Supabase 透過 WebSocket 路由流量。他們使用了一個 WebSockProxy 分支,該分支允許模擬器透過將 WebSocket 連接埠發送的資料轉換為 TCP 封包來與互聯網通訊。 WebSockProxy 分支還增加了 Postgres 伺服器進行隧道傳輸的功能。

項目的主要特點包括:

  • Postgres 14.5、psql、pg_dump 等。
  • 將狀態保存到/從文件中恢復。
  • 在瀏覽器存儲(IndexedDB)中保存和恢復 Postgres 狀態。
  • 從狀態文件或完全模擬器重置快速啟動。
  • 內存配置選項從 128 MB 到 1024 MB。
  • 設置終端的字體大小。
  • 將文件上傳到模擬器(包括 CSV 和數據庫轉儲)。
  • 下載模擬器文件。
  • 從模擬器到 Internet 的傳出網絡連接。
  • 入站網絡隧道到模擬器內的 postgres 端口 5432。

通常,整個項目包含在一個大小為 12 MB 的快照中,用於運行 PostgreSQL 服務器。

正如 Postgres-wasm 開發人員承認的那樣,運行時性能並不是很高,但其本身已經成功實現了使 PostgreSQL 14.5 可以在具有 psql 命令行界面的完整瀏覽器中使用的目標。

最後,如果您有興趣了解更多相關信息,可以點擊以下連結查看詳情


在 Google 中將其新增為首選來源