天天看點

HTAP資料庫(OLTP+OLAP) - 資料庫典型架構 優缺點剖析(shard VS shared)

PostgreSQL , 共享分布式存儲 , 存儲計算能力。

随着網際網路的發展,資料爆炸性的增長,資料庫逐漸成為了很多業務的絆腳石,很多業務也哭着喊着要上分布式資料庫(個人認為大部分是高估了自己的業務)。

分布式資料庫又分很多流派,比如重點要說的sharding和共享分布式存儲的架構,它們有着什麼樣的優缺點呢?

<a href="https://github.com/digoal/blog/blob/master/201710/20171013_04_pic_001.jpg" target="_blank"></a>

<a href="https://github.com/digoal/blog/blob/master/201710/20171013_04_pic_003.jpg" target="_blank"></a>

如果要在單機并行能力的前提下,再實作多機器并行,可以有兩種玩法:

第一種玩法,可以帶其他産品一起玩,用PostgreSQL 10+的fdw+append parallel+繼承+pushdown(join,agg,where,sort,...)+merge sort,可以實作對任意産品的多機并行(比如後端可以是MySQL)。

HTAP資料庫(OLTP+OLAP) - 資料庫典型架構 優缺點剖析(shard VS shared)

第二種玩法,更加的先進,節點間不僅共享資料,而且能直接通訊,每個節點運算資料的一部分(至少需要改進優化器實作這個功能),多機并行,任意表任意字段JOIN,多階段聚合等都能上陣,簡單來說就是具備MPP的能力。

HTAP資料庫(OLTP+OLAP) - 資料庫典型架構 優缺點剖析(shard VS shared)

citus有這樣的潛質,當然需要适配共享存儲架構進行改造。

1、1. 擴容不友善(資料重分布)

1、2. 分布鍵變更很麻煩

1、3. 分布鍵選擇(架構設計)謹慎

1、4. 跨庫JOIN性能差,甚至隻能按分布鍵JOIN,其他字段不支援JOIN。(因為這種産品架構資料節點之間是孤島,資料需要在孤島之間互動,需要通過上層的中間件節點,而這樣的話,如果有跨庫JOIN,就需要将資料收到中間件節點再JOIN,性能差是可想而知的。)

1、5. 分布式事務性能差,甚至不支援分布式事務。

1、6. SQL限制多、功能缺失多

1、7. 應用改造成本巨大

1、8. 全局一緻性時間點恢複幾乎不可實作

而如果使用中間件的sharding形态,則不适合OLAP業務。(原因是節點間不支援互通,在AP中有大量的JOIN需求,節點間不同帶來一個問題,JOIN需要将資料彙聚到中間件節點執行,導緻非常慢,幾乎不可用)

HDB PG是MPP形态的産品,計算節點之間可以互相通訊,任意列的JOIN都不存在問題,同時還支援行列混合,多階聚合的功能,是專門為OLAP場景打造的一款PB級分布式分析資料庫。

HTAP資料庫(OLTP+OLAP) - 資料庫典型架構 優缺點剖析(shard VS shared)

<a href="https://github.com/digoal/blog/blob/master/201708/20170821_02.md">《阿裡雲HybridDB for PostgreSQL實踐 - 多階聚合》</a>

<a href="https://www.aliyun.com/product/gpdb">阿裡雲的HybridDB for PG</a>

HDB PG支撐了很多海量分析的業務場景。

<a href="https://github.com/digoal/blog/blob/master/201710/20171013_04_pic_005.jpg" target="_blank"></a>

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的頂尖産品)。