最近通過一個公告得知 免費訪問 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 瀏覽,使用了 Buildroot Linux 發行版,其特點是尺寸極小,並且 v86 模擬器允許複製 x86 終端的操作。
在一部分 WebAssembly,這是為了允許在網頁上構建高性能應用程序, “但它不會做出特定於 Web 的假設或提供特定於 Web 的功能,因此它也可以在其他環境中使用。 它是一個開放標準,旨在支持任何操作系統上的任何語言,在實踐中,所有最流行的語言都已經至少有一定程度的支持。 Supabase 使用 v86 在瀏覽器中運行它的虛擬機。
在瀏覽器中運行 Postgres 很棒,但使用 PgAdmin 連接它會更好。 不幸的是,瀏覽器阻止了對 VM 的 TCP 網絡的訪問。 為了規避這一點, Supbase 通過 websocket 路由流量。 他們使用 Websockproxy 的一個分支,允許模擬器通過將通過 websocket 端口發送的數據轉換為 TCP 數據包來與 Internet 通信。 Websockproxy fork 添加了隧道 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 命令行界面的完整瀏覽器中使用的目標。
終於 如果您有興趣了解更多信息,您可以在中查看詳細信息 以下鏈接。