全部产品
云市场

基本概念

更新时间:2019-10-09 10:11:00

AnalyticDB for MySQL 2.0基本概念

AnalyticDB for MySQL 2.0中有数据库、ECU、表组、表和分区等概念。

数据库(DataBase)

在AnalyticDB for MySQL 2.0中,数据库是最高层的对象,按数据库进行资源的分配和管理。每个数据库独享一个服务进程,实现用户间资源的隔离。AnalyticDB for MySQL 2.0中数据库又称之为实例,一个AnalyticDB for MySQL 2.0数据库就是一个实例,一个实例由若干个ECU节点组成。

ECU

弹性计算单元(Elastic compute units,简称ECU)是AnalyticDB for MySQL 2.0用来衡量实例计算能力的元单位。

一个数据库由若干个同一类型的ECU节点组成,例如数据库A,可能由4个C8组成,或者6个S2N组成,每个ECU节点拥有固定的磁盘和内存资源。

表组

表组是指一系列可发生关联的数据表的集合。AnalyticDB for MySQL 2.0为了管理相关联的数据表,引入了表组的概念。表组类似于传统数据库中的Schema,AnalyticDB for MySQL 2.0中有两种类型的的表组。

  • 维度表组(系统自带):自带维度概念的表(例如省份表、银行表等),可以放到维度表组下。

  • 普通表组:一般会把需要关联的普通表放在相同普通表组中,建议这个表组中的所有普通表的一级分区数一致,join性能会有很大提升。

表(Table)

在表组之下是表的概念,AnalyticDB for MySQL 2.0中包含两种类型的表。

  • 维度表:带有维度概念的表(例如银行表)。默认每个ECU节点放置一份全量的维度表数据,所以维度表可以和任何普通表进行关联。

    由于维度表会消耗更多的存储资源,所以维度表的数据量大小有限制,要求维度表单表数据量不超过100万行。

  • 普通表:普通表就是分区表,为充分利用分布式系统的查询能力而设计的一种表。普通表默认是指一级分区表,如果有增量数据导入需求,可以创建二级分区表。

分区

AnalyticDB for MySQL 2.0普通表才有分区的概念。

AnalyticDB for MySQL 2.0支持两级分区策略:

  • 一级分区采用HASH算法,单表数据量在60亿条以内,推荐您使用一级分区,通常一级分区已足够。。
  • 二级分区采用LIST算法,更多二级分区信息,请参见二级分区

主键

AnalyticDB for MySQL 2.0的表必须包含主键字段,通过主键进行记录的唯一性判断。主键由业务ID、一级分区键组成,有些情况业务ID与一级分区相同。对于记录量特别大的表,从存储空间和INSERT性能考虑,一定要减少主键的字段数。

示例

以一个电商公司购买了一个分析型数据库MySQL版Trade为例,帮助您理解上述概念。

  1. 客户在阿里云购买1个名为Trade的分析型数据库MySQL版(也称之为1个ADS实例),如图所示,Trade由4个C4节点构成。

    示例

  2. C4是一种ECU规格,我们还提供C8,S2N,S8N三种不同规格的ECU。

  3. 数据库Trade下面可以规划多个表组(类似Schema概念),不同表组用于存放不同的业务表。

  4. Trade数据库创建完毕后,系统会默认创建一个维度表组,所有维度相关的表,可以放到维度表组下。普通表按照上述第3点的规则来管理。

AnalyticDB for MySQL 3.0基本概念

地域(Region)

Region是指购买AnalyticDB for MySQL的服务器所处的地理位置。您需要在购买AnalyticDB for MySQL服务时指定Region,Region一旦指定后就不允许更改。

注意:由于目前仅支持通过阿里云VPC访问AnalyticDB for MySQL 3.0集群,因此购买AnalyticDB for MySQL 3.0集群时,需要搭配阿里云服务器ECS,选择与ECS相同的Region。

可用区(Zone)

可用区是指在同一Region下(例如华东1(杭州)),电力、网络隔离的物理区域,可用区之间内网互通,可用区内网络延时更小。

集群(Cluster)

集群是数据库之上的物理概念。一个集群下可以创建多个数据库,不同集群之间的数据库从物理上是隔离的。

节点

AnalytcDB for MySQL 3.0集群由若干节点组成。用户购买集群时,需要指定节点规格。节点规格决定每个节点的CPU、内存和存储容量。

AnalytcDB for MySQL 3.0支持两种类型的节点。

  • 密集存储(S系列)节点:存储优化型节点(即将上线),适用于大数据量、高频查询场景,常用于存储“温”数据。
  • 密集计算(C系列)节点:计算优化型节点,适用于即时分析场景,常用于存储“热”数据。

数据库(DataBase)

数据库是AnalyticDB for MySQL 3.0服务的基本单位。您可以购买一个或多个不同规格的数据库。数据库在逻辑上由逻辑分区(Partition)组成,在物理上由物理节点(Node)组成。

账户(Account)

账户是一个集群在权限范围内访问数据库的主体,同一个集群下的不同账户名不可重复。

AnalyticDB for MySQL实例或者集群中包含四种类型的账号。

  • 阿里云账号:用于创建和管理集群,例如登录阿里云产品控制台、按量付费转包年包月、扩容集群以及删除集群等。
  • RAM子账号:阿里云账号授予RAM子账号一定的权限后,RAM子账号也可以在权限范围内创建和管理集群。
  • 数据库账号:数据库账号在权限范围内用于对数据库进行操作,例如创建/删除数据库、连接数据库以及创建/删除表等。
  • 服务账号:您在使用AnalyticDB for MySQL集群过程中需要阿里云技术支持时,如果技术支持过程中需要对您的集群进行操作。您需要授权AnalyticDB for MySQL集群的服务账号,技术支持人员才可以通过服务账号提供技术支持服务。在授权有效期结束后,服务账号的权限会被自动回收。

AnalyticDB for MySQL 3.0的数据库账号体系和SQL语法与MySQL兼容。

表(Table)

您创建的数据库由多个数据逻辑分区(Shard)组成,表的数据将分布在这些数据逻辑分区(Shard)上,数据分布规则依照用户建表时指定的列(Distributed Key)进行Hash计算后划分。建表时,只需要指定Distributed Key,而无需感知逻辑分区的数量,系统会自动调整到最优值。

一级分区

与AnalyticDB for MySQL2.0类似,3.0版的表分为普通表和维度表,只有普通表才有分区的概念。一级分区是在每个逻辑分区(Shard)内再进行分区,目前AnalyticDB for MySQL3.0只支持一级分区。