本文对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最多只支持两级分区。