天天看點

【學習資料】第7期企業資料庫選型規則

背景

企業資料庫選型規則。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#%E4%B8%80%E6%95%B0%E6%8D%AE%E5%BA%93%E9%83%A8%E7%BD%B2%E5%BD%A2%E5%BC%8F 一、資料庫部署形式

随着硬體發展,名額上會有變化。

部署形式決定了容量上限,計算能力上限,讀寫帶寬上限,RPO,RTO名額,适應場景。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#1%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E4%BE%8B%E5%A6%82pgcitus%E6%8F%92%E4%BB%B6 1、分布式部署(例如pg+citus插件)

容量上限:100節點以上,PB級。

計算能力上限:100節點以上,6400核以上。

讀寫帶寬上限:100節點以上,200GB/s以上。

RPO:如果每個計算節點都采用多副本存儲,RPO=0。

RTO:如果每個計算節點都采用HA,RTO可以做到1分鐘内。

使用限制:有一些SQL限制。

适應場景:應用代碼可控程度高的情況下,适合TP和AP業務。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#2%E5%8D%95%E8%8A%82%E7%82%B9%E6%9C%AC%E5%9C%B0%E5%AD%98%E5%82%A8 2、單節點本地存儲

容量上限:10TB級。

計算能力上限:64核級。

讀寫帶寬上限:2GB/s級。

RPO:RPO無保障。

RTO:RTO無保障。

使用限制:SQL無限制。

适應場景:測試環境,非生産環境,對資料庫RPO,RTO都沒有要求的環境。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#3%E5%8D%95%E8%8A%82%E7%82%B9%E5%A4%9A%E5%89%AF%E6%9C%AC%E5%AD%98%E5%82%A8 3、單節點多副本存儲

容量上限:32TB級。

RPO:單機房RPO=0,(如果存儲支援跨機房多副本,可以做到多機房RPO=0)。

RTO:10分鐘級。

适應場景:非核心場景生産、測試。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#4%E5%8F%8C%E8%8A%82%E7%82%B9%E5%85%B1%E4%BA%AB%E5%AD%98%E5%82%A8 4、雙節點共享存儲

RTO:1分鐘級。

适應場景:核心、非核心場景生産。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#5%E5%8F%8C%E8%8A%82%E7%82%B9%E4%B8%BB%E5%A4%87%E5%BC%82%E6%AD%A5%E5%A4%8D%E5%88%B6 5、雙節點主備異步複制

容量上限:32TB級(使用遠端存儲),10TB級(使用本機存儲)

RPO:10GB網絡,REDO延遲毫秒級、1MB以内。(支援跨機房部署)。心跳機制可確定RPO < 60秒

适應場景:非核心場景生産。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#6%E5%8F%8C%E8%8A%82%E7%82%B9%E4%B8%BB%E5%A4%87%E5%8D%8A%E5%90%8C%E6%AD%A5%E5%A4%8D%E5%88%B6 6、雙節點主備半同步複制

RPO:

無節點或單一節點異常時,可保證RPO=0。

兩個節點都異常時,RPO取決于備份延遲。采用基于PG流複制的持續REDO備份,可以做到RPO毫秒級。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#7%E4%B8%89%E8%8A%82%E7%82%B9%E5%8F%8A%E4%BB%A5%E4%B8%8A%E5%A4%9A%E5%89%AF%E6%9C%AC%E5%85%A8%E5%90%8C%E6%AD%A5%E5%A4%8D%E5%88%B6 7、三節點及以上多副本全同步複制

小于半數節點異常時,可保證RPO=0。

半數以上節點異常時,RPO取決于 1、10GB網絡,REDO延遲毫秒級、1MB以内。2、備份延遲。采用基于PG流複制的持續REDO備份,可以做到RPO毫秒級。

适應場景:核心場景生産。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#8%E8%AE%A1%E7%AE%97%E5%AD%98%E5%82%A8%E5%88%86%E7%A6%BB%E5%AD%98%E5%82%A8%E5%A4%9A%E5%89%AF%E6%9C%AC%E6%AF%94%E5%A6%82%E9%98%BF%E9%87%8C%E4%BA%91polardb-pg 8、計算存儲分離(存儲多副本)(比如阿裡雲POLARDB PG)

容量上限:100TB級。

計算能力上限:16節點,1024核級。

讀寫帶寬上限:32GB/s級。

RTO:15秒級。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#9%E8%AE%A1%E7%AE%97%E5%AD%98%E5%82%A8%E5%88%86%E7%A6%BB%E5%AD%98%E5%82%A8%E5%A4%9A%E5%89%AF%E6%9C%AC-%E5%8F%8C%E6%9C%BA%E6%88%BF%E5%8D%8A%E5%90%8C%E6%AD%A5 9、計算存儲分離(存儲多副本)+ 雙機房半同步

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#10%E8%AE%A1%E7%AE%97%E5%AD%98%E5%82%A8%E5%88%86%E7%A6%BB%E5%AD%98%E5%82%A8%E5%A4%9A%E5%89%AF%E6%9C%AC-%E5%A4%9A%E6%9C%BA%E6%88%BF%E5%A4%9A%E5%89%AF%E6%9C%AC%E5%85%A8%E5%90%8C%E6%AD%A5 10、計算存儲分離(存儲多副本)+ 多機房多副本全同步

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#11%E5%8F%AA%E8%AF%BB%E8%8A%82%E7%82%B9 11、隻讀節點

适應場景:擴充讀能力。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#12%E9%9D%9E%E6%A0%B8%E5%BF%83%E5%8A%9F%E8%83%BD 12、非核心功能

12.1、業務透明的讀寫分離

12.2、跨庫互動

适應場景:跨庫DBLINK,跨庫外部表,跨庫物化視圖。

12.3、單元化

适應場景:多執行個體共享少量資料,多寫。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#%E4%BA%8C%E4%BA%91%E4%BA%A7%E5%93%81%E5%BD%A2%E6%80%81 二、雲産品形态

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#1%E5%9F%BA%E7%A1%80%E7%89%88%E5%8D%95%E6%9C%BA%E5%A4%9A%E5%89%AF%E6%9C%AC%E5%AD%98%E5%82%A8pg-10 1、基礎版(單機多副本存儲)PG 10

目前容量上限:2 TB

未來可達32TB級。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#2%E5%8F%8C%E6%9C%BA%E7%89%88%E5%BC%82%E6%AD%A5%E5%A4%8D%E5%88%B6pg-94-10ppas-93-10 2、雙機版(異步複制)PG 9.4, 10、PPAS 9.3, 10

目前容量上限:6 TB

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#3%E5%8F%8C%E6%9C%BA%E7%89%88%E5%8D%8A%E5%90%8C%E6%AD%A5%E5%A4%8D%E5%88%B6pg-11 3、雙機版(半同步複制)PG 11

目前容量上限:32 TB

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#4%E5%8F%AA%E8%AF%BB%E5%AE%9E%E4%BE%8B 4、隻讀執行個體

擴充讀能力。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#5%E8%AE%A1%E7%AE%97%E5%AD%98%E5%82%A8%E5%88%86%E7%A6%BB%E7%89%88-pg-11ppas-11 5、計算存儲分離版 PG 11、PPAS 11

16個計算節點,讀寫分離。

目前容量上限:100 TB

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#pgppaspolardb-pg%E5%8C%BA%E5%88%AB PG、PPAS、POLARDB PG差別

除以上差別以外,還有如下差別(pg ppas polarddb選擇評判标準:資料量,可用性,可靠性,是否有去O需求,成本):

1、pg社群版。

2、PPAS相容PG、同時高度相容ORACLE。

相比社群版PG,新增AWR報告、SQL防火牆、資料庫使用者級資源隔離、索引推薦等進階功能。

3、POLARDB PG。

相容PG、同時高度相容ORACLE。

相比PPAS、PG,容量達到100TB,計算存儲分離,計算可擴充到16節點,支援超低延遲讀寫分離。

擴容速度快。(擴容不需要遷移資料,非常之快)

可用性高,恢複速度快。(恢複不需要REPLAY WAL,秒級恢複)

備份、恢複速度快。(存儲快照,秒級備份)

由于一份存儲支援讀寫分離(PG PPAS使用流複制方式,每個隻讀節點一份存儲),POLARDB成本更低廉。

存儲采用按實際使用量付費,不需要規劃存儲大小,彈性更好。

自研主打産品,未來産品黑科技會集中增加到POLARDB。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#%E4%B8%89%E8%A1%8C%E4%B8%9A%E5%90%88%E8%A7%84%E8%A6%81%E6%B1%82 三、行業合規要求

一些行業對資料庫系統的合規要求:

1、SQL審計

2、擴充性

3、可用性

4、可靠性

5、備份保留時間

6、備份可恢複時間點

7、閃回

8、資源回收筒

9、存儲加密

10、資料檔案加密

11、類型加密

12、資料通路鍊路加密

13、連接配接認證加密

14、加密KEY管理形式

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#%E5%9B%9B%E6%95%B0%E6%8D%AE%E5%BA%93%E7%89%88%E6%9C%AC%E6%8E%A8%E8%8D%90 四、資料庫版本推薦

除非業務有特殊要求。選新不選舊(新版本建議發行2個小版本後使用)。

例如目前PG最新版本為11,已釋出兩個小版本,推薦使用11最新小版本。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#%E4%BA%94%E6%95%B0%E6%8D%AE%E5%BA%93%E9%80%89%E5%9E%8B%E6%8E%A8%E8%8D%90 五、資料庫選型推薦

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#1-%E8%80%81%E4%B8%9A%E5%8A%A1%E8%BF%81%E7%A7%BB 1 老業務遷移

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#%E5%8E%9F%E6%9D%A5%E4%BD%BF%E7%94%A8%E4%BB%80%E4%B9%88db-pg-edb-ppas-oracle-sybase-db2-ms-sql 原來使用什麼DB? (PG, EDB PPAS, oracle, sybase, db2, ms sql)

1、pg -> pg

2、edb ppas -> ppas

3、oracle -> pg (使用者積極配合改動,并有傾向使用開源版)

平安案例

郵儲案例

中國人壽案例

4、oracle -> ppas (使用者期望少改動)

中航信案例

大量ZF,傳統行業案例

使用ADAM,大量成功去O案例。

https://promotion.aliyun.com/ntms/act/ppasadam.html

5、sybase, db2 -> pg

sybase (鐵老大案例)

db2 (蘇甯案例)

6、ms sql -> pg

(康恩貝案例)

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#2-%E6%96%B0%E4%B8%9A%E5%8A%A1 2 新業務

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#1%E5%A6%82%E6%9E%9Coracle%E5%8F%AF%E4%BB%A5%E5%85%8D%E8%B4%B9%E4%BD%BF%E7%94%A8%E7%94%A8%E6%88%B7%E9%80%89%E6%8B%A9oracle%E7%9A%84%E6%A6%82%E7%8E%87%E6%98%AF%E5%A4%9A%E5%B0%91%E5%A6%82%E6%9E%9C%E8%B6%85%E8%BF%8750%E7%9A%84%E6%A6%82%E7%8E%87%E9%80%89%E6%8B%A9oracle%E6%8E%A8%E8%8D%90%E5%88%B0pgpolardb-pg 1、如果Oracle可以免費使用,使用者選擇Oracle的機率是多少?如果超過50%的機率選擇Oracle,推薦到PG、POLARDB PG。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#2%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E6%8A%80%E6%9C%AF%E6%A0%88 2、目前使用者技術棧

2.1、Oracle -> PPAS、POLARDB PG

2.2、sybase, db2 -> pg

2.3、ms sql -> pg

2.4、pg -> pg

2.5、edb ppas -> ppas

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#3%E4%B8%9A%E5%8A%A1%E5%A4%8D%E6%9D%82%E5%BA%A6 3、業務複雜度

3.1、複雜業務(有較複雜SQL,較複雜業務邏輯) -> PG

例如: 企業crm, erp, oa, 财務, 銷售, 經營分析系統,GIS地理資訊業務,等。 (此類場景典型PG客戶:用友,sap,odoo)

3.2、簡單業務 -> PG (同樣完全可以勝任)

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#4%E4%B8%9A%E5%8A%A1%E5%88%86%E7%B1%BB 4、業務分類

4.1、純AP

100TB 以内資料,純AP(T+1):POLARDB PG。

32TB 以内資料,純AP(T+1):PG 11。

4.2、實時分析:WHERE條件過濾後資料量億級。 POLARDB PG。 PG 11。

4.3、TP

PG, PPAS, POLARDB PG

4.4、混合場景(有TP,有AP)

100TB以内資料量:

POLARDB PG

32TB 以内資料量:

PG 11

6TB 以内資料量:

PG 10, PPAS 10

産品AP能力主要包括:并行計算、GPU加速、JIT、向量計算、流計算、物化視圖、豐富的分析函數、豐富的視窗查詢函數、HASH JOIN、MERGE JOIN、豐富的内置函數、豐富的PLSQL文法。

産品TP能力:單節點 百萬級QPS

4.5、海量資料,大量為冷資料,不能删除,極少查詢。

pg, ppas, polardb pg,均支援OSS_FDW外部表,冷存儲。查詢對業務透明。

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#5%E4%B8%9A%E5%8A%A1%E6%9C%89sharding%E9%9C%80%E6%B1%82%E4%BD%86%E6%98%AF%E4%B8%8D%E6%83%B3%E6%94%B9sql%E9%80%82%E9%85%8Dshardingsharding-%E5%B8%A6%E6%9D%A5%E7%9A%84sql%E4%BD%BF%E7%94%A8%E9%99%90%E5%88%B6%E5%8C%85%E6%8B%AC%E8%B7%A8%E5%BA%93%E4%BA%8B%E5%8A%A1%E8%B7%A8%E5%BA%93%E6%9F%A5%E8%AF%A2%E5%A4%8D%E6%9D%82sql%E7%BB%B4%E5%BA%A6%E8%A1%A8%E8%BF%87%E5%A4%A7%E7%AD%89%E9%97%AE%E9%A2%98 5、業務有SHARDING需求,但是不想改SQL适配sharding(sharding 帶來的SQL使用限制,包括跨庫事務,跨庫查詢,複雜SQL,次元表過大等問題)

https://github.com/digoal/blog/blob/master/197001/20190214_01.md#6%E4%B8%9A%E5%8A%A1%E6%9C%89%E5%A4%9A%E6%A8%A1%E9%9C%80%E6%B1%82%E5%B9%B6%E4%B8%94%E8%A6%81%E6%B1%82%E6%95%B0%E6%8D%AE%E4%B8%80%E8%87%B4%E6%80%A7%E5%AE%9E%E6%97%B6%E6%80%A7 6、業務有多模需求,并且要求資料一緻性,實時性

如果不要求實時性,一緻性,可以再考慮将資料同步到其他産品

6.1、全文檢索、模糊查詢(tsvector, tsquery, pg_trgm技術)

6.2、任意字段多元度組合實時查詢(smlar, rum, gin, bitmap scan, varbitx, roaring bitmap等技術)

例如:實時畫像系統、營銷系統。

6.3、文本相似查詢(pg_trgm技術)

6.4、向量相似查詢(cube技術)

例如:相似推薦系統

6.5、圖像相似查詢(imgsmlr技術)

6.6、GIS地理資訊業務(postgis, brin, gist技術)

例如:天文、氣象、地震、國土、測繪、車聯網、物聯網

6.7、時空軌迹、混合場景業務(ganos, postgis, brin, gist技術)

例如:餓了麼,點我達,打車,車聯網,

6.8、時序類(timescaledb 技術)

6.9、流計算(pipelinedb 技術)

6.10、圖式搜尋(CTE 技術)

例如:風控、族譜、社交、内容推薦、使用者推薦等 業務。

多模類業務,性能功能名額參考HTAP測試

《HTAP 用例測試,性能名額》