「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

昨天(2019年10月29日)晚上8點,北京室外寒風凜冽,但線上的 Greenplum 6.0 直播室卻熱火朝天。Greenplum 研發工程總監楊瑜在直播過程中為大家分享了 Greenplum 6.0 諸多新特性,並對Greenplum 7.0 的新功能特性進行了展望。沒有參加活動的小夥伴也不用擔心哦,讓我們用一篇文章帶你回顧公開課的所有乾貨!

Greenplum 是基於MPP架構的、開源的、集機器學習和人工智能處理能力於一體的數據平臺。 9月4日發佈的 Greenplum 6.0 版本在功能和性能上都有了大幅提升,在併發性上的改進尤為顯著,對OLTP 型和混合負載業務的支持更為強大,是 Greenplum 發展的重要里程碑。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

Greenplum 是基於 PostgreSQL 的MPP數據庫。此次 Greenplum 6.0 的發佈,其 Postgres 內核進行了大幅度的升級。Greenplum6 的內核從 Greenplum 5 的 Postgres 8.3 版本的內核一直升級到Postgres 9.4 版本的內核,一共升級 11720 個提交,包括了非常多的 Postgres 新特性。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

此外,在這一版的 Greenplum 中,OLTP 性能得到了大幅度提升,經內部在 GCP 上的測試,Greenplum 的 TPCB 提升了70倍。其中更新操作的TPS達到24448次,插入操作的TPS達到46570次,查詢操作的TPS達到14萬次。這一重大優化使得 Greenplum 能夠更好的勝任混合查詢的應用場景。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

為了對多租戶提供更好的資源隔離,更好的支持混合工作負載和高併發,我們在此版本中引入了資源組。我們可以指定每個資源組能使用的最大CPU,控制每個查詢所使用的最大內存,還可以指定每個資源組的最大併發數,這一切都是利用 Linux Cgroup 實現的。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

在多租戶的場景下,磁盤配額是與租戶的 SLA(Service Level Agreement)的一部分。Greenplum 支持 Schema 和用戶級別的磁盤配額創建和管理。當磁盤使用量達到限額時,將阻止用戶繼續佔用磁盤空間。Greenplum 的磁盤配額是基於 Extension framework 和 Background worker framework 實現的。在 Extension framework 下,可以減少對 Greenplum 內核的侵入,易於 turn on/off。由於 Diskquota 的工作是使用獨立的進程完成的, 現在 Greenplum 也做到了 Diskquota 的進程的啟動無需重啟 Greenplum。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

針對用戶實際使用場景的痛點,我們對集群的擴容進行了優化和增強。Greenplum 6.0 引入了一致性哈希算法,新的算法不使得 Greenplum 不需要重新分佈集群所有數據,僅移動少量數據,也不需要重新啟動集群,從而有效減少因為增加機器節點需要挪動的數據量。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

此外,新版本的Greenplum引入了預寫日誌來進行主備節點間數據的同步。預寫日誌支持以增量的方式複製數據,相比於之前的FileRep,減少了網絡開銷,提高了響應速度。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

針對用戶場景中的痛點,Greenplum 6.0 開始支持複製表。例如:當用戶想將城市列表作為小表,每個節點上各放一份並行數據過濾,在之前的版本中是沒法做到的,但新的版本中使用複製表可以很容易實現。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

同時,在 Greenplum 6.0 中,我們升級了壓縮,在獲得更高壓縮率的同時,壓縮和解壓速度也得到了大幅提升。此外,我們也提供了對錶數據更為細粒度的權限管理。用戶可以控制列的訪問權限而不再是粗粒度的整個表。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

針對用戶想要更快的大批量倒入數據的情況,我們支持了 Unlogged 表。對該表的修改不需要寫日誌,所以性能比普通表要快得多,但是如果系統發生崩潰,數據可能會丟失。用戶可以根據自己的應用場景合理選擇。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

在 Greenplum 6.0 中,很多組件也進行了升級。為了更快的,低延遲,不重不丟的導入流式數據,我們研發了 Kafka 連接器。支持 exactly once 語義,支持並行消息處理、窗口,多種數據類型,和多字節分隔符等。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

監控方面,Greenplum監控工具GPCC也對Greenplum 6進行了支持,用戶無需運行額外的gpperfmon服務進程就可以獲取查詢的詳細信息。 此外,用戶還可以使用過濾器縮小歷史日誌的查詢範圍,並通過GPCC監控standby master的狀態 。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

除了傳統的數倉, Greenplum 還通過 Apache 頂級開源項目 MADLib 實現了對數據庫內高級分析的支持。Madlib 1.6 提供了強大的深度學習算法,以內置數據庫的方式在 Greenplum 中運行,將計算發送到數據節點,而不是數據拉到計算節點,性能更好。對圖像、文本、半結構化數據都能很好的支持。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

Greenplum 6.0 是 Greenplum 大數據平臺一個里程碑的版本。這次發佈與以往不同的是,基於開源協議的Greenplum 6.0社區版也在同一天發佈, 感興趣的愛好者可以前往 GitHub( https://github.com/greenplum-db/gpdb/releases/tag/6.0.0 )下載嘗試。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

如今,在 Greenplum 工程師的努力下,內核升級到 Postgres 9.5 的工作已經完成,在新的內核版本中,將包括 Upset,行級安全管理,Block Range Indices 等特性,排序性能和多CPU機器性能將大幅提升。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

同時,內核升級到 Postgres 9.6 的工作也已經開始,包括並行執行順序掃描,Join和聚合、避免在Vacuum操作期間不必要地掃描存儲頁 、全文檢索具備搜索短語能力(多個相鄰單詞)、postgres_fdw 支持遠程 Join,排序,更新和刪除等多個特性即將集成,性能也將大幅提升,尤其是在多 CPU 插槽服務器上的可擴展性方面 。Postgres 9.5 和 9.6 都將被包含到 Greenplum 7.0 版本中。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

此外,多中心數據複製正在有條不紊的開展中,包括預寫日誌、對故障轉移和故障恢復的支持,數據可用性的最大化,對冷熱待機的支持,對數據安全的提高等功能都將包含在Greenplum 7.0中。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

在 Greenplum 7.0 版本中,用戶還可以期待跨集群的查詢能力。該能力可以讓用戶可以快速可靠的跨Greenplum 集群查詢,從而達到“擴大” Greenplum 集群規模的作用,得以減少數據冗餘,可以支持跨集群表間Join和謂詞下推。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

Greenplum 官方監控工具 GPCC 報表和警報功能將在 Greenplum 7.0 版本進行增強。將支持更加詳細豐富的報表,並能夠對錶數據空間進行跟蹤和報警。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

此外,Greenpum 還提供了2種方式讓用戶得以自行進行擴展。第一種方式是通過 Procedure Language(PL), 另一種方式則是為開發人員提供透明的計算能力,首先會支持R,這就是 GreenplumR 項目。 通過這個項目,R開發者可以在本地編寫代碼,將R函數推送到 Greenplum 服務器上,在Docker容器中並行執行R函數。通過R函數在 Greenplum 上處理數據。將結果存儲在數據庫中或返回給客戶端。整個過程對R開發人員透明,同時也可以獲得 Greenplum 提供的強大的並行計算能力。

「GP6發佈」一篇文章讓你收穫 Greenplum 6.0 公開課所有乾貨

無論是內核,HTAP能力,還是關鍵業務的可用性、不斷優化的監控系統,Greenplum 一直在不斷創新,我們期待在接下來的 Greenplum 版本中,可以為用戶提供更多驚喜。

講師介紹

楊瑜 Pivotal中國研發工程總監


長期從事 Greenplum 內核的研發和管理工作,先後參與和負責基於 Greenplum 內核的機器學習庫 MADlib 的研發,Greenplum 內核和 PostgreSQL 內核持續歸併等工作,並幫忙組建 Greenplum 文本挖掘引擎 GPText 團隊,有著豐富的一線內核研發經驗。


分享到:


相關文章: