文档目录
1、概念特性
AnalyticDB for PostgreSQL
来源:基于 Greenplum Database 开源数据库项目开发,由阿里云深度扩展;
概念:原HybridDB for PostgreSQL,是一种在线分布式分析型云数据库,由多个计算组组成,存储和计算能力可水平扩展,可提供大规模并行处理(MPP)数据仓库服务。
新版本特性
云原生数据仓库AnalyticDB PostgreSQL 6.0版是基于开源Greenplum 6.0内核构建的在线数据库服务。新增特性如下:
- JSONB类型:在既有JSON类型上,支持JSONB存储格式,实现高性能的JSON数据处理及更丰富的JSON函 数。
- UUID类型:支持UUID数据类型。
- GIN索引和SP-GiST索引:支持更高性能的模糊匹配以及中文检索。
- 细粒度权限控制:支持schema级别和column列级别权限控制和授权。
- 高效Vacuum:Vacuum在做空间释放时,可以暂时跳过加锁的页面,稍后再访问并对其Vacuum,从而 整体减少被阻塞的状况。
- DBLink:支持跨库的查询访问。
- Recursive CTE:实现SQL的递归查询功能,用于处理逻辑上层次化或树状结构的数据,方便对该类数据 进行多级递归查询。
- PL/SQL增强: 支持RETURN QUERY EXECUTE语句,可以动态即刻执行SQL。 支持Anonymous blocks匿名块定义。
2、架构设计
-
集群多实例
AnalyticDB PostgreSQL的物理集群内,通过管控系统支持创建多个云原生数据仓库 AnalyticDB PostgreSQL数据库实例。 -
两类节点
每个数据库实例由两类组件组成:协调节点(Master)节点和多个 计算节点(Segment),支持故障下自动切换; -
双副本
Master、Segment节点均拥有一主一备(Primary/Mirror)两个副本进行主从热备,主节点发生故障可以迅速切换至备节点。 -
数据分布
数据按HASH或者 Random方式分布存储在每个计算节点(Segment)上,同时并行地执行分析计算。
协调节点
协调节点(Master)是云原生数据仓库AnalyticDB PostgreSQL数据库实例的应用接入点,它负责接收客户端的连接和SQL查询请求,并将工作分配给计算节点(Segment)去并行执行。
协调节点接收应用请求后, 负责SQL语句的解析优化,并生成分布式执行计划,下发给计算节点,执行计划在计算节点间全并行执行 (MassiveParallel Process)。
3、操作实践
3.1、建库相关
注意:没有指定新库的字符集;
psql命令行切换数据库:
=> \c mygpdb
分布键子句:distributed by (key);
-
行列混存
支持表按列存储或者按行存储。 -
事务ACID
3.2、权限控制
超级用户:super,可以创建系统管理员
系统管理员:可以创建其他的普通用户;
根用户 和 超级用户的区别:根用户没有 superuser权限,但是可以建库、建角色、登录以及其他的查询权限;
3.3、数据同步
OSS外表导入
外表语法参数
- prifix
- dir
- filepath
如上三个参数互斥,只能设置一个
导出模式参数调整
- oss_flush_block_size
- oss_file_max_size
- num_parallel_worker
Oss外表
功能介绍:https://help.aliyun.com/document_detail/172968.html
3.4、DDL语法
1)对象使用
建表语句中,分区的使用规范
分区建议使用一级分区;
WITH (appendonly=true, compresslevel=5)
DISTRIBUTED BY (txn_id);
2)字段类型修改
alter table schema_name.table_name alter column ${column_name} type new_datatype;
2)关键函数
- row_to_json
3)数据类型
类型 | 别名 | 说明 |
---|---|---|
character(n) | char(n) | 定长字符 |
character varying(n) | varchar(n) | 变成字符 |
decimal(p, s) | numberic(p, s) | |
boolean | bool | |
text | ||
timestamp(n) | ||
json | ||
double precision | float / float8 | |
smallint | int2 | |
integer | int / int4 | |
bigint | int8 | |
date | 值为 年、月、日; | |
serial | serial4 | 自动增量整数; |
bigserial | serial8 | 大的自动增量整数; |
数据类型转换语法:
column_value::data_type
3.5、DML语法
扩展插件
1)创建插件;
2)创建schema;
3)将插件和schema绑定;
4、监控运维
节点查询
gp_segment_configuration
集群安全
-
IP白名单:
可以在线维护IP白名单,无需重新ADB实例,同时 IP白名单可以分组维护; -
操作审计
SQL审计; -
备份恢复
定位备份;
倾斜查询
- 数据库倾斜
---query_data_distribute
select pg_size_pretty(pg_database_size('${instance_name}'))
from gp_dist_random('gp_id');
- 单表倾斜
1)通过系统表
---query_data_distribute
select pg_size_pretty(pg_relation_size('${table_name}'))
from gp_dist_random('gp_id');
2)通过系统视图
select t.* from gp_toolkit.gp_skew_coefficients t;
空间回收
定期进行 vacuum & analyse
======================================= over ========================================