节点

在HybridDB for MySQL中,节点是一个资源单位(比如当前C2规格对应:8 Core 32GB Memory 512GB SSD)。 当前在阿里云的控制台中最多能够购买64个节点,如果有需要更多节点,可以通过购买后再扩容的方式完成。 HybridDB for MySQL的存储容量和计算性能随着节点的增加而线性提升。

数据库

在HybridDB for MySQL中,数据库是用户的逻辑概念,用户通过阿里云控制台购买实例后会自动建好指定名称的逻辑库(Database),该逻辑库在后端是会被切分成多个物理分库(Shard),这些物理分库对于用户是不可见的。这就是通常说的分库分表(Sharding)技术。通过Sharding技术,可以将用户数据打散到多个节点上,这样可以利用分布式的特性来进行并行计算,极大地提升性能。

在HybridDB for MySQL中,表是一个逻辑概念。用户创建的表会根据分区key拆分到不同的分库中,每个分表就是通常我们所说的表的分区。对于用户来说,分区不可见,用户只需要指定合适的分区键即可。

分区表(一级分区)

HybridDB for MySQL中的表从建模的维度看,可以分为事实表(fact table)和维度表(dimension table), 事实表是指分区表(通常是一级分区表),即需要被拆分到不同节点去存储的表,在建表的时候指定分区键就可以生成一级分区表。 维度表是指冗余表/广播表,通常存储维度信息比如城市信息表,部门表等类似,维度表的行数一般在10000行以内为宜;维度表会被冗余存储到每个节点中,有利于分布式join的性能提升,也是OLAP的常用优化手段。

 二级分区

在HybridDB for MySQL中表按照分布键进行一级分区后(变为事实表),可以再按照比如时间维度进行二级分区。例如在历史交易分析的场景,通常分区键设置为交易id(trad_id),二级分区键设置为日期。这样就可以存储一个月或者一年的周期数据进行实时分析计算。一级分区将表切分为shard(分片),二级分区则是在每个shard内再进行分区。 目前HybridDB最多只支持两级分区。