HTAP資料庫(OLTP+OLAP)-資料庫典型架構優缺點剖析(shardVSshared)
標籤
PostgreSQL , 共享分散式儲存 , 儲存計算能力。
背景
隨著網際網路的發展,資料爆炸性的增長,資料庫逐漸成為了很多業務的絆腳石,很多業務也哭著喊著要上分散式資料庫(個人認為大部分是高估了自己的業務)。
分散式資料庫又分很多流派,比如重點要說的sharding和共享分散式儲存的架構,它們有著什麼樣的優缺點呢?
sharding vs 共享分散式儲存 資料庫架構
如果要在單機並行能力的前提下,再實現多機器並行,可以有兩種玩法:
第一種玩法,可以帶其他產品一起玩,用PostgreSQL 10+的fdw+append parallel+繼承+pushdown(join,agg,where,sort,…)+merge sort,可以實現對任意產品的多機並行(比如後端可以是MySQL)。
第二種玩法,更加的先進,節點間不僅共享資料,而且能直接通訊,每個節點運算資料的一部分(至少需要改進優化器實現這個功能),多機並行,任意表任意欄位JOIN,多階段聚合等都能上陣,簡單來說就是具備MPP的能力。
citus有這樣的潛質,當然需要適配共享儲存架構進行改造。
點評
1、作為OLTP業務,使用sharding帶來的問題較多,有點得不償失。
1、1. 擴容不方便(資料重分佈)
1、2. 分佈鍵變更很麻煩
1、3. 分佈鍵選擇(架構設計)謹慎
1、4. 跨庫JOIN效能差,甚至只能按分佈鍵JOIN,其他欄位不支援JOIN。(因為這種產品架構資料節點之間是孤島,資料需要在孤島之間互動,需要通過上層的中介軟體節點,而這樣的話,如果有跨庫JOIN,就需要將資料收到中介軟體節點再JOIN,效能差是可想而知的。)
1、5. 分散式事務效能差,甚至不支援分散式事務。
1、6. SQL限制多、功能缺失多
1、7. 應用改造成本巨大
1、8. 全域性一致性時間點恢復幾乎不可實現
2、作為OLAP業務,如果使用sharding(MPP)架構,是值得的,可以充分利用多機的計算能力、IO能力,提高處理吞吐,例如阿里雲的HybridDB for PG。
而如果使用中介軟體的sharding形態,則不適合OLAP業務。(原因是節點間不支援互通,在AP中有大量的JOIN需求,節點間不同帶來一個問題,JOIN需要將資料匯聚到中介軟體節點執行,導致非常慢,幾乎不可用)
HDB PG是MPP形態的產品,計算節點之間可以相互通訊,任意列的JOIN都不存在問題,同時還支援行列混合,多階聚合的功能,是專門為OLAP場景打造的一款PB級分散式分析資料庫。
《阿里雲HybridDB for PostgreSQL實踐 – 多階聚合》
HDB PG支撐了很多海量分析的業務場景。
3、作為HTAP(oltp+olap)業務,使用共享分散式儲存,一寫多讀的架構,是目前最先進的架構。
3、1. 例項擴容方便(秒級新增只讀節點)
3、2. 儲存擴容方便(幾乎無限擴充套件IO、頻寬)
3、3. 不存在分佈鍵問題
3、4. 不存在跨庫JOIN問題
3、5. 不存在分散式事務問題
3、6. SQL沒有任何限制
3、7. 應用無需改造
3、8. 支援全域性一致性時間點恢復
3、9. 只讀節點延遲毫秒內
3、10. 所有節點都支援平行計算
3、11. 分散式儲存:儲存和引擎分離後,儲存可以專心支援多副本,支援跨域容災,支援高頻寬,支援幾乎無限的擴容能力。同時與資料庫引擎深度結合,支援硬體級計算、加解密、加解壓、資料過濾、型別預處理等能力。大幅度降低資料傳輸和上層處理的壓力。
目前阿里雲推出的PolarDB正是這種架構,已支援MySQL協議,正在支援PostgreSQL協議(PostgreSQL具備了先天的優勢(向量計算、平行計算、JIT、雜湊聚合、擴充套件列存、繼承、等一系列特性),勢必成為HTAP的頂尖產品)。
相關文章
- 檔案系統與資料庫的優缺點資料庫
- ES資料庫架構資料庫架構
- MySQL 資料庫自增主鍵生成的優缺點MySql資料庫
- 資料湖+資料倉儲 = 資料湖庫架構架構
- 最佳實踐:騰訊HTAP資料庫TBase助力某省核心IT架構升級資料庫架構
- 騰訊雲資料庫伍鑫:MPP資料庫HTAP技術探索資料庫
- Greenplum資料庫系統架構資料庫架構
- Nebula 架構剖析系列(一)圖資料庫的儲存設計架構資料庫
- 資料庫結構的優化資料庫優化
- 天雲資料Hubble資料庫透過信通院首批HTAP資料庫產品評測資料庫
- 金融級分散式資料庫架構設計要點分散式資料庫架構
- 資料庫HTAP能力強弱怎麼看資料庫
- HTAP資料庫及應用場景分析資料庫
- 架構與資料庫的關係架構資料庫
- MonetDB列存資料庫架構初探資料庫架構
- mysql資料庫的基礎架構MySql資料庫架構
- 資料庫系統架構討論資料庫架構
- 資料庫學習優質站點資料庫
- Oracle資料庫壞塊典型案例分析Oracle資料庫
- 資料庫優化資料庫優化
- 資料庫調優資料庫
- 後期資料庫主從架構的痛點,真的痛資料庫架構
- 天雲大資料獲1億增資,釋出HTAP資料庫Hubble大資料資料庫
- mysql資料庫-資料結構MySql資料庫資料結構
- 分散式資料庫架構原理 - Alex Petrov分散式資料庫架構
- 架構設計(二):資料庫複製架構資料庫
- 故事篇:資料庫架構演變之路資料庫架構
- MySQL資料庫架構——高可用演進MySql資料庫架構
- 資料庫 Mysql 邏輯架構簡介資料庫MySql架構
- 資料庫平滑擴容方案剖析資料庫
- android資料庫如何進行版本升級?架構之資料庫框架升級Android資料庫架構框架
- Oracle資料庫壞塊典型案例擴充Oracle資料庫
- 資料庫圈周盤點:Serverless資料庫知多少資料庫Server
- database資料庫的資料結構Database資料庫資料結構
- 資料庫優化SQL資料庫優化SQL
- MySQL資料庫優化MySql資料庫優化
- HTAP資料庫技術的現在和未來資料庫
- 分散式資料庫的架構演變之路分散式資料庫架構
- 網際網路資料庫架構設計資料庫架構