PostgreSQL (通常簡稱為「Postgres」) 是全球最先進的開放原始碼物件關聯式資料庫。專為企業等級的效能而設計,其強大功能和可靠性也深受重視。
Postgres 於 1986 年開始發展,由 Ingres 演變而來,而 Ingres 是加州大學柏克萊分校先前的資料庫。自 1994 年以來,Postgres 一直都是使用結構化查詢語言 (SQL) 來執行查詢和交易,而且是由個人及企業開發人員的社群不斷更新。
由於長期開發及使用 SQL,PostgreSQL 成為全球最受歡迎的開放原始碼資料庫之一,每家大型雲端服務供應商都提供 PostgreSQL 或 PostgreSQL 衍生的資料庫即服務 (DBaaS)。
申請免費試用任何 Google Cloud 的 PostgreSQL 資料庫,包括 AlloyDB、PostgreSQL 適用的 Cloud SQL,以及 Spanner。
關聯式資料庫會將資料儲存在由列和欄組成的結構化資料表中,並保留多個資料表中的連結資料相關資訊。
舉例來說,零售銀行可能有一份包含客戶資訊列的資料表,其中每列都和欄一樣有客戶名稱、電話號碼和地址。可能還有第二份資料表,用來儲存交易資訊。關聯式資料庫會連結兩份資料表中的資料列,以便銀行追蹤哪些客戶完成哪些交易。
「查詢」是向資料庫要求資訊的單一作業。「交易」是一系列可以操控資料庫資料的作業。基本儲存空間作業一般稱為「CRUD」,代表建立、讀取、更新和刪除。
為了最佳化從資料庫擷取資訊的作業,PostgreSQL 會使用索引。索引是資料表的一部分副本,已經過重新整理,以便加快搜尋速度。就概念上來說,這與書籍結尾的索引類似,不必瀏覽整本書,就能快速找到某個項目。
PostgreSQL 是關聯式資料庫,使用稱為「結構定義」的正式說明來描述所含資料的結構。具體來說,結構定義是資料庫中的資料表、索引和函式的集合,而 PostgreSQL 支援多種結構定義。
資料庫專家負責設計結構定義,以及一組最能夠代表資料及應用程式使用者使用資料方式的索引組合。他們也必須負責維護和作業等工作,以確保資料安全無虞,讓資料庫順暢運作。
自從在柏克萊開發以來,PostgreSQL 一直維持開放原始碼,這表示程式碼已完全開放檢視、修改及發布。
由於這些資料庫可以在各種雲端和非雲端平台上執行,因此開發人員可以為其應用程式使用開放原始碼資料庫,不需支付授權費用,也能享有充分的部署彈性。開發人員社群有助於改善和維護軟體,並提升安全性與可靠性。
PostgreSQL 的人氣在近年來持續攀升,成為全球使用率最高的資料庫之一。它有許多優點,包括:
PostgreSQL 具備彈性、可靠性和完善的特徵集,可用於各種應用程式。以下提供一些常見的用途:
以高度安全的應用程式深受信任,並以可稽核性、法規遵循和資料保護聞名。
PostgreSQL 可處理數十億列的查詢,通常用於運用即時作業資料來擴增 data warehouse 和其他分析系統。事實上,數種熱門 data warehouse 產品是從 PostgreSQL 演進而來。
PostgreSQL 不僅可擴充、完善,還能處理高流量,十分適合行動、網路、社群媒體和其他高流量應用程式。
PostgreSQL 支援地理資料,因此應用程式可以計算點之間的距離,並針對導航、物流和農業應用程式執行地理空間計算。
PostgreSQL 提供高效能向量搜尋,常用於向大型語言模型 (LLM) 提供輸入內容,且通常會透過檢索增強生成 (RAG) 擴充這些模型。開發人員通常會選擇使用 PostgreSQL 來建構
機構經常使用 PostgreSQL,將舊版應用程式遷移至現代化的開放原始碼平台。
以下各節將深入探討 PostgreSQL 的生態系統。查看 AlloyDB 與 Aurora、SQL Server、MySQL 和 Oracle 之間的比較結果,並瞭解全代管與自行管理的 PostgreSQL 資料庫之間的差異。
市面上有許多商業產品,與 PostgreSQL 的相容性程度不一。其中兩項最受歡迎的是 Google Cloud 的 AlloyDB,以及 AWS 的 Aurora。
AlloyDB 可在任何平台和雲端中執行,而 Aurora 則只在 Amazon Web Services (AWS) 上執行。另一方面,AlloyDB 主要著重於 PostgreSQL,而 Aurora 則同時提供 PostgreSQL 和 MySQL 引擎。
AlloyDB 已成為企業的熱門選擇,原因如下:
PostgreSQL 是可以在大多數作業系統上執行的開放原始碼資料庫,而 SQL Server 則是在 Microsoft Windows 和 Linux 上執行的商業產品。許多廠商都以代管雲端服務的形式,提供這兩項服務。
這兩個系統有許多共同的核心功能,但仍有一些差異。PostgreSQL 的一大優勢是採用多版本並行控制 (MVCC) 進行並行處理,因此能在幾乎沒有死結的情況下,處理高交易率。SQL Server 以高效能與記憶體內資料庫功能而聞名,而 AlloyDB 也提供這些功能。
如需完整比較資訊,請參閱 PostgreSQL 與 SQL Server 的比較。
MySQL 是一種以 SQL 為基礎的關聯式資料庫,而 PostgreSQL 是物件關聯式資料庫。雖然都是開放原始碼,但 PostgreSQL 遵循允許商業流通的授權。MySQL 開放原始碼專案是由 Oracle 贊助運作。
PostgreSQL 會透過新增程序來調度資源,對於可靠的應用程式而言,向來是不錯的做法。PostgreSQL 的擴充功能機制讓其成為更受歡迎的社群貢獻平台。
MySQL 透過新增執行緒調度資源,這通常適用於小規模、資源需求低的應用程式。
至於選擇何者,通常取決於個人偏好,以及組織中的專業開發人員具備哪些經驗。
PostgreSQL 和 MySQL 之間的一些技術差異:
PostgreSQL
MySQL
PostgreSQL 和 Oracle 都是支援 SQL 的熱門關聯式資料庫,並使用對等的程序語言 (例如 Oracle 的 PL/SQL)。兩者都極為注重擴充性和安全性。
各種規模的企業均使用 Oracle 來推動重要業務應用程式,而 Oracle 以可用性和支援進階功能 (例如分群法) 聞名。
PostgreSQL 提供與 Oracle 類似的功能與機制,包括災難復原、高效能和內建複製功能。企業選擇 PostgreSQL 做為更開放、更符合成本效益的 Oracle 替代方案。
如同所有資料庫管理作業,貴機構的團隊需要具備相關技術經驗,才能自行管理資料庫。包括設定及維護架構、資源調度工作,以及執行升級、備份、安全性維護、災難復原和安裝修補程式等一般資料庫管理技能的知識。有越來越多開發團隊偏好全代管資料庫,這樣他們就能專心處理應用程式相關工作。
全代管資料庫:
不過,如果您因為獨特的應用程式需求,而需要完全控管資料庫環境,那麼自行管理的資料庫就能提供彈性。
您可以使用擴充功能,依據特定需求擴充及自訂資料庫功能。PostgreSQL 提供全方位的擴充功能支援,擴充功能行為類似於內建函式,包括外部開發的擴充功能。
以下列舉一些常用的擴充功能:
PostgreSQL 支援其他資料庫通常不支援的基本資料類型和進階資料類型,包括布林值、數字、整數、時間戳記、陣列等。開發人員也可以自行建立資料類型。
預設的程序語言是 pgSQL (PL/pgSQL) 的擴充功能,標準發行版本包含 Tcl、Perl 和 Python 等程序語言擴充功能 (寫成 PL/Tcl、PL/Perl 和 PL/Python)。使用這些可載入的程序語言,能透過程式設計語言來建立函式及觸發程序。
透過擴充功能可獲得更多語言支援,包括 Java、Ruby、C、C++、Delphi 和 JavaScript。
PostgreSQL 可讓您使用多種語言編寫程式碼,不必重新編譯資料庫,讓開發人員受益。
是,PostgreSQL 自 2001 年起即持續符合 ACID 規範。
ACID (完整性、一致性、獨立性、耐用性) 是一組屬性,用於說明交易資料庫如何確保資料有效。符合 ACID 規範可保障資料品質,即使網路中斷或硬體故障也能維持資料品質,且能同時讀取及寫入資料,而不會遺失或損毀。這些原則對許多產業的應用程式至關重要,包括金融和醫療照護業。
例如,銀行應用程式資料庫內的兩個帳戶正在轉移餘額。如果交易過程發生中斷或失敗,符合 ACID 規範的資料庫可確保款項不會直接消失或重複存入帳戶,讓帳戶餘額始終保持有效。