Greenplum 和 PostgreSQL 的關係為何?
Greenplum 是一種開源的並行資料庫,用於處理報吿、分析、機器學習、人工智能和高並行(High Concurrency)SQL 。Greenplum 資料庫是一種擁有 MPP 架構以及 PostgreSQL 開源資料庫的巨量資料庫技術。PostgreSQL 是一種免費且開源的關聯式資料庫管理系統,並且強調可擴展性與和 SQL 的兼容性。Greenplum 的可靠性、堅韌性和效能,讓它在資料庫的領域中獲得信譽。
Greenplum 和 PostgreSQL 的關聯
Greenplum 以 PostgreSQL 做為基礎,因爲它開源的本質,使用者在部署 Grenplum 時能夠擁有良好的控制性,從而降低被供應商壟斷的可能性,還能夠自由地修改產品性能。 Greenplum 是 PostgreSQL 的 MPP 改版,專門用於處理大型資料倉儲和分析巨量資料,而且能夠高效地在資料交易性環境中運行。如果比較 Greenplum 與 PostgreSQL 的效能, Greenplum 更適合在大型資料倉儲中運行。
考慮到 PostgreSQL 和 Greenplum 性能的比較,兩者皆是用於資料庫管理系統的開源軟體產品,它們也有各自的長處。PostgreSQL 是關聯式資料庫管理系統中熱門且廣泛使用的開源軟體產品。相較之下,Greenplum 是一個建立在 PostgreSQL 基礎上的分析式資料庫平台,也同時是一個適用於關聯式資料集的開源軟體產品,但它卻有將資料自動分片、能夠處理並行查詢、將進階資料儲存和資料壓縮的功能。
PostgreSQL 是一種熱門和先進的巨量物件關連式資料庫管理系統(object-relational database),它能夠支援大量的 SQL 子集,包括交易、外鍵、子查詢、觸發器和使用者定義類型。由於 Greenplum 和 PostgreSQL 在處理分析和商業智能的工作負載都有類似的效能,因此它們被認定為兩個高度相關的資料庫工具,而且這兩種資料庫在應用系統長期的配置和部署都是高效、可靠和可擴展的。
由於 Greenplum 是 PostgreSQL 的改版,兩者也同樣為資料庫工具,因此它們之間的關係是密切的 。 Greenplum 透過鞏固資料儲存的容器、運算功能和能夠在交易頻繁的環境中有效地分析巨量資料集。Greenplum 和 PostgreSQL 的性能有許多相似之處,唯一的差別在於它們適用於不同的情境。這些情境的區別為任務所需的運算能力大小與一些本質上的差異。PostgreSQL 適合用於小型資料庫以及當用戶有 OLTP(線上交易處理)需求時,而 Greenplum 的性能則與它能夠在大型資料倉儲中處理大量工作負載和運行資料息息相關。
Greenplum 和 PostgreSQL 的相異之處
最重要的是,PostgreSQL 需要被部署在小規模 OLTP 的資料庫上,才能發揮可靠的效能。這也就說明了 PostgreSQL 是一種 OLTP 資料庫管理系統。此外,Greenplum 是分散式架構系統,因此,如果將它作為資料交易系統,使用者將會耗損額外的主機資源。相較之下,PostgreSQL 只需要做些微的調整,就能夠處理成百上千的資料處理系統,因此它也特別適合運轉網頁應用程式,因為運轉這種任務往往會出現 OLTP 工作負載。
然而,當處理 OLAP(線上分析處理)工作負載時,使用 PostgreSQL 將會變得很有挑戰性。因為 PostgreSQL 這種開源工具並沒有資料壓縮的功能、沒有能夠處理 OLAP 工作負載的列式儲存功能、無法自動分片或擴展,和沒有深度分析大型資料集的並行查詢功能。與之相比,Greenplum 的技術更適合將資料以並行的形式儲存於叢集中。這有助於 PostgreSQL 和 Greenplum 在處理 OLAP 工作負載時有更多的可操作性。
Greenplum 的並行運算是它最突出的優勢,透過並行運算功能,Greenplum 在大型資料庫上的查詢速度比 PostgreSQL 這種非 MPP 架構系統還要快上好幾個量級。小型的查詢運行功能和主節點與底層的資料節點相互對話,能夠高效、有效和輕鬆地檢索所有查詢的結果。Greenplum 的效能取決於要讀取與答覆的查詢規模。相較之下, PostgreSQL 在執行資料查詢的過程中只會使用單一的多核處理器。
PostgreSQL 和 Greenplum 的根本區別在於這兩種開源軟體的架構。Greenplum 同時是一個資料倉儲,也是一個能夠處理資料交易及執行操作的資料平台。這使得 Greenplum 更容易將運行於多個相異實體伺服器上PostgreSQL 實例中的運算和資料儲存流程並行化。這為分析工作負載和交易工作負載提供了益處。得益於 Greenplum 獨特的資料庫倉儲特性(例如:列式儲存和壓縮特性),Greenplum 在運算和資料分析的效率大幅上升,最重要的是,儘管具有和 PostgreSQL 相同的缺點,Greenplum 被設計於同時處理系統中的資料交易事件。
與 PostgreSQL 相比,Greenplum 是一種採用無共享架構(shared-nothing architecture)的資料庫工具。這也能解釋為何 Greenplum 能夠在叢集中擁有伺服器或節點,並且擁有獨立的作業系統、倉儲基礎架構以及記憶體。
在 Greenplum 資料庫工具的結構中,存在著一條連通節點與節點的內部網路基礎架構,這條內部網路對系統的資料通訊和資料傳遞的同步扮演著至關重要的角色。與之相比,PostgreSQL 採用客戶伺服器架構(client-server architecture)。代表這種資料庫架構能夠共享記憶體、儲存區域和作業系統。這樣做是為了擁有共享的記憶體,流程也能協同工作,以建立一個資料方便被存取的實例(Instance)。
再來,被創建的實例會與客戶端程式的相互連結,以便在實體伺服器中進行讀寫操作。由於 Greenplum 與 PostgreSQL 的架構不相同,它們在處理資料的流程也會有所差異。 Greenplum 的複雜性和穩固性,讓它能夠並行處理系統中的作業,也同時具備 PostgreSQL 處理單一流程的功能。
PostgreSQL 和 Greenplum 之間的區別在於,Greenplum 能夠將資料存入 AO 表(append optimized),而 PostgreSQL 這種資料庫工具,與傳統的查詢計劃器相比,更具有查詢計畫的優勢。以上就是這兩種資料庫工具的差異。最重要的是,Greenplum 使用列式儲存的方式儲存資料,它的邏輯是將資料儲存至行與列中,也因為這種特性, Greenplum 被歸類為資料庫工具。Greenplum 能夠壓縮所有使用在關聯式資料庫中的 AO (append optimized)表。
PostgreSQL 能夠修改和擴充的架構,讓它能輕鬆地支援 Greenplum 的並行化結構。Greenplum 有一種名為互聯(interconnect)的特性,能夠使不同的 PostgreSQL 實例透過高速網路相互通訊,透過一種有邏輯的運行方式,讓它們被視為同一個資料庫圖像(Database Image)。相較於PostgreSQL,Greenplum 能夠更有效地處理巨量資料集,因此它是實體伺服器中不可或缺的角色,並且能夠對資料表進行 Declarative Partition 和 Sub Partition,以解決傳統上 Partition 面臨的問題。
結論
儘管擁有不相同架構和特性,Greenplum 和 PostgreSQL 被歸類為類似的資料庫工具。它們彼此的關係解釋了,Greenplum 是 PostgreSQL 的擴充版而非替代品。這兩種資料庫工具在並行和單一運算處理與資料分析為使用者提供選擇的偏好,Greenplum 和 PostgreSQL 能否在運算環境中發揮效能,取決於任務本身的性質。 PostgreSQL 最適合使用 OLTP 的小型資料庫,而 Greenplum 則適用於使用 OLAP 的巨量資料分析。
本文翻譯自:Relationship And Difference Between Greenplum And PostgreSQL
瞭解更多 Greenplum 資訊,請參考:Greenplum – 雲端與巨量化資料的夢幻團隊