全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
分析型数据库

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

更新时间:2017-10-10 11:31:10

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

数据库

  • 在分析型数据库中,数据库是用户和系统管理员的管理职权的分界点。

    • 系统管理员:可管理的最小范围即数据库粒度的参数,但未经授权无法查看和管理数据库内部的结构和信息。

    • 用户:对于数据库级别的参数,默认只能查看而不能修改。

  • 在分析型数据库中,一个数据库对应一个用于访问的域名和端口号,同时有且只有一个onwer即数据库的创建者。

  • 分析型数据库是以数据库为粒度对用户的宏观资源进行配置,因此创建数据库时用户需要输入业务预估的QPS、数据量、Query类型等信息 用于智能的判断初始的资源分配。
  • 分析型数据库的用户不能直接通过CREATE DATABASE的DDL语句创建数据库,只能通过DMS控制台界面来创建需要的业务数据库。

表组

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

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

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

  • 维度表组,用于存放维度表,目前有且仅有一个,在数据库建立时会自动创建(表组名称:”数据库名_dimension_group”),用户不可修改和删除。(维度表特征上是一种数据量较小但是需要和任何表进行关联的表。)
  • 普通表组,有如下特征:
    • 表组是数据物理分配的最小单元,数据的物理分布情况通常无需用户关心,但是数据的副本数必须在表组上进行设定,一个表组所有表副本数一致。注:副本数指数据在分析型数据库中同时存在的份数。
    • 同一个表组内的普通表才能进行快速的hash join。(0.9版本之前分析型数据库对普通表仅支持同表组内join。0.9.5版本后支持不同普通表组内的普通表进行join)
    • 一个表组的表可以共享一些配置,例如查询超时时间,如果表组中的单表也进行了这些配置的个性化,那么进行表关联时会通表组级别的配置进行覆盖。
    • 一个表组中的所有表的一级Hash分区的分区数建议一致,但非强制性要求。

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

  • 维度表可以和任意表组的任意表进行关联,并且创建时不需要配置分区信息,但是对单表数据量大小有所限制,并且需要消耗更多的存储资源。(一般要求维度表单表不超过1000万)
  • 普通表创建时至少要指定一级分区列和相关分区信息,并且指定存放在一个表组中。

分区

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

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

  • Hash分区是根据导入数据时已有的一列的内容进行散列后进行分区的,目前多张事实表进行快速的Hash Join时JoinKey必须有分区列参与,同时这些表的Hash分区数必须一致。仅采用Hash分区的数据表,在数据装载时,将进行全量覆盖历史数据。

    注:0.9版本之前,不支持事实表在没有Hash分区键参与关联条件的情况下进行关联,0.9.5版本后,通 过Full MPP Mode或小表广播进行计算时无此限制,关于 join的详细内容请看《多计算引擎和Hint》章 节。

  • List分区是根据导入操作时所填写的分区列值来进行分区的,即一次导入的数据会进入同一个List分区中,因此List分区是支持增量的数据导入的。

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

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

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

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

本文导读目录