快轉到主要內容

SQL Console Release v0.1.0

·1996 字·4 分鐘·
PolloChang
作者
PolloChang
我是一隻雞
英文原文
#

Sql Console:專為跳板機(Bastion Host)打造的輕量、極速雙引擎 SQL 終端工具
#

在現代雲端架構與嚴格的資安資產保護下,生產環境的資料庫通常會被妥善保護在私有子網路(Private Subnet)中。身為 DBA 或維運工程師,我們唯一的存取途徑往往是透過跳板機(Jump Host / Bastion Host)

然而,在跳板機上管理資料庫時,你是否也常遇到以下痛點?

  1. 傳統 CLI 操作不便:原生的 psqlmysql 終端介面較為陽春,當執行 SELECT * 跑出上萬條數據時,畫面瞬間被雜亂的文字吞沒,極難閱讀。
  2. 缺乏圖形化 GUI 的彈性:跳板機環境通常受到嚴格限制,無法開啟圖形介面(GUI)工具(如 DBeaver、DataGrip),且基於安全考量,也不可能直接將資料庫埠口(Ports)暴露給外部網路。
  3. 資料匯出繁瑣:想將線上環境的特定資料匯出成 Excel 或 CSV 供業務團隊分析,往往需要撰寫複雜的腳本,效率低落。

為了解決這些長年困擾維運團隊的痛點,我正式推出了這款專為現代基礎設施設計的輕量級、多功能 SQL 終端工具 —— Sql Console


什麼是 Sql Console?
#

Sql Console 是一個具備高效能、高擴充性的命令列工具,旨在完美橋接維運人員的本地端環境與遠端隔離的資料庫。它不僅內建 Bastion Host Ready 特性,能完美適應受限的跳板機環境,更在終端帶來了媲美 GUI 工具的豐富視覺操作與數據導出能力。

核心設計:Go + Java 雙引擎架構(Client-Daemon Split)
#

Sql Console 最具特色的地方在於其採用的用戶端與核心服務分離(Client-Daemon Split)架構

sql-console-release-v0.1.0

  • Go Client(基於 Go 1.20+ 實作):負責處理極速的 CLI 參數解析、動態 TUI 表格渲染與終端互動,確保操作流暢、輕量不佔資源。
  • Java Daemon(基於 Java 21 + Gradle 實作):充分利用 Java 21 先進的語法特性(如 Records、Sealed Classes),專職負責底層穩健的 JDBC 連線池管理、複雜 SQL 執行以及高效能的結果集序列化。
  • 高效本地通訊 (IPC):兩者在跳板機本地透過 Unix Domain Socket (UDS)NDJSON (Newline Delimited JSON) 協定進行超低延遲的通訊,兼顧了安全性與極致效能。

五大核心優勢
#

1. 專為跳板機優化(Bastion Ready)
#

安裝極其輕量,完全符合企業內部跳板機嚴格的安全防禦與資源限制要求。透過集中式的 Profile 機制,還能為整個 DBA 團隊統一配置系統級的資料庫連線設定。

2. 精美的 TUI 互動與強大的分頁機制(\p)
#

在互動式 REPL 模式中,Sql Console 提供了美觀的表格渲染與 Schema 瀏覽功能(如透過 \dt 快速查看資料表結構)。更棒的是,它內建了結果集分頁機制(預設每頁 Fetch 20 筆),只要輸入快捷指令 \p <頁碼>(例如 \p 2),就能在命令列中優雅地上下翻頁,再也不怕終端被大量數據洗版!

3. 一鍵高速導出大數據集(Excel / CSV)
#

再也不需要透過複雜的 SQL 指令或拼湊 shell 腳本來轉存資料。Sql Console 用戶端支援命令列一鍵導出,只需加上 -o 參數與檔案名稱,Go Client 就會直接將遠端資料庫的大量數據流式寫入 CSV 或 Excel 檔案,速度飛快。

4. 企業級安全稽核日誌(Audit Log)
#

在生產環境中,安全至上。Sql Console 內建嚴格的稽核機制,所有透過本地端執行的資料庫操作、連線嘗試及查詢動作,都會被完整記錄至系統的 audit.log 中。更重要的是,核心引擎對敏感資訊(例如 PASSWORDIDENTIFIED BY 等關鍵字)具有自動過濾與遮罩處理(Masking)機制,防止任何機密外洩。

5. 靈活的設定檔持久化
#

支援系統級(/etc/sql-console/profiles)與個人用戶級(~/.sql-console/profiles)的資料庫連線設定(Profiles),方便團隊協作,也確保了權限管理的靈活性。


快速上手指南
#

Sql Console 目前已針對 Linux(尤其是 Debian/Ubuntu 生態系)進行極致優化。

1. 安裝
#

僅需確保跳板機上裝有 Java 21+ 環境,即可直接透過 deb 包一鍵部署用戶端與 Daemon 服務:

1
2
sudo apt install openjdk-21-jre
sudo apt install ./sql-console_0.1.0_amd64.deb

2. 管理連線設定(Profile)
#

您可以安全地將常用的資料庫連線字串儲存起來:

1
2
3
4
5
6
7
# 新增一個名為 testdb 的 PostgreSQL 連線
❯ sql profile add testdb jdbc:postgresql://localhost:5432/testdb testdba your_password

# 列出目前已儲存的 Profile
❯ sql profile list
Profiles:
 - testdb

3. 進入 REPL 互動模式
#

使用 -p 參數指定連線,即可開啟高互動性的 SQL 命令列體驗:

1
2
3
4
5
6
7
❯ sql -p testdb
sql-console v0.1.0
Connected to: testdb
Type \q to quit, \? for help.

testdb> \dt
# 這裡會以精美的 TUI 表格呈現所有資料表資訊...

4. 大數據快速匯出範例
#

如果您想在單次命令中直接把查詢結果匯出為本地檔案,只需執行:

1
2
3
4
❯ sql -p testdb -o test_result.csv "SELECT * FROM mgmt_monthly_test WHERE category = 'DDMCJENSKS'"
Exporting results to: test_result.csv (format: csv)
...
(149 rows affected)

開源與展望
#

Sql Console 的誕生源自於實際維運現場的深刻痛點。我們希望透過 Go 的輕快與 Java 豐富的 JDBC 生態系,為所有身處第一線的 DBA、DevOps 與維運工程師提供一個更現代、更安全、更優雅的維運利器。

本專案的核心套件結構定義在 work.pollochang.app.sqlconsole 下,目前正持續優化各類資料庫的相容性與進階 TUI 特性。如果您對這個專案感興趣,歡迎到我的 GitHub 點個 Star、回報 Issue,或是直接提交 Pull Request!讓我們一起打造最棒的跳板機維運神器!

  • 專案 GitHub 傳送門sql-console
  • 技術開發規範詳見DEVELOP.md