SQL to ER Diagram: 免費瀏覽器端 SQL Schema 可視化工具

SQL to ER Diagram 是一款免費、開源的工具,可直接在網頁瀏覽器中將 SQL schema 定義轉換為互動式實體關係圖 (ERDs)。透過在本地端處理 CREATE TABLE 語句,該工具允許開發者在不將敏感的 schema 資料上傳到外部伺服器的情況下,視覺化查看表格、欄位、主鍵和外鍵。

本地優先架構與隱私保護

SQL to ER Diagram 完全在客戶端運行,確保資料庫 schema 從未被上傳或儲存在伺服器上。這種架構消除了對帳號、註冊或付費牆的需求,為傳統的資料庫視覺化工具提供了一個以隱私為中心的替代方案。

主要功能

  • 多方言支援:該工具可解析 PostgreSQL、MySQL、SQLite 和 SQL Server 的標準 CREATE TABLEALTER TABLE DDL。
  • 互動式視覺化:使用者可以拖動表格來排列佈局,使用自動排列功能,並添加筆記或群組框。
  • 匯出選項:圖表可以匯出為高解析度的 PNG 或向量 SVG 檔案。
  • 狀態持久化:整個專案可以儲存為檔案,或透過將整個 schema 直接編碼到連結中的 URL 進行分享,從而無需後端資料庫。

技術實作細節

開發者 robhati 使用純 JavaScript(不使用框架)構建了此工具,其 gzipped 大小約為 32KB。實作重點在於高效能與 schema 編輯的精準度。

渲染引擎

為了在渲染數百個表格時保持流暢,該工具使用了 HTML5 <canvas> 元素而非 DOM 或 SVG。表格會被光柵化為帶有視窗剔除 (viewport culling) 功能的快取位圖,這優化了大型 schema 的效能。

精準 SQL 解析

SQL 解析器會追蹤每個 token 的來源範圍 (source spans)。這使得工具能夠進行「精準」編輯;例如,當使用者直接在畫布上重新命名表格時,工具僅會更新 SQL 程式碼中相關的識別碼及其引用,同時保留原始的註釋和格式。

JavaScript vs. WASM 實驗

在開發過程中,建立者嘗試了 Rust/WASM 版本。雖然 $O(n^2)$ 的重疊解析 (overlap-resolution) 階段在 WASM 中快了 2.2 倍,但由於 JS-WASM 邊界開銷的影響,整體解析器的速度慢了約 37%。因此,最終版本仍採用純 JavaScript。

社群洞察與替代方案

Hacker News 社群的使用者與開發者強調了關於 ER 圖的實用性與理論性質的幾個觀點。

理論區別

一位使用者指出資料庫表格與實體 (entities) 之間的細微區別,並建議單靠 SQL 並不足以建立真正的實體關係圖,因為實體與表格在根本上是不同的。

與其他工具的比較

社群成員建議了幾種替代方案與互補工具:

  • Mermaid.js:支援 ER 圖,但被描述為視覺效果不如 SQL to ER Diagram 精緻。
  • Azimutt:另一款用於資料庫視覺化的工具。
  • SQLGlot:建議整合像 SQLGlot 這樣的轉換層,透過在生成前將其轉換為基礎方言,以支援更多 SQL 方言。

使用者體驗

使用者稱讚了工具的行動裝置可用性,特別指出在行動裝置上進行平移、縮放和選擇元素時感覺非常流暢。

Sources