全部产品
阿里云办公

2.1 数据库/表组/表/分区

更新时间:2018-10-08 18:03:48

在传统的关系数据库系统中,表隶属于某个数据库。而分析型数据库为了方便的进行数据的关联的管理,以及进行资源分配,引入了表组的概念。

数据库

  • 在分析型数据库中,数据库是用户和系统管理员的管理职权的分界点。
    • 系统管理员:可管理的最小范围即数据库粒度的参数,但未经授权无法查看和管理数据库内部的结构和信息。
    • 用户:对于数据库级别的参数,默认只能查看而不能修改。
  • 在分析型数据库中,一个数据库对应一个用于访问的域名和端口号,同时有且只有一个onwer即数据库的创建者。
  • 分析型数据库是以数据库为粒度对用户的宏观资源进行配置,因此创建数据库时用户需要输入资源数目和资源类别来进行的资源分配。

表组

表组是一系列可发生关联的数据表的集合。分析型数据库采用关系模型存储数据,也就是使用二维表来进行数据的组织和存储。分析型数据库为了管理相关联的数据表,引入了表组的概念。

  • 表组是数据库的下一级实体,也是表的上一级。
  • 在分析型数据库中一个表必须从属于一个表组。

分析型数据库中表组分为两类:维度表组和普通表组。

  • 维度表组,用于存放维度表,目前有且仅有一个,在数据库建立时会自动创建(表组名称:”数据库名_dimension_group”),用户不可修改和删除。(维度表特征上是一种数据量较小但是需要和任何表进行关联的表。)
  • 普通表组,或称事实表组,用来存放数据量较大的表。需要用户自己新建,可以创建多个。一般会把需要join的表放在相同表组中。一个表组中的所有表的一级Hash分区的分区数建议一致,但非强制性要求。

分析型数据库中表分为维度表和普通表,普通表也称事实表或分区表。

  • 维度表可以和任意表组的任意表进行关联,并且创建时不需要配置分区信息,但是对单表数据量大小有所限制,因为需要消耗更多的存储资源。

注:一般要求维度表单表不超过100万,如果对性能要求不是很高,该限制可以适当放宽

  • 普通表创建时至少要指定一级分区列和相关分区信息,并且指定存放在一个表组中。

分区

在分析型数据库中,维度表无分区,普通表的分区目前最多为两级。

分区种类有Hash分区和List分区两种。目前分析型数据库支持将普通表的一级分区设置为Hash分区,二级分区设置为List分区,即可支持 Hash join又可支持增量数据导入。

  • Hash分区是根据导入数据时已有的一列的内容进行散列后进行分区的,目前多张事实表进行快速的Hash Join时JoinKey必须有分区列参与,同时这些表的Hash分区数必须一致。仅采用Hash分区的数据表,在数据装载时,将进行全量覆盖历史数据。
  • List分区是根据导入操作时所填写的分区列值来进行分区的,即一次导入的数据会进入同一个List分区中,因此List分区是支持增量的数据导入的。

注:无论采用何种分区形态,分析型数据库均不需要在用户查询时指定分区列,但是指定分区列或分区列的范围进行查询可能会提高查询性能。

离线表和实时表

根据表的更新方式不同,分析型数据库的表分为离线批量更新的表和实时更新的表:

  • 离线批量更新的表,适合从离线系统如MaxCompute(原ODPS)产出的数据结果导入到分析型数据库供在线系统使用。
  • 实时更新的表,可以直接insert/delete单条数据,适合业务系统直接写入数据,不支持批量load。

注:分析型数据库不支持读写事务,并且数据实时更新时一分钟左右才可查询,另外在一致性方面分 析型数据库遵循最终一致性。