天天看點

PG資料庫生态選型思路與最佳實踐

内容簡要:

1.  資料庫發展的趨勢

2.  傳統企業級資料庫選型

3.  資料庫遷移的最佳實踐

4.  資料庫遷移至PG整體解決方案

第一部分--資料庫的發展趨勢

資料庫是IT資訊技術最基礎的一個環節,資料庫存在承載了一個企業、一個公司業務系統核心的資料。

1.資料庫發展曆程

在早期資料庫其實僅應用在國防和科學研究院,當時是大型機是在1950年開始的,那個時候的資料庫僅是一個層次資料庫或網狀資料庫,遠遠沒有形成現在我們這麼多的資料庫種類;

再往後到1970年,随着大型商業處理的需要,處理很多大型商業的一些資料,大型商業處理系統的引入了大型商業處理資料庫,這個時候的資料庫比較早的有oracle和IBM的DB2,是最早的一代關系型資料庫,那麼這兩個關系資料庫也一直引用到現在;

到1990年的時候,随着PC機和x86伺服器網絡的快速發展,資料庫也在不斷的疊代發展,企業資訊化、軟體、個人辦公、個人娛樂都會使用到資料庫,那麼這個時候資料庫除了原有的關系型資料庫庫以外,也有了資料倉庫用于做曆史資料分析,企業資料分析和PC單機資料庫用來支撐輕量級的應用、輕量級的軟體,讓個人更好的辦公和娛樂;

到2000年的随着網際網路的發展,媒體搜尋、社交以及電子商務娛樂的快速發展,對資料庫來說是一個百花齊放的是時代,對資料庫的需求也比較大,從關系型資料庫到資料倉庫,從商業資料庫到開源資料庫,類似于開源這個時候新興起來的有Mysql、PG、Redis、MongoDB來支撐這些網際網路業務和傳統企業業務;

到2015年以及到現在,可以稱之為是資料庫蓬勃發展的一個狀态,除了原有的開源資料庫、關系型資料庫和商業資料庫以外,雲廠商的發展又湧現出來一大批雲資料庫,比較知名的有類似于阿裡雲的PolarDB、分析資料庫的ADB、亞瑪遜的AmazonRDS、AmazonAurora、AmazonRedshift、微軟的AzureSQL等等都是比較流行的資料庫,這些資料庫和我們各行各業裡邊所應用到的計算機系統息息相關,我們在研發計算機系統或者在不斷的運維發展計算機系統的時候,我們應該怎麼樣來選擇資料庫?

PG資料庫生态選型思路與最佳實踐

3.資料庫生産/處理 由量變走向質度(預判)

對資料庫的預判,資料庫生産和處理,資料将會由量變走向一個質變的過程,為什麼說它是量變走向一個質變?

資料庫可以把它了解為是存放資料的一個倉庫,這個倉庫随着存放的資料越來越多,可能沒有辦法正常的運載,隻能尋求走向質變,來更好的來儲存、使用所存儲的這些資料,預判到底是什麼呢?

預計2020年全球資料規模應該會達到40zb,生産處理要求會智能化,為什麼要求智能化?

因為随着現在資訊技術的快速的發展,收到的資料,80%處理的是非結構化占比的一個資料,生産處理更多的要求實時化,現在的資料有線上分析業務系統和離線分析業務系統,線上分析業務系統其實分析的資料量比較少,到2020年——2022年,預計新業務采用實時分析的比例将會達到55%,原來t+1、t+2、t+3或者t+n的這種離線的業務分系統,沒有辦法滿足現代商業的一個發展,因為商業瞬息萬變。如果能更早拿到這種商業的預判,更可以對為我們的公司或者為我們整個業務的決策提供更有力的幫助。

最後一個資料雲化,知名分析機構認為在2023年的時候,資料庫的雲化規模将會達到75%,那麼資料庫為什麼會雲化呢?

主要有兩個原因,第一個原因是:雲,真的能給我們很好的一個彈性擴充能力; 第二個原因是:由傳統資料庫到雲資料庫的一個轉變,能更好的利用雲的一個紅利,賦予資料庫靈性,讓它能更好的來承載現有資料量不斷增多,業務不斷發展,對資料庫要求不斷的一個向量變化。

PG資料庫生态選型思路與最佳實踐

4.資料庫系統架構演進

在早期傳統開源也好,商業也好,資料庫它是一個單機的資料庫,由計算節點加本地磁盤形成了一個資料庫業務系統來進行服務,單機它使用到的就是我們的CPU和記憶體加本地磁盤,往後随着單機磁盤容量和單機計算節點的計算資源,沒有辦法滿足現有業務的需要,形成了一個共享的狀态,就是共享存儲資料庫的存儲共享的計算節點是多節點,它的優勢是易于實作事物的一緻性,無需多層複雜管理,那麼其優勢是怎麼實作的?

主要是我們用的是共享存儲,我們所并發的事物隻要在鎖的層次做好之後,那麼就可以實作事物的一緻性,但是它也有劣勢,劣勢就是DB節點的擴充能力受限,存儲擴充能力及IO性能可能依賴于更多的高端的共享存儲。

簡單來說,我們在重組共享狀态下的架構,DB節點要想橫向快速擴充的話,它可能會有節點的限制,而這個限制主要在兩方面,第一方面是由于使用的是共享存儲,節點越多,共享存儲的互動就會越頻繁,導緻成為一個性能的瓶頸;

第二個是我們在共享狀态下要保證兩個DB裡邊的事物,兩個DB裡各個計算節點的事物和計算節點運作的内容要一緻,造成了心跳網絡的一個加重。

舉個例子,Oracle資料庫最常用的是Oracle雙節點RAC叢集,那麼如果是3個節點、4個節點、5個節點、6個節點,Oracle是OK的,當它發展到20個節點,30個節點,這個時候它的clusterware就是一個很大的故障點,一般建議RAC叢集不要超過4個節點,超過4個節點的話,我們對運維能力、硬體要求就比較高。

第二劣勢是要想達到這麼大性能的一個要求,可能會對我們的存儲的規格要求比較高。你的存儲規格越好,你的IO和共享能力就越高,這是第二個狀态。

到雲資料庫這個狀态,雲資料庫利用雲的一個彈性分布式的架構,實作了資料庫分布式的引進,分布式資料庫它的優勢就是它有橫向擴充,這是非常便利的,能形成一個線性的橫向擴充。 資料庫資料是以多副本來存儲的,無需共享存儲,它的優勢就是可以不斷的擴充,在需要的情況下,每擴充一個,它的IO、讀取,都會呈線性比例的一個增加。

如果是計算存儲的能力需要擴充的,那麼它的靈活性不會很足,因為這種擴充,需要對應用有侵入,由于其存儲是分布式,DB計算節點也是分布式,要求對資料庫分庫和分表。在分布式查詢的時候,分布式事務處理開銷要比集中式的狀态大很多,由于資料和計算節點都是分布的,必須要有分布式的處理能力才可以。如果分布式處理能力比較弱,那麼這個架構就不适合目前業務應用所需要,隻有應用在這個架構上做良好的适配和改造,才可以滿足。

這兩個架構各有劣勢、優劣,在選擇的時候可以根據能提供的人力和物力來進行最佳選擇。

PG資料庫生态選型思路與最佳實踐

5.  Postgre SQL生态的定位

PG資料庫作為世界上最強大的一個開源資料庫,PG生态的定位是什麼?

第一PG的核心能力,PG資料庫支援混合負載列式存儲,比如說Greenplum,GPU并行加速、向量計算,這是一個優勢。

最大特點是包容、開放,PG是支援外部插件的,可以以外部插件的形式開發很多的插件, PG本身包含很多能力。比如說PG對時空、技術、文本是天然支援的,有postgis的插件,有其他第三方公司的插件,PG發展到11、12版本時,其對于機器學習、多元計算圖譜、向量模拟等,都有很大的能力來做很多的科學計算。

它還有很重大的商用價值。

第一個特點:

就是PG的licence,很多的商用資料庫很是基于PG核心進行開發,比如美國的EnterpriseDB,中國也有很多基于PG核心開發的資料庫,由于它的特性,使其成為了傳統資料庫替換的一個優選目标。

第二個特點:

因為PG資料庫能力非常強,更像商業的一個資料庫。比如Oracle、DB2在做異構切換的時候,最多推薦的是PG分支相關的資料庫,因為My cycle本身對事物、業務能力要求比較高,PG由于它的綜合能力比較強,針對這些内容,我們是推薦PG資料庫的。

第三個特點:

在雲的紅利加乘上,它的彈性計算能力是非常強的,比如說在阿裡雲有RDSPG,PolarDBPG都可以借助雲的能力來實作快速的sgin-up、sgin-out的擴充。

在社群這塊,因為PG社群本身是非常強大的,有全球的社群,是以這塊有一個非常大的特性——相容Oracle, Oracle資料庫是全球第一大商用資料庫也是使用者最多的資料庫。

近年來Oracle資料庫的地位一直在不斷的受到挑戰,最主要的原因就是 Oracle資料庫本身比較貴,也比較成熟,但其實我們并沒有真正的用到所有的Oracle資料庫的feature。

為了降低成本,同時增加效率,我們會選擇其他的資料庫進行替代,例如PG,因為PG本身有很多相容Oracle的一些feature,是可以快速的實作傳統資料庫和應用到 PG資料庫應用的一個快速切換,就是PostgreSQL整個生态的一個定位。

PG資料庫生态選型思路與最佳實踐

第二部分--傳統企業級資料庫的選型

1.早期傳統企業級資料庫選型

為什麼說是傳統企業級資料庫的選型呢?

其實在傳統企業資料庫的選型很早就有定論,在早期傳統企業資料庫在使用的時候的三大件:Oracle、SQLserver和DB2任選其一保證是沒有問題的,那個時候資料庫的能力這三家是最大,而且在開發的過程中,我們隻要用到了這三大件,基本上不用考慮資料庫額外的架構需求,因為這三種商業資料庫已經幫我們定義好了,但是它也有一個弱勢,就是閉源可擴充性,針對于現在的開源資料庫和語音資料庫來說比較弱,如果傳統的企業資料庫的it資訊系統,向新的資訊系統的架構演變,會遇到資料庫的瓶頸,主要是橫向擴充、縱向擴充。

PG資料庫生态選型思路與最佳實踐

傳統企業客戶IT現狀

怎麼樣把傳統的資料庫替換到新的資料庫架構?

傳統企業的資料庫客戶IT的現狀:

傳統企業資料庫首先它肯定是IDC它會有一個成本,這個成本就是我們實際運維的資料庫,它都有哪些?我們也做了一個列舉,比如說資料庫更新檔及更新、應用更新檔及更新、故障停工性能調整、持續的it負擔、網絡維護與更新等等,都是我們it傳統企業面臨的成本。

傳統企業的成本總結為三點,第一點就是無法滿足現有企業的快速部署,因為傳統企業部署就拿資料庫來說部署一套資料庫,首先要購買硬體、安裝作業系統、購買軟體、安裝資料庫作業系統再來部署;

第二點是彈性拓展能力不足,彈性拓展能力不足導緻企業每年在做成本規劃的時候,必須要考慮到企業最高峰的時候所需要的計算資源。一般來說一家企業它的業務高峰應該是在固定的時間段或在一段時間裡邊,不會全年都是業務高峰,為了滿足這個高峰點,必須要準備高峰值所預估到的硬體,低于硬體的話,是沒辦法正常運作的;

第三點就是老舊的系統建設導緻資源被大量的浪費,很多老舊的系統它依然存在,但是它的存在的已經不是核心系統,卻依然要維護,由于維護的成本導緻我們現在的基層資源比較浪費,這是整個傳統企業IT的一個現狀。

PG資料庫生态選型思路與最佳實踐

3.全球雲資料庫市場格局

我們可以把它了解為全球資料庫市場的格局。在Gartner分析象限裡面,2019年國内阿裡巴巴營收已經排到了第三位,在亞馬遜和微軟之後,2019年的Gartner資料庫魔力象限裡,阿裡雲也是國内唯一一家資料庫公司進入到了挑戰者象限。

中國IDC的報告中看到,阿裡雲的市場佔有率首次超過了Oracle市場,排在了中國資料庫市場的第一位。當然資料庫市場佔有率是雲資料庫加傳統IDC部署的這種模式,如果單單隻是傳統的IDC部署的模式的話,還是oracle資料庫老大,因為畢竟他是Number one的商業資料庫。從這分析報告裡可以看,資料庫在不斷的往雲的方向進行發展,這是一個趨勢。

PG資料庫生态選型思路與最佳實踐

4.市場洞察與研判:Oracle(One world Conference)

傳統的資料庫未來會是兩個方向,第一個方向,雲資料庫,比如說雲上的各種資料庫服務;第二個方向,可以把雲部署到我們的機房,就是我們自己做專有雲,或者是私有雲。 私有雲和公共雲的能力基本是一緻的,來為我們提供更好的雲資料庫服務。

PG資料庫生态選型思路與最佳實踐

5.阿裡雲資料庫的特色

雲資料庫的特色(以阿裡雲資料庫為标準),基本歸結為四大特點:

第一點:開箱即用。

不需要做任何操作,不需要做任何硬體準備,隻要在雲服務上進行購買就可以自動使用;

第二點:更快。

一般來說,傳統的資料庫在使用的時候是需要有一個DB來進行運維的,來幫我們資料庫運作更快。使用雲資料庫本身雲平台就會對核心和參數有很好的優化,來保證我們所購買的資料庫是非常快的,同時有雲的快速彈性拓展能力;

第三點:更穩。

在雲上會保證雲資料庫的可用性。雲資料庫本身對于硬體來說,有一個穩定的硬體選型和壓測,不需要對硬體來進行考慮。

第四點:更安全。

傳統企業資料庫裡,我們都要求資料庫是要有備份的,沒有備份肯定是不對的,雲資料庫是有很多的備份手段和審計手段,以及很多傳輸的加密手段來幫助我們。就拿阿裡雲資料庫來說,阿裡雲資料庫它有多種類型,包括PGMySQL開源類型在内的也有很多商業的、阿裡雲資源的資料庫,比如說PolarDB、ADB等等,這些資料庫都是可以使用的。

阿裡雲裡有中國最強大的資料庫研發團隊,提供了豐富的資料庫選型,100%進入生态,客戶無需更改業務,如果我們是使用PG的話,是可以100%遷移到阿裡雲上面的,所有的核心都是經過了雙11高并發和穩定性考驗的。雙11高并發和穩定性考驗不隻是阿裡内部的生态,阿裡外部也有很多曆經雙11的企業在使用阿裡雲的資料庫,也是經曆了考驗的。

PG資料庫生态選型思路與最佳實踐

6.傳統企業資料庫遷移(Oracle)

資料庫遷移為什麼比較難?

資料庫遷移它不僅僅是把一個資料庫裡面的資料遷移到另一種資料庫裡面的資料那麼簡單,它還要考慮到資料庫遷移之後,原有的應用是否能在現有的資料庫裡邊更好的來使用。這個問題要考慮到不同資料庫之間它可能會所有對象結構不相容、SQL不相容、架構不穩定。

那麼怎麼樣能快速的做到或者是有一個标準化的産品能做到?

阿裡雲推出了一個資料庫遷移的一個方法論和工具集,來幫助我們來快速的進行遷移。

這個方法論就是借助阿裡雲資料庫應用遷移和分析産品,來快速的幫我們做傳統企業資料庫,類似于Oracle、DB2做一個業務調研和可行性評估。業務調研和可行性評估以自動化能力分析我們原有的資料庫有哪些特性,在目标資料庫裡面是否支援,還會給我們一個可遷移的可行性報告,我們根據可行性報告有一個poc驗證,poc驗證完了之後,就可以做選型決策。

選型決策完成我們适配改造資料遷移、測試遷移、隔接上線,上線之後護航保障方案沉澱,整個的一個标準化的一個體系,來幫助我們快速的把傳統資料庫到目标資料庫做一個選型。

目标資料庫可能是OLTP場景,也可能是混合場景,也可能是一個OLAP場景,我們在阿裡雲上都對應的資料庫,那麼針對開源來說,我們有對應的資料庫,比如說阿裡雲上有RDS-PG,我們可以來進行選擇,那麼在阿裡雲自研有PolarDB PG,也是支援PG的,在所有的解決方案裡是支援公共雲、專有雲和混合雲的。

這套工具方法論我們和中國信通院聯合多家資料庫廠商也做了分析,我們聯合做出來一個資料庫及應用遷移指南,整個操作阿裡雲也有原廠服務和合作夥伴服務,來支撐我們快速的完成整個的一個沉澱度的遷移。

PG資料庫生态選型思路與最佳實踐

7.企業級資料庫PG選型

對比企業級的應用,在PG這塊有哪些選型?

PG可以把它簡單分成兩個分支:

第一個分支是:關系型資料庫,就是開源的PG;

第二個分支是:分析型資料庫,分析資料庫比較流行的或者是大家比較熟知的Greenplum是基于PG來進行研發,可以提供大資料并行處理的能力,可以把它建構成一個很好的資料倉庫。

還有其他商業資料庫,也是支援PG的,比如說阿裡雲的PolarDB-PG、ADB-PG、 RDS-PG都是原生百分百相容PG的,那麼其他還有EnterPriseDB或者是其他商業性資料庫都是可以的。那麼針對PG生态,我們在做傳統企業資料庫選型的時候,完全可以借助PG這些分支來替換現有的資料庫和現有的技術架構。它首先能幫助我們降低成本,因為Oracle、DB2、SQLServer它們的成本相對來說是比較高的,如果我們把一個商業的資料庫用開源的資料庫替代的話,這個成本來說是巨大的,我們的收獲是比較高的。

PG資料庫生态選型思路與最佳實踐

8.ORACLE數字化遷移方案的“四步法”

整個的選型,我們把它分成“四步法”,以oracle為例,更簡練來說,就是評估、決策、實施、優化:通過自動化工具來評估,評估完成之後,根據報告來進行決策,決策完成之後,就可以組建團隊,組建方案來進行實施了。

整個的 Oracle的遷移“四步法”,可以把它了解為三件套的工具:ADAM+POLOARDB+DTS三件套

PG資料庫生态選型思路與最佳實踐

目标資料庫的選擇,就是POLARDB, POLARDB是阿裡雲自主研發的通用關系型資料庫,100%相容MySQL、PG資料庫更高度相容ORACLE文法,這個是我們資料庫的一個能力。它是基于分布式架構的,它和普通PC伺服器提供商用資料庫的能力相當,但是成本隻有10%,具備高性能、高可用性、高可耗,高耐用、高安全、高應用性,這都是PolarDB可提供的能力。

PG資料庫生态選型思路與最佳實踐

9.PolarDB架構的優勢

第一大優勢:智能代理

能提供自動讀寫分離的能力,它是一個主節點,多個從節點,它有智能讀寫自動分離的能力,可以自動化的把寫SQL路由到主節點上,隻讀SQL路由到隻讀節點上,不需要我們做任何應用改造,在路由的時候它有一個負載均衡,會平均的把這些讀業務配置設定到各個詞組節點上。

第二大優勢:計算節點

計算節點是存儲與計算是分離的,在計算節點有兩個保證,第一個是一寫多讀支援很好的一個線性擴充,這個線性擴充按量按需擴充的,當我們在業務量比較大的時候,我們就可以進行擴充。當我們業務量不是很大的時候,我們就可以縮回來,降低配置,就是按量付費。

 怎麼樣能保證主節點和備節點資料讀寫是一緻的呢?有一個實體日志能實作把主節點更新的資料快速的同步到重節點上面。

第三大優勢:存儲節點

用的是多副本的分布式存儲,來保證整個資料是一緻性的。存儲和計算節點我們用的是RDMA網絡,是非常快速的。

PG資料庫生态選型思路與最佳實踐

10.PolarDB Box一體機

快速的把PolarDB Box一體機帶到我們的機房裡面,有三大優勢:

第一大優勢是:相容。

高度相容Oracle文法,降低我們高達95%遷移人力,1000+項相容性涵蓋特色,我們有一個資料庫的開發手冊;

第二大優勢是:易用。

就相當于你把阿裡雲的PolarDB搬到了我們的機房,實作了開箱即用,在阿裡雲上怎麼操作PolarDB,在機房就怎麼操作PolarDB;

第三大優勢是:創新。

在PolarDB上增加了Ganos插件,它可以支援我們5G+IoT全新SQL查詢,專用于資料定位,能實作人、時、地、物、事件綜合的一個處理。在10億級資料查詢,查詢“十萬位點+事件”資訊的時候實作達到秒回。這個能力已經運用到很多企業地圖,比如說像恒力中恒、高德都在使用。

PG資料庫生态選型思路與最佳實踐

11.PolarDB-PG提供完整的生态工具

l  第一個生态工具是DMS可以支援資料開發、資料管理、資料安全;

l  第二個生态工具是cloudDBA能實作自動化的監控運維;

l  第三個生态工具是DTS能快速的做資料全量遷移;

l  第四個生态工具是DBS是做資料備份的;

l  第五個生态工具DAS和DMS是資料安全的考慮。在dms上也有一個資料稽核、資料脫敏、SQL注入檢查的一個能力;

l  第六個生态工具DAS資料自治管理,可以自動優化SQL,自動SQL限流,根據資料庫的複雜來彈性伸縮。這是整個PG生态。

第三部分--最佳實踐

1.ORACLE架構遷移标準化解決方案

我們把傳統的資料庫以Oracle為代表分為兩類,前一類是已有業務,對事物是強制性的,存在很多表的撞演和複雜的SQL,這個時候遷移,如果我們使用的oracle特性比較少的話,隻是用了關系型資料庫特性,推薦直接簽到PT上面;

如果我們用到的oracle特性比較多,可以選擇阿裡雲的PolarDB PG、PolarDB Oracle相容闆來實作快速的遷移,因為它本身對oracle做了很多的相容,PolarDB還有一個特色,就是它的單庫支援100TB。

如果超過100TB的話,我們有兩個解決方案:

第一個解決方案是可以把這些曆史資料放到外部表裡,外部表存放的位置OSS存儲,這個是非常廉價的;

第二個解決方案是可以專門建構ADB for PostgreSQL的資料倉庫,這個資料倉庫可以快速的實作實時資料處理。它可以直接實時的把PolarDB PG或者PostgreSQL裡邊的資料實時同步到ADB裡邊,如果我們要做業務分析的話,實時傳回來。

當然了我們也可以選擇新的分布式架構,這個業務可能是我們新業務要重構,或者是它的事物比較弱,沒有狀态的架構也需要分布,可以選擇阿裡雲的RDS PG加分布式服務來實作一個全分布式的架構。

這是我們提供的 Oracle架構前移的一個标準化的解決方案。

PG資料庫生态選型思路與最佳實踐

2.資料庫遷移至PG整體解決方案

混合性的場景,就是存量業務遷移強事務一緻,有多表JOIN,有GIS地理資訊,還有一些分析型的内容。這裡還是以oracle為例,如果我們用到的oracle特性比較強,我們叫強o特性,我們可以選快速遷移的話,可以直接遷移到POLARDB(Oracle相容闆)上面。

PG資料庫生态選型思路與最佳實踐

如果是弱o特性的話,對性能要求不是很高的話,我們可以遷移到RDS PG上面,但是如果我們對性能要求比較高,需要有很強的動态擴充能力的話,我們建議是遷移到POLARDB PostgreSQL資料庫上面。如果資料量比較巨大的話,用外部表或者是直接建構一個資料倉庫。

針對于OLTP場景,如果這個業務是新業務重構,事物要求不是很強,是弱事物的,而且很多表它是無狀态的架構,也可以很好的支援分庫分表,但是它要求有無限的擴充能力,那麼這個時候建議遷移到PolarDB-PG和RDS PG,但是 PG可能根據我們的業務量發展,我們有分表需求的話,我們也可以在上面加分布式資料庫的服務。

最後由于它的分布式業務,做OLAP是不行的。如果我們需要做OLAP類的業務場景,建議單獨的建構資料倉庫,來為我們提供實時的資料分析。

很多業界科學家認為未來是從BIGDATA轉向FASTDATA,未來大資料和現在大資料是有一些不一樣的。現在的大資料雖然也是大資料,但是它在分析資料時可能存在一個時間差,而這個時間差會對我們的業務産生一點點影響;比如說如果是一個實時分析我們可以馬上定位、決策,一個公司的商業能力,要是有時間差存在,可能會産生影響。FASTDATA就是實時傳輸、實時分析給予我們一個實施回饋,隻要分析模型OK,就能做出一個正确的選擇。這就是我們對未來大資料的研判。