概觀
如果關聯式模型最能代表您的資料,則有許多關聯式資料庫管理系統 (RDBMS) 可供選擇。PostgreSQL 是世界上最受歡迎且備受推崇的開放原始碼關聯式資料庫之一。
本文將涵蓋眾多開發人員選擇 PostgreSQL 來滿足其資料管理需求的一些主要原因。這些原因包括功能可用性和標準一致性,以及社群支援和專案治理。
強大的功能集
選擇使用 PostgreSQL 的主要原因之一是其龐大的功能列表。PostgreSQL 擁有大量與效能、安全性、程式設計擴充功能和組態等相關的功能。
PostgreSQL 提供的一些功能包括
- 支援使用以下語言編寫資料庫函數
- 支援大量資料類型,包括
- 常見的資料庫基本類型,例如數值、字串、布林值和日期時間類型:這些類型在大多數資料庫中都存在,並且在 PostgreSQL 中得到很好的支援。
- 網路位址:PostgreSQL 支援各種與網路相關的類型,例如 CIDR 位址、帶有子網路遮罩的位址和 MAC 位址,適用於 IPv4 和 IPv6。
- 幾何類型:提供各種類型來幫助您定義二維物件。這些類型包括點、線和線段,以及完整的形狀,例如方塊、多邊形和圓形。
- 貨幣類型:PostgreSQL 的
money
類型以固定的分數精度儲存貨幣。該類型具有地區感知能力,並包含自動輸出格式化。 - 範圍:範圍允許您以原生方式處理值範圍,例如,用於排程的日期和時間範圍。
- JSONB:PostgreSQL 對儲存和操作 JSON 物件的原生支援可以幫助您在同一個系統中處理關聯式和非關聯式資料。
- hstore:
hstore
類型允許您以原生方式處理鍵值對。 - 多維陣列:陣列對於儲存多部分值非常有用,這些值在其特定上下文之外沒有太多意義。
- 定義您自己的複雜類型的能力:定義您自己的類型有助於使您的資料庫更緊密地與資料在應用程式中的表示方式對齊。
- 全文檢索:全文檢索為您提供了強大的技術,用於查找和操作半結構化和非結構化文字中的資料。可以微調搜尋以符合您對相關性和匹配的期望。
- 適用於任何規模組織的強大身分驗證、存取控制和權限管理系統:PostgreSQL 具有成熟的使用者身分驗證和授權功能,可定義誰可以使用系統以及每個使用者被允許查看或執行的操作。
- 外部資料包裝器:外部資料包裝器使表示和存取遠端伺服器中的表格和資料成為可能。
- 視圖和實體化視圖:對視圖和實體化視圖的支援允許方便、簡化的資料存取,方法是針對經常一起查詢的資訊抽象化原始表格結構。
- 資料庫物件的註解:在表格、資料庫、欄位和其他個別資料庫物件上附加註解的能力,使您可以記錄決策或實作細節。
- 先寫日誌 (Write-Ahead Logging) 以提供時間點還原、容錯移轉和串流複製:這些技術有助於確保即使軟體崩潰,您的資料庫仍保持一致,並幫助您在系統之間複製資料以進行擴展和備份資料。
- 支援類似 NoSQL 的行為,例如使用 JSONB 儲存文件以及使用 hstore 儲存鍵值對:能夠在單一系統中使用多種資料庫範例有助於最大限度地減少您的管理開銷並提高不同表示方式之間的相容性。
您可以使用以下資源了解有關 PostgreSQL 支援的功能的更多資訊
物件導向資料庫功能
PostgreSQL 與大多數其他關聯式資料庫最根本的不同之處之一來自其核心設計。
大多數關聯式資料庫最好被描述為關聯式資料庫管理系統 (RDBMS)。RDBMS 是專門設計用於處理關聯式資料庫的軟體,其中資料儲存在具有預定義欄位和資料類型的類似表格的結構中。可以使用基於關聯代數的技術(通常透過結構化查詢語言 (SQL))來查詢、修改和檢索資料。
另一方面,從技術上講,PostgreSQL 是一種物件關聯式資料庫管理系統 (ORDBMS)。這表示它具有與 RDBMS 相同的關聯式功能,但此外還具有一些物件導向功能。
實際上,這表示 PostgreSQL 允許您
- 定義您自己的複雜資料類型
- 多載函數以處理不同的引數資料類型
- 定義表格之間的繼承關係
這些功能是強大的工具,可幫助您使用與程式設計時可能熟悉的一些相同技術來處理資料庫和資料。增加的靈活性使您可以在資料庫系統內部而不是程式外部對不同類型和關係進行建模。這有助於保持一致性,並在更接近實際資料的情況下強制執行預期的行為。
有關 PostgreSQL 的物件關聯方法提供的更多資訊,請查看以下資源
SQL 標準一致性
PostgreSQL 在其他關聯式資料庫系統中脫穎而出的另一個領域是其對 SQL 標準的堅持。
SQL 標準由 ANSI 和 ISO 組織制定,目的是為 SQL 實作定義最低功能和互通性要求。雖然這些機構提供的規範旨在定義 SQL 系統應提供的功能,但由於語言的複雜性和長期演變,嚴格遵守並非總是可行。根據 PostgreSQL 文件,目前沒有任何資料庫滿足規範中概述的所有要求。
鑑於此注意事項,PostgreSQL 比其他選項更符合 SQL 規範。根據他們自己的統計,他們至少符合 SQL:2016 提出的 179 項核心要求中的 160 項。
您可以使用以下資源了解有關 PostgreSQL 的 SQL 一致性的更多資訊
ACID 一致性
ACID 是計算機科學中的首字母縮略詞,代表原子性、一致性、隔離性和持久性。它們代表資料庫交易必須支援以避免有效性錯誤並維護資料完整性的關鍵保證。
ACID 一致性是關聯式資料庫的主要考量,因為它代表儲存和修改高度結構化資料的典型期望。非關聯式資料庫通常嘗試符合自己的標準,通常由競爭的 BASE 首字母縮略詞表示,該詞代表基本可用性、軟狀態和最終一致性。
雖然幾乎所有關聯式資料庫都渴望提供 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 是一個出色的選擇,它具有足夠的通用性,可以滿足許多用例。
您可以使用 Prisma Client 從您的 JavaScript 或 TypeScript 應用程式內管理 PostgreSQL 資料庫。了解如何將 Prisma 新增到現有專案或如何從頭開始使用 Prisma。
常見問題
PostgreSQL 是一個開放原始碼資料庫。它是一個物件關聯式資料庫,已經開發了 30 多年。
您可以在我們的「認識 PostgreSQL 功能」中更熟悉 PostgreSQL。
PostgreSQL 的功能矩陣是由 PostgreSQL 維護的表格,概述了其所有功能以及這些功能新增的版本。
您可以透過點擊該功能並導向到適當的 PostgreSQL 文件來存取每個功能的詳細資訊。
您可以在 PostgreSQL 的功能矩陣中找到其功能列表。
PostgreSQL 可以免費使用,並根據 OSI 批准的 PostgreSQL 許可證發布。
即使使用商業軟體產品,也沒有費用。
PostgreSQL 是一個物件關聯式資料庫,而不是 NoSQL 資料庫。但是,他們添加了一些 NoSQL 類型的功能,例如 JSON 類型。