云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(三)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 快速学习云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1

开发者学堂课程【数据仓库 ACP 认证课程:快速学习云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/928/detail/14623


云原生数据仓库 AnalyticDB MySQL 版_解析与实践1


四、产品相关概念


1.数据库对象及操作


(1)数据库对象:体系结构

image.png

用户集群

一个用户实例就是一个集群

用户集群资源独享

物理库

一个用户集群系统默认初始化一个物理库

数据库

逻辑数据库,最多256个

表名空间和权限隔离

普通表,又称分布式表,需要指定分布键

维度表,又称广播表,每个节点冗余一份

分片

表被分布键拆分后的子表,又称分片( Shard )

分区

分片( Shard )可以再按某个字段划分为分区·分片列通常是时间字段,有生命周期管理功能


(2)表∶分区数据清除机制

数据清理机制︰

表元数据记录表的生命周期设置数,下面示例设 LIFECYCLE 90,通过对分区的排序,超出生命周期数的分区将被清理掉,

如图所示︰

image.png

从1月1日一直到3月31日正好是90个分区。那随着用户的数据添加,用户增加了一个4月1日分区,此时为91个分区,但设定了最多包含90个分区,那第一个分区也就是1月1号分区自动清除,从而保证还是90个分区


(3)数据建模: SQL 开发规范

编写和优化 SQL 时,需要充分考虑其分布式特性。

SQL 编写原则为追求简单

一般情况下,数据库性能会随 SQL 复杂度而下降。例如,单表查询(冗余设计)优于表关联查询。

②SQ L优化核心方法是减少 I/O

尽可能少的进行列扫描,返回最小数据量,减少 I/O 同时也减少内存开销。

③分布式计算,本地计算&并行计算

大数据计算情况下,本地计算时充分利用分布式多计算资源的能力,避免数据跨节点。

④高 QPS,分区裁剪

业务系统要求高 QPS、毫秒级 RT 时,表和 SQL 必须设计为分区裁剪模式。

去掉不必要的列

返回的列的数量直接影响性能,在编写 SQL 时一定要确认业务需要返回的列,不要直接使用星号(*)进行查询。索引和扫描

当 SQL 包含多个查询条件时,优先选择高筛选条件,其他条件可以通过扫描实现。

在 SQL 命令中通过条件 c1=3可快速查询到少量记录(假设10000 ),单独使用time> '2010-01-01 00:00:00时返回的记录数又非常大。

错误 SQL :

select * from tab1 where c1>100 and c1<1000;

正确 SQL:

select col1, col2 from table_name wherec1>100 and c1<1000;

原始 SQL :

select c1,c2 from tab1 where c1=3 and time>='2010-01-01 00:00:00;

建议 SQL :

*+no-index=[tab1.time]*/select c1

,c2 from tab1where c1=3 and time> ='2010-01-01 00:00:00";


2.权限与数据安全


(1)权限与数据安全:账号类型

账号类型

作用范围

可进行的操作

阿里云账号

AnalyticDB for

MySQL 集群

阿里云账号用于创建和管理集群,例如登录阿里云产品控制台、设置白名单、创建数据库账号、申请外网地址、按量付费转包年包月、设置可维护时间段、扩容集群、恢复新集群以及删除集群等。

RAM子账号

AnalyticDB for MySQL 集群 

阿里云账号授予 RAM 子账号一定的权限后,RAM 子账号也可以在权限范围内创建和管理集群。例如登录阿里云产品控制台、设置白名单、创建数据库账号、申请外网地址、按量付费转包年包月、设置可维护时间段、扩容集群、恢复新集群以及删除集群等。 

数据库账号

数据库

数据库账号在权限范围内用于对数据库进行操作,例如创建/删除数据库、连接数据库、创建/删除表、创建/删除视图等。分为普通账号和高权限账号

服务账号

AnalyticDB for MySQL 集群

需要技术支持时授权 AnalyticDB for MySQL 集群的服务账号,技术支持人员才可以通过服务账号提供技术支持服务。

 

阿里云账号和 RAM 是管理账号


(2)权限与数据安全∶用户

用户账号和认证︰

账号格式:ALIYUN$user_account@aliyun.com

认证需要使用 AcclessKey

用户类型:

.OWNER:数据库拥有者,开通云原生数据仓库服务,并创建数据

用户∶被授权的数据库用户,由 OWNER 添加,无需开通云原生数据仓库服务

RAM 子账号︰

支持 RAM(阿里云访问控制)子账号登录和使用云原生数据仓库

主账号可建多个子账号,通过授予授权策略,使子账号在一定条件下可以访问云原生数据仓库

子账号访问云原生数据仓库的 MySQL 协议端时需要使用其的 Access Key ID/Secret 作为用户名和密码


(3)权限与数据安全∶权限模型

AnalyticDB for MySQL 集群支持如下粒度的权限控制:集群、数据库、表、列、行级(基于视图)。

 

DB

T

Col

Comments

SELECT

查询数据

INSERT...SELECT...FR

OM...

执行 Insert.Select 权限

UPDATE

执行 Update 权限

TRUNCATE TABLE

×

执行 Drop 权限

SHOW

×

列出数据库、表、视图内部对象(Global、Database )、列出表内部对象 (Table[View] )

ALTER

×

修改表/视图/数据库定义

DROP

×

删除数据库、表或分区(Global、Database )、删除表或分区(Table[Group])

CREATE

×

创建数据库(Global )、创建表/表分区/视图(Database )

INSERT

执行Insert的权限

DELETE

执行Delete的权限

ALL[PRIVILEGES]

以上所有权限

 


(4)权限与数据安全:SQL 审计

SQL 审计功能可以实时记录数据库 DML 和 DDL 操作信息,并提供数据库操作信息的检索功能,提高云原生数据仓库 AnalyticDB MySQL 版的安全性。

SQL 审计日志

记录对数据库执行的所有操作。通过审计日志记录,您可以对数据库进行故障分析、行为分析、安全审计等操作。

搜索可以按照数据库、客户端 IP、执行耗时、执行状态等进行多维度检索,并支持导出搜索结果。

image.png

3.智能索引

ADB 为表的每个字段智能构建索引,目前支持五种类型∶字符串类的 Invert 索引、 bitmap .索引、数值类的 KDTree 索引、JSON 索引和向量索引;不同类型的索引可以实现列级索引多种条件(交、并、差)任意组合,查询时无需建组合索引,通过Index CBO 智能动态筛选索引下推,通过谓词计算层进行流式渐进多路归并输出

倒排索引∶分区表的所有列(适用 Bitmap 索引的列除外)都建了倒排索引,key 为排序的列值,value 为对应的 RowID list,所以对于任何列进行 FILTER(WHERE key=value) 或者 JOIN 查询都非常高效。

Bitmap 索引∶对于值重复率高的列,建立 Bitmap 索引。

KDTree 索引∶为了加速范围查询,对于类型为数字的列同时建立了 KDTree 索引。

image.png


(1)行列混存的块索引


(2)块索引即块的元数据信息︰

分区元数据︰分区总行数,单个 block 中的列行数等信息;

列元数据∶列值类型、整列的 MAX/MIN 值,NULL 值数目,直方图信息等,便于加速查询;

列 Block 元数据︰该列的 MAX/MIN/SUM

总条目数(COUNT)等信息,便于加速查询。

说明∶复杂类型数据(json , vector )存储采用统一大小的块组织存储,按顺序存,采用稀疏索引查询

image.png


4.数据存储冷热分离


(1)冷热数据分层

AnalyticDB 可以按表粒度、表的二级分区粒度独立选择冷、热存储介质,AnalyticDB 数据写入时,数据会首先进入热空间 SSD 上,当热存储数据积累到一定程度或者用户指定的冷表策略时会自动调度后台的 Build 任务,把数据迁移到冷存储空间。

冷数据指的是访问频次较低的数据,采用低价的 HDD 存储,满足存储空间的需求。

热数据指的是访问频次较高的数据,采用 SSD 存储,满足高性能访问的需求。

可以执行 CREATE TABLE 语句指定表的冷热存储策略为︰全热存储(数据全部存储在SSD )、全冷存储(数据全部存储在HDD )、冷热混合存储(指定一定数量的分区存储在SSD,其余数据存储在HDD )。

 image.png

创建表可以指定存储策,等于 Hot、Cold、Mixed 代表不同的热数据,冷数据来混存,在混存时候需要指定热分区的个数,指定热分区个数为3,新来 的数据放入热分区中,继续放入会增多,其中一个会转 HDD 中存储

冷热分层

高性价比,完全按量付费

冷热策略轻松定义

只需指定表的冷热策略即可享有冷热存储能力,无需额外购买资源

冷热分区自动迁移

异步迁移,业务无感知,不影响读写

查询和内外部接口统一

在离线一体化,数据强一致

image.png


(2)冷热数据存储诊断表

AnalyticDB MySQL 版弹性模式集群版( 3.1.3.5及以上版本)支持数据的冷热分离存储,用户可以通过查表的方式查询某一张表的冷热数据存储布局情况。

查询所有表的存储状态∶

select * from information_schema.table_ usage;

查询单个表的存储状态︰

select * from information_schema.table_usage where

itable_ schema="$schema_name' and table_name='Stable name'

image.png

在表A中,数据有两个分片分布在两个不同的节点上,如果指定热分区是2,其实在每一个分片上面都满足这个热数据。分区的个数是2,但实际上热分区是 p3 p4 p5

实际显示的 hot_partition_count

大于用户定义的 hot_partition_count。

 

5.物化视图

物化视图是数仓领域的核心特性之一。不同于逻辑视图( view ) ,物化视图( materializedview )会持久化视图的查询结果。

物化视图可用于加速分析,并能简化ETL,适用于多种场景,例如报表类业务,大屏展示需求,来自 BI 工具的查询等等。

创建物化试图的语法:

CREATE MATERIALIZED VIEW <mv_name>[MV DEFINITION][REFRESH COMPLETE [ON<DEMAND|OVERWRITE>][STARTWITH date][NEXT date]]

As

<QUERY BODY>;

#指定列建立索引,默认全部列建立索引

CREATE MATERIALIZED VIEW myview (INDEX(name),

PRIMARY KEY (id)

)DISTRIBUTED BY HASH (id)

AS

SELECT id, name, age FROM base;

#指定分区键和注释

CREATE MATERIALIZED VIEW c (name varchar(10),

value double,

KEY INDEX_ID(id)COMMENT "id",

CLUSTERED KEY INDEX(name, value),

PRIMARY KEY(id)

DISTRIBUTED BY hash(id)

PARTITION BY value(date_format(dat,"%Y%m%d"))

LIFECYCLE 30

COMMENT"MATERIALIZED VIEw c’

AS

SELECT * FROM base;

物化视图客户案例

使用物化视图降低客户查询延迟时间。举例生意参谋∶是阿里巴巴旗下为千万商家提供的一项重要产品服务,帮助商家及时分析店铺运营情况。尤其是在大促期间,面对突发的流量和海量的数据,数据分析尤为重要。

利用物化视图,可以大幅降低延迟时间。将每小时展示信息结果存储到物化视图中,每次查询只需要查询物化视图即可,平均每次查询时间降低至100毫秒。

image.png


6.备份与恢复

备份恢复

数据按周全量备份、日志秒级实时备份

支持数据恢复到时间点

 image.png

只读/容灾实例( on-going )

只读/容灾实例

数据跨实例自动复制

为确保数据误操作后,AnalyticDB MySQL 版具备数据快速恢复的能力,集群创建成功后,AnalyticDB MySQL 版会自动在后台开启数据备份功能,实现集群级别的数据备份。在AnalyticDB MySQL 版控制台查看集群的备份集或修改备份设置。

image.png

克隆集群可以根据 AnalyticDB MySQL 版源集群的已有备份集克隆一个 AnalyticDB MySQL 版新集群。

在业务正式上线前,通常需要模拟一个和正式集群一样的环境进行测试(如压力测试),此时您可以根据源 AnalyticDB MySQL 版集群克隆一个新的 AnalyticDB MySQL 版集群,并在克隆集群上进行测试,从而既能确保测试的真实性,又不会影响正常业务的运行。

image.png

可以根据 AnalyticDB MySQL 版源集群的已有备份集克隆一个 AnalyticDB MySQL版新集群。

相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
SQL 存储 弹性计算
【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(二)
快速学习【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1
177 0
【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(二)
|
存储 SQL 缓存
【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3|学习笔记(三)
快速学习【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3
120 0
【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3|学习笔记(三)
|
SQL 分布式计算 Cloud Native
【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3|学习笔记(一)
快速学习【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3
290 0
【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3|学习笔记(一)
|
存储 SQL 弹性计算
【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(一)
快速学习【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1
199 0
【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(一)
|
存储 Cloud Native 固态存储
【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3|学习笔记(四)
快速学习【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3
205 0
【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3|学习笔记(四)
|
SQL 存储 Cloud Native
【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3|学习笔记(二)
快速学习【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3
327 0
【视频】云原生数据仓库 Analyticdb MYSQL 版-解析与实践-3|学习笔记(二)
|
存储 SQL Cloud Native
【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(四)
快速学习【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1
368 0
【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(四)
|
存储 SQL Cloud Native
【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(三)
快速学习【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1
368 0
【视频】云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(三)
|
存储 Cloud Native 固态存储
云原生数据仓库 AnalyticDB MySQL 版 _解析与实践3|学习笔记(四)
云原生数据仓库 AnalyticDB MySQL 版 _解析与实践3
121 0
云原生数据仓库 AnalyticDB MySQL 版 _解析与实践3|学习笔记(四)
|
存储 SQL Cloud Native
云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(一)
快速学习云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1
129 0
云原生数据仓库 AnalyticDB MySQL 版 _解析与实践1|学习笔记(一)