本文为您介绍AnalyticDB for MySQL的基本概念。

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下,电力、网络隔离的物理区域,可用区之间内网互通,可用区内网络延时更小。

  • 集群(Cluster)

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

  • 节点

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

    AnalytcDB for MySQL 3.0有计算密集型和存储密集型两种类型的节点组规格。
    • 计算密集型:以字母C开头,数据全部存储在SSD磁盘中。

      适用于对性能要求高、查询并发高的业务场景。

    • 存储密集型:以字母S开头,采用存储计算分离架构,数据存储在HDD磁盘中。

      适用于并发稍低、性能要求不高(可接受数据查询响应时间超过10秒以上)的业务场景。

  • 数据库(DataBase)

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

  • 账户(Account)

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

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

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

  • 表(Table)

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

  • 一级分区

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