什麼是 PostgreSQL?

PostgreSQL (通常簡稱為「Postgres」) 是全球最先進的開放原始碼物件關聯式資料庫。專為企業等級的效能而設計,其強大功能和可靠性也深受重視。

Postgres 於 1986 年開始發展,由 Ingres 演變而來,而 Ingres 是加州大學柏克萊分校先前的資料庫。自 1994 年以來,Postgres 一直都是使用結構化查詢語言 (SQL) 來執行查詢和交易,而且是由個人及企業開發人員的社群不斷更新。

由於長期開發及使用 SQL,PostgreSQL 成為全球最受歡迎的開放原始碼資料庫之一,每家大型雲端服務供應商都提供 PostgreSQL 或 PostgreSQL 衍生的資料庫即服務 (DBaaS)。


申請免費試用任何 Google Cloud 的 PostgreSQL 資料庫,包括 AlloyDB、PostgreSQL 適用的 Cloud SQL,以及 Spanner

什麼是關聯資料庫?

關聯式資料庫會將資料儲存在由列和欄組成的結構化資料表中,並保留多個資料表中的連結資料相關資訊。

舉例來說,零售銀行可能有一份包含客戶資訊列的資料表,其中每列都和欄一樣有客戶名稱、電話號碼和地址。可能還有第二份資料表,用來儲存交易資訊。關聯式資料庫會連結兩份資料表中的資料列,以便銀行追蹤哪些客戶完成哪些交易。

PostgreSQL 基本概念

「查詢」是向資料庫要求資訊的單一作業。「交易」是一系列可以操控資料庫資料的作業。基本儲存空間作業一般稱為「CRUD」,代表建立、讀取、更新和刪除。

為了最佳化從資料庫擷取資訊的作業,PostgreSQL 會使用索引。索引是資料表的一部分副本,已經過重新整理,以便加快搜尋速度。就概念上來說,這與書籍結尾的索引類似,不必瀏覽整本書,就能快速找到某個項目。

PostgreSQL 是關聯式資料庫,使用稱為「結構定義」的正式說明來描述所含資料的結構。具體來說,結構定義是資料庫中的資料表、索引和函式的集合,而 PostgreSQL 支援多種結構定義。

資料庫專家負責設計結構定義,以及一組最能夠代表資料及應用程式使用者使用資料方式的索引組合。他們也必須負責維護和作業等工作,以確保資料安全無虞,讓資料庫順暢運作。

PostgreSQL 是開放原始碼資料庫

自從在柏克萊開發以來,PostgreSQL 一直維持開放原始碼,這表示程式碼已完全開放檢視、修改及發布。

由於這些資料庫可以在各種雲端和非雲端平台上執行,因此開發人員可以為其應用程式使用開放原始碼資料庫,不需支付授權費用,也能享有充分的部署彈性。開發人員社群有助於改善和維護軟體,並提升安全性與可靠性。

PostgreSQL 的優點

PostgreSQL 的人氣在近年來持續攀升,成為全球使用率最高的資料庫之一。它有許多優點,包括:

  • 安全可靠:PostgreSQL 具備高度容錯能力,能維持資料耐用性並最大化運作時間。支援強大的驗證和授權模型,以及多種加密方法,包括使用 SSL 的端對端資料加密。
  • 高效能:PostgreSQL 會以結構化方式儲存資料,以便有效率地插入、刪除及修改資料。也可以有效率地查詢和彙整。此外,PostgreSQL 能同時透過多個 CPU 來調度資源,進一步加快查詢速度。
  • 符合規範:PostgreSQL 資料庫高度符合 SQL 標準,因此可輕鬆建構應用程式及遷移現有應用程式。也符合 ACID 規範,代表即使硬體、軟體或網路中斷,您的資料仍然有效。
  • 高度擴充性:PostgreSQL 支援多種資料類型 (包括進階與使用者建立的類型)、多種程式設計語言,以及寫入自訂函式的功能。此外,還具備可用來新增功能的擴充功能機制。
  • 易於監控:PostgreSQL 提供數種統計資料,可支援收集及回報伺服器活動。此外,還提供數種外部工具,可用於監控資料庫活動及分析效能。

PostgreSQL 的用途為何?

PostgreSQL 具備彈性、可靠性和完善的特徵集,可用於各種應用程式。以下提供一些常見的用途:

以高度安全的應用程式深受信任,並以可稽核性、法規遵循和資料保護聞名。

PostgreSQL 可處理數十億列的查詢,通常用於運用即時作業資料來擴增 data warehouse 和其他分析系統。事實上,數種熱門 data warehouse 產品是從 PostgreSQL 演進而來。

PostgreSQL 不僅可擴充、完善,還能處理高流量,十分適合行動、網路、社群媒體和其他高流量應用程式。

PostgreSQL 支援地理資料,因此應用程式可以計算點之間的距離,並針對導航、物流和農業應用程式執行地理空間計算。

PostgreSQL 提供高效能向量搜尋,常用於向大型語言模型 (LLM) 提供輸入內容,且通常會透過檢索增強生成 (RAG) 擴充這些模型。開發人員通常會選擇使用 PostgreSQL 來建構

機構經常使用 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 已成為企業的熱門選擇,原因如下:

  • 在整個堆疊中使用多層快取,包括在資料庫層的極速快取機制
  • 具備內建的資料欄引擎,可加快分析查詢的速度
  • 使用支援機器學習的系統,簡化清理作業、儲存空間和記憶體管理等管理工作
  • 包含 AlloyDB AI 這個平台,可在資料庫內透過高效能的向量搜尋、向量嵌入功能,以及自然語言支援,來建構生成式 AI 應用程式
  • 強調價格公開透明且可預測,提供即付即用的儲存空間,且不會收取 I/O 費用

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

  • 支援複雜資料類型和擴充功能機制
  • 支援 MVCC,可在幾乎沒有死結的情況下修改資料
  • 支援多種高擴充性的資料類型
  • 支援多種索引類型,包括 B-Tree、HASH、GiST 和 GIN
  • 實作垃圾回收的 VACUUM 程序

MySQL

  • 著重於傳統關聯式資料庫概念
  • 支援 MVCC,視儲存引擎而定
  • 支援一組標準資料類型
  • 提供有限的索引
  • 使用專用清除執行緒

PostgreSQL 和 Oracle 都是支援 SQL 的熱門關聯式資料庫,並使用對等的程序語言 (例如 Oracle 的 PL/SQL)。兩者都極為注重擴充性和安全性。

各種規模的企業均使用 Oracle 來推動重要業務應用程式,而 Oracle 以可用性和支援進階功能 (例如分群法) 聞名。

PostgreSQL 提供與 Oracle 類似的功能與機制,包括災難復原、高效能和內建複製功能。企業選擇 PostgreSQL 做為更開放、更符合成本效益的 Oracle 替代方案。

如同所有資料庫管理作業,貴機構的團隊需要具備相關技術經驗,才能自行管理資料庫。包括設定及維護架構、資源調度工作,以及執行升級、備份、安全性維護、災難復原和安裝修補程式等一般資料庫管理技能的知識。有越來越多開發團隊偏好全代管資料庫,這樣他們就能專心處理應用程式相關工作。

全代管資料庫:

  • 簡單好上手
  • 輕鬆或甚至自動調度資源
  • 提供自動備份與升級功能
  • 內建高可用性和災難復原功能

不過,如果您因為獨特的應用程式需求,而需要完全控管資料庫環境,那麼自行管理的資料庫就能提供彈性。

PostgreSQL 擴充功能支援

您可以使用擴充功能,依據特定需求擴充及自訂資料庫功能。PostgreSQL 提供全方位的擴充功能支援,擴充功能行為類似於內建函式,包括外部開發的擴充功能。

以下列舉一些常用的擴充功能:

  • PostGIS:支援儲存、索引及查詢地理空間資料,用於多種地理空間應用程式,包括導航。
  • pgvector:儲存、索引和查詢向量,以及執行向量相似度搜尋,用於生成式 AI 和自然語言處理。
  • pglogical:運用邏輯複製功能穩定複製資料,用於複製 PostgreSQL 資料庫,並支援精細的資料表層級複製作業。

PostgreSQL 資料類型

PostgreSQL 支援其他資料庫通常不支援的基本資料類型和進階資料類型,包括布林值、數字、整數、時間戳記、陣列等。開發人員也可以自行建立資料類型。

PostgreSQL 支援哪些語言?

預設的程序語言是 pgSQL (PL/pgSQL) 的擴充功能,標準發行版本包含 Tcl、Perl 和 Python 等程序語言擴充功能 (寫成 PL/Tcl、PL/Perl 和 PL/Python)。使用這些可載入的程序語言,能透過程式設計語言來建立函式及觸發程序。

透過擴充功能可獲得更多語言支援,包括 Java、Ruby、C、C++、Delphi 和 JavaScript。

PostgreSQL 可讓您使用多種語言編寫程式碼,不必重新編譯資料庫,讓開發人員受益。

PostgreSQL 符合 ACID 規範嗎?

是,PostgreSQL 自 2001 年起即持續符合 ACID 規範。

ACID (完整性、一致性、獨立性、耐用性) 是一組屬性,用於說明交易資料庫如何確保資料有效。符合 ACID 規範可保障資料品質,即使網路中斷或硬體故障也能維持資料品質,且能同時讀取及寫入資料,而不會遺失或損毀。這些原則對許多產業的應用程式至關重要,包括金融和醫療照護業。

例如,銀行應用程式資料庫內的兩個帳戶正在轉移餘額。如果交易過程發生中斷或失敗,符合 ACID 規範的資料庫可確保款項不會直接消失或重複存入帳戶,讓帳戶餘額始終保持有效。

展開下一步行動

運用價值 $300 美元的免費抵免額和超過 20 項一律免費的產品,開始在 Google Cloud 中建構產品與服務。