sqlit:純鍵盤版的 DBeaver,一頁複習整套模型
收尾複習:把五個座標、通道、docker 打包、一次性 vs REPL 濃縮成一頁,再帶出最後的收穫:一個叫 sqlit 的純鍵盤 DBeaver,在同一個 terminal session 裡跑完整套模型。
整個系列其實只在追一件事:一套「從 terminal 連上遠端資料庫」的心智模型。這裡把那套模型一口氣講完,再帶出最後真正把它包起來的工具。
一頁複習整套模型
- 一條連線就是五個座標: host / port / user / password / database,URI 只是把它們串成一行。→ 一條連線就是五個座標
- 一層 tunnel 把遠端 DB 借到
127.0.0.1:PORT: managed DB 走 Cloud SQL Proxy,k8s 裡的 DB 走kubectl port-forward,兩條 auth 路徑、同一個本地 port。→ 兩種通道 - docker 打包那條 tunnel: image vs build 差在 provenance,COPY 把檔案烤進映像、volume 是即時掛載。→ image vs build
- 連上之後,query flag 決定模式: 丟一個就是一次性,不丟就進 REPL。→ 一次性查詢 vs REPL
每套資料庫的 CLI,都只是同一個模型換個拼法而已——這句話就是整件事的重點。
收尾:純鍵盤版的 DBeaver
以前我的資料躲在三套不同的工具後面;現在大部分都是一個按鍵就打開:
既然概念一模一樣、只有 flag 的拼法不同,那就有一個工具能把這些 SQL 系的引擎整個包起來。sqlit 做的正是這件事:Postgres、MySQL、ClickHouse 一次都設在裡面,純鍵盤、就在同一個 terminal session 裡打開,不用滑鼠、也不用在 app 之間跳。走的還是我早就在用的 k9s/lazygit 那套「lazy」風格。
MongoDB 則刻意維持 Compass。它的連線模型和查詢語言差得夠多(是 document store 配一個 JavaScript 味的 shell,不是走五座標的 SQL),硬塞進同一個 TUI 只是在假裝它們一樣、其實不一樣。該收斂的是共用同一個模型的那些,不是全部。
於是整條線收回原點:一開始想要的,是 DBeaver 的順手但不離開 terminal;把「筆電 → 遠端 DB」這條路一層一層拆完之後,最後得到的正是一個能替共用模型的那些引擎做到這件事的 TUI。目前正把每天的 SQL 工作流從 DBeaver 搬到 sqlit,到現在為止很順。
同一個模型就用同一個工具:sqlit 一次涵蓋 Postgres、MySQL、ClickHouse。MongoDB 走的是另一套規則,就留給 Compass。
參考來源
Related: 回到遠端資料庫連線總覽;這篇複習了五個座標、兩種通道,還有一次性查詢 vs REPL 的分岔。