# 我所理解的 PostgreSQL 01: 釐清 Database Cluster 與 pgAdmin 的常見誤解 {%hackmd @moment89/tXJIcGqmSI6_fJQp2hnJUA %} ## Database Cluster? 和 Database 的關係? 看到 Cluster 這個字眼可能會直覺想到是指分散式資料庫? 是指有很多個 PostgreSQL Server 組成的分散式服務? ❌不是 節選自[官方文檔 18.2 節](https://www.postgresql.org/docs/current/creating-cluster.html) > Before you can do anything, you must initialize a database storage area on disk. We call this a database cluster. (The SQL standard uses the term catalog cluster.) A database cluster is a collection of databases that is managed by a single instance of a running database server. Database Cluster 在 PostgreSQL 的定義是指指由單個 PostgreSQL Server Instance 管理的 Database 集合,這些 Database 會使用相同的配置文件、Port、Process 與 Memory 結構,就可以稱為一個 Database Cluster。 一般我們安裝 PostgreSQL,預設就會在本機的 5432 Port 上運作一個 PostgreSQL Server Instance,這個服務上除了原生自帶的 postgres 資料庫,還能建立多個其他的資料庫,故這個服務就是一個 Database Cluster。 ### 那一個環境可以有多個 Database Cluster 嗎? ✅可以 安裝過 PostgreSQL 後,我們電腦內就有了 PostgreSQL 的功能 (在安裝路徑下的 bin 資料夾內),我們可以參考剛剛貼的那份官方文檔,使用 PostgreSQL 的 initdb 功能建立一個新的 PostgreSQL Server Instance,並可以將該實例的啟動指令註冊成 Windows 服務,方便管理。 但要注意的是,一個 Port 上只能有一個 PostgreSQL Server Instance,不能同時運作兩個,也就是說新建的 PostgreSQL Server Instance 要記得去 Config 檔修改成其他 Port (ex. 改成 5433) 才能運作喔! ### 結論 Database Cluster 並不是分散式架構,而是單一 PostgreSQL Server Instance 所管理的多個 Database 集合。  ## pgAdmin 就是 PostgreSQL 嗎? 原生的 PostgreSQL 是一個單純的資料庫服務,需要透過 Terminal 以 psql 功能連線到資料庫內進行操作。  pgAdmin 工具是對 PostgreSQL 的操作包裝成 GUI 介面的工具,讓連線資料庫、下 SQL 指令、查看系統狀況等手續變更簡單。 (但 pgAdmin 並不是呼叫 psql 工具來執行 SQL,而是使用 Python 的 psycopg 套件連線並發送 SQL 指令。) 可透過 pgAdmin 可以快速從左側導覽列看到 Database Cluster 下所有 Database 及其下所有物件,而 pgAdmin 可以顯示這些就是因為它在背後直接透過連線資料庫、查詢 PostgreSQL 系統表返回這些資訊並顯示為按鈕。 (這也就是為什麼,當我們透過 pgAdmin 介面連線了 Database Cluster 下某一個 database,想刪除該 database 時會跳錯誤說有使用者正在連線、不可刪除,因為背後就是 pgAdmin 會對資料庫建立連線拿這些顯示用的資訊。) <center class="half"> <img src=https://hackmd.io/_uploads/rkyCgL8Peg.png width="200"/> </center> 也可以透過 pgAdmin 操作資料庫邏輯備份和還原,但這些功能背後調用的是你電腦裡安裝的 PostgreSQL 的 pg_dump、pg_restore 操作備份還原。 <center class="half"> <img src=https://hackmd.io/_uploads/HkDtWIIwlx.png width="200"/> </center> 如果電腦裡有裝 PostgreSQL,但還是用不了 Backup、Restore 功能,那可能是需要手動配置 PostgreSQL 功能執行檔的路徑 (PostgreSQL Binary Path)。 1. 點擊 pgAdmin 左上角進入 Preferences 介面 <center class="half"> <img src=https://hackmd.io/_uploads/Bk56ZLIwge.png width="200"/> </center> 2. 配置 PostgreSQL Binary Path 為 PostgreSQL bin 資料夾的路徑 <center class="half"> <img src=https://hackmd.io/_uploads/HJOIG88wxl.png width="500"/> </center> ### 結論 * pgAdmin 只是一個 GUI 介面工具,將查詢指令包裝成圖形化介面。 * pgAdmin 專門服務於 PostgreSQL,但並不等於 PostgreSQL。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.