分享到

概述

如果關係模型最能代表您的資料,則有許多關係型資料庫管理系統 (RDBMS) 可供選擇。PostgreSQL 是世界上最受歡迎和備受推崇的開源關係型資料庫之一。

本文將介紹許多開發人員選擇 PostgreSQL 來滿足其資料管理需求的一些主要原因。這些原因涵蓋了從功能可用性和標準合規性到社群支援和專案治理等方方面面。

強大的功能集

選擇使用 PostgreSQL 的主要原因之一是其龐大的功能列表。PostgreSQL 擁有令人難以置信的眾多功能,涉及效能、安全性、程式設計擴充套件和配置等方面。

PostgreSQL 提供的一些功能包括:

  • 支援使用以下語言編寫資料庫函式:
  • 支援大量資料型別,包括:
    • 常見的資料庫基元,如數字、字串、布林和日期時間型別:這些型別在大多數資料庫中都可以找到,並在 PostgreSQL 中得到了很好的支援。
    • 網路地址:PostgreSQL 支援各種網路相關型別,如 CIDR 地址、帶子網掩碼的地址以及 MAC 地址,適用於 IPv4 和 IPv6。
    • 幾何型別:提供多種型別來幫助您定義二維物件。這些包括點、線和線段,以及像盒子、多邊形和圓形這樣的完整形狀。
    • 貨幣型別:PostgreSQL 的 money 型別以固定的小數精度儲存貨幣。該型別具有本地化感知功能,幷包含自動輸出格式化。
    • 範圍型別:範圍型別允許您原生處理值範圍,例如用於日程安排的日期和時間範圍。
    • JSONB:PostgreSQL 對儲存和操作 JSON 物件的原生支援可以幫助您在同一系統中同時處理關係型和非關係型資料。
    • hstorehstore 型別允許您原生處理鍵值對。
    • 多維陣列:陣列對於儲存多部分值非常有用,這些值在特定上下文之外意義不大。
  • 能夠定義自己的複雜型別:定義自己的型別有助於使您的資料庫與資料在應用程式中的表示方式更緊密地對齊。
  • 全文搜尋:全文搜尋為您提供了強大的技術,用於查詢和操作半結構化和非結構化文字中的資料。搜尋可以根據您對相關性和匹配的期望進行微調。
  • 強大的認證訪問控制許可權管理系統,適用於任何規模的組織:PostgreSQL 具有成熟的使用者認證和授權功能,可以定義誰可以使用系統以及每個使用者被允許檢視或執行什麼操作。
  • 外部資料封裝器:外部資料封裝器使得在遠端伺服器中表示和訪問表和資料成為可能。
  • 檢視物化檢視:對檢視和物化檢視的支援,透過抽象原始表結構,為經常一起查詢的資訊提供了方便、簡化的資料訪問方式。
  • 資料庫物件註釋:在表、資料庫、列和其他單個數據庫物件上附加註釋的能力,允許您記錄決策或實現細節。
  • 預寫式日誌以提供時間點恢復故障轉移流複製:這些技術有助於確保即使軟體崩潰,您的資料庫也能保持一致,並幫助您在系統之間複製資料以進行擴充套件和備份。
  • 支援類似 NoSQL 的行為,例如使用 JSONB 儲存文件和使用 hstore 儲存鍵值對:能夠在單個系統中使用多種資料庫正規化有助於最大限度地減少管理開銷並提高不同表示形式之間的相容性。

您可以透過以下資源瞭解更多 PostgreSQL 支援的功能:

面向物件資料庫特性

PostgreSQL 與大多數其他關係型資料庫最根本的區別之一在於其核心設計。

大多數關係型資料庫最好被描述為關係型資料庫管理系統 (RDBMS)。RDBMS 是專門設計用於處理關係型資料庫的軟體,其中資料以具有預定義列和資料型別的類似表格的結構儲存。通常透過結構化查詢語言 (SQL),使用基於關係代數的技術來查詢、修改和檢索資料。

另一方面,PostgreSQL 在技術上是一種物件關係型資料庫管理系統 (ORDBMS)。這意味著它具有與 RDBMS 相同的關係型能力,但額外擁有一些面向物件的特性。

實際應用中,這意味著 PostgreSQL 允許您:

  • 定義自己的複雜資料型別
  • 過載函式以處理不同的引數資料型別
  • 定義表之間的繼承關係

這些功能是強大的工具,可幫助您使用在程式設計時可能熟悉的一些相同技術來處理資料庫和資料。增加的靈活性使您能夠在資料庫系統內部而不是在程式外部建模不同型別和關係。這有助於保持一致性並更接近實際資料地強制執行預期行為。

有關 PostgreSQL 物件關係方法提供的更多資訊,請檢視以下資源:

SQL 標準合規性

PostgreSQL 區別於其他關係型資料庫系統的另一個突出特點是其對 SQL 標準的遵守。

SQL 標準ANSIISO 組織開發,旨在定義 SQL 實現的最低功能和互操作性要求。儘管這些機構提供的規範旨在定義 SQL 系統應提供的功能,但由於語言的複雜性和漫長的演變,嚴格遵守並非總是可能。根據 PostgreSQL 文件,目前沒有資料庫滿足規範中列出的所有要求

即便如此,PostgreSQL 比其他選項滿足了更多的 SQL 規範。據其自身統計,他們符合 SQL:2016 規定的 179 個核心要求中的至少 160 個。

您可以透過這些資源瞭解更多 PostgreSQL 的 SQL 合規性:

ACID 合規性

ACID 是計算機科學中的一個首字母縮略詞,代表原子性 (atomicity)、一致性 (consistency)、隔離性 (isolation) 和永續性 (durability)。它們代表了資料庫事務必須支援的關鍵保證,以避免有效性錯誤並維護資料完整性。

ACID 合規性是關係型資料庫的主要關注點,因為它代表了儲存和修改高度結構化資料的典型期望。非關係型資料庫通常嘗試遵循自己的標準,這通常由競爭性的 BASE 首字母縮略詞表示,它代表基本可用 (basically available)、軟狀態 (soft state) 和最終一致性 (eventual consistency)。

儘管幾乎所有關係型資料庫都力求提供 ACID 合規性,但 PostgreSQL 自 2001 年以來在其引擎中就已具備 ACID 合規性。由於 PostgreSQL 依賴於單個數據庫引擎,這意味著預設情況下所有事務都完全符合 ACID。這些保證是在不使用資料庫鎖的情況下,透過多版本併發控制 (MVCC) 實現的。相比之下,MySQL 僅在使用其 InnoDB 或 NDB 資料庫引擎時才支援完全的 ACID 合規性,如果使用其他引擎,則可能導致意外的資料損壞。

要了解有關 ACID 和 PostgreSQL 合規性的更多資訊,請檢視這些資源:

開源開發和社群

PostgreSQL 是一個由 PostgreSQL 全球開發組管理的開源專案。它使用 PostgreSQL 許可證進行授權,該許可證是 開放原始碼促進會認可的許可證。

儘管還有許多其他開源關係型資料庫,但 PostgreSQL 的開發和管理沒有公司所有者或商業對應方。這有助於貢獻者開闢自己的道路,並致力於社群最關心的功能。PostgreSQL 的專業服務由通常為專案做出貢獻但不控制開發過程的公司提供

這種對社群驅動開發的關注促使 PostgreSQL 使用者積極參與。大量高質量的擴充套件和應用程式可用於增強 PostgreSQL 核心軟體的功能。社群開發的軟體可以幫助您管理 PostgreSQL 伺服器、編制商業智慧報告、管理新型資料,並使用各種程式語言和平臺與 PostgreSQL 進行互動。

結論

PostgreSQL 作為關係型資料的強大、功能豐富的選擇贏得了良好的聲譽。PostgreSQL 注重穩定性、功能性和標準合規性,滿足了許多專案的要求。同樣,如果您需要靈活地表示資料並希望能夠使用各種工具和語言,PostgreSQL 也是一個不錯的選擇。

PostgreSQL 以其出色的核心關係型功能實現而聞名,同時又不侷限於傳統 RDBMS 的邊界。雖然沒有資料庫可以滿足所有需求,但 PostgreSQL 是一個出色的選擇,其多功能性足以適應許多用例。

常見問題

PostgreSQL 是一個開源資料庫。它是一個已開發超過 30 年的物件關係型資料庫。

您可以在我們的瞭解 PostgreSQL 功能中進一步熟悉 PostgreSQL。

PostgreSQL 的功能矩陣是由 PostgreSQL 維護的一個表格,其中概述了其所有功能以及這些功能是在哪個版本中新增的。

您可以透過點選某個功能來訪問其詳細資訊,並跳轉到相應的 PostgreSQL 文件。

您可以在 PostgreSQL 的功能矩陣中找到其功能列表。

PostgreSQL 可以免費使用,並根據 OSI 批准的 PostgreSQL 許可證釋出。

即使是用於商業軟體產品,也無需付費。

PostgreSQL 是一個物件關係型資料庫,而不是 NoSQL 資料庫。然而,它增加了一些 NoSQL 型別的功能,例如 JSON 型別

關於作者
Justin Ellingwood

Justin Ellingwood

Justin 自 2013 年以來一直撰寫有關資料庫、Linux、基礎設施和開發者工具的文章。他目前與妻子和兩隻兔子住在柏林。他通常不必以第三人稱寫作,這對所有相關方來說都是一種解脫。
© . This site is unofficial and not affiliated with Prisma Data, Inc.