本文對HybridDB for MySQL相關名詞做如下解釋。

地域

地域(Region)指的是用戶所購買的HybridDB for MySQL(原名PetaData)數據庫的服務器所處的地理位置。用戶需要在開通HybridDB for MySQL數據庫時指定,購買實例后不支持更改。

在購買HybridDB for MySQL數據庫時,需要搭配阿里云服務器ECS使用,目前HybridDB for MySQL只支持阿里云內網訪問,在地域選擇時需要與ECS相同。

可用區

可用區(AZ)是指在同一地域下(如華東1(杭州)地域),電力、網絡隔離的物理區域,可用區之間內網互通,可用區內網絡延時更小。

數據庫

數據庫(Database)是用戶購買HybridDB for MySQL服務的基本單位。用戶可以購買一個或多個不同規格的數據庫。數據庫在邏輯上由邏輯分區(Partition)組成,在物理上由物理節點(Node)組成。

實例

實例(Instance)是數據庫之上的物理概念。一個實例下可以創建多個數據庫。不同實例之間的數據庫從物理上是隔離的。一個實例下至少需要有一個數據庫;一個數據庫之上有且只有一個實例。

賬戶

賬戶(Account)是一個實例范圍內能訪問數據庫的主體。同一個實例下的不同賬戶名不可重復。不同賬戶在同一實例內的權限是相同的。

邏輯分區與表

邏輯上,用戶創建的數據庫由多個數據邏輯分區(Partition)組成,用戶創建的表(Table)的數據將分布在這些數據邏輯分區上,數據分布規則依照用戶建表時指定的列(PartitionKey)進行Hash計算后來劃分。邏輯分區的數量一旦確定后將無法更改。

物理節點

物理上,用戶創建的數據庫由多個物理節點(Node)組成。物理節點(Node)是存儲邏輯分區(Partition)的物理容器。每個Node包括一定數量的CPU、內存和硬盤資源。 隨著數據庫中數據量的增加,用戶可以增加物理節點的數量,從而實現水平擴容。

節點

在HybridDB for MySQL中,節點是一個資源單位,比如C2規格對應8核/32GB/512GB SSD。 當前在阿里云的控制臺中最多能夠購買64個節點,如果需要更多節點可以通過購買后再擴容的方式來完成。 HybridDB for MySQL的存儲容量和計算性能隨著節點的增加可以做到線性擴展。

在HybridDB for MySQL中,表是一個邏輯概念。用戶創建的表會根據分區key拆分到不同的分庫中,每個分表就是通常我們所說的表的分區。對于用戶來說,分區不可見,用戶只需要指定合適的分區鍵即可。

分區表(一級分區)

HybridDB for MySQL中的表從建模的維度看,可以分為事實表(fact table)和維度表(dimension table), 事實表是指分區表(通常是一級分區表),即需要被拆分到不同節點去存儲的表,在建表的時候指定分區鍵就可以生成一級分區表。 維度表是指冗余表/廣播表,通常存儲維度信息比如城市信息表,部門表等類似,維度表的行數一般在10000行以內為宜;維度表會被冗余存儲到每個節點中,有利于分布式join的性能提升,也是OLAP的常用優化手段。

二級分區

在HybridDB for MySQL中表按照分布鍵進行一級分區后(變為事實表),可以再按照比如時間維度進行二級分區。例如在歷史交易分析的場景,通常分區鍵設置為交易id(trad_id),二級分區鍵設置為日期。這樣就可以存儲一個月或者一年的周期數據進行實時分析計算。一級分區將表切分為shard(分片),二級分區則是在每個shard內再進行分區。 目前HybridDB最多只支持兩級分區。