实时数仓-hologres使用总结

本文详细介绍了阿里云Hologres的使用,包括连接开发工具如DataWorks、HoloWeb、DBeaver等,以及表的创建、分区、索引设置。还探讨了数据同步实战,如SLS到Hologres的实时同步,离线同步到MaxCompute,以及联邦查询。此外,重点讲述了性能调优,包括VACUUM、ANALYZE、执行计划分析和告警监控策略,最后讨论了实例运维和权限管理。
摘要由CSDN通过智能技术生成

我们回顾下,Hologres是一款实时HSAP产品,隶属阿里自研大数据品牌MaxCompute,兼容 PostgreSQL 生态、支持MaxCompute数据直接查询,支持实时写入实时查询,实时离线联邦分析,低成本、高时效、快速构筑企业实时数据仓库(Real-Time Data Warehouse)。具备如下优势:

说明

分析服务一体化

  • Point Query(毫秒级,用于api 服务,类hbase,redis场景)
  • OLAP Query(PB级复杂查询,毫秒级交互式分析,类presto,impala,druid,clickhouse,kylin场景)

以实时为中心设计

  • 极速查询响应,毫秒级
  • 支持实时写入,实时更新,写入即可查
  • Flink,spark,datax超高导入性能

计算存储分离

  • 云原生架构,弹性扩缩容,成本更低
  • 与Maxcompute存储无缝打通,减少数据搬迁,透明加速,支持交互式分析能力

丰富生态

  • 兼容pg语法,支持pg开发运维工具
  • 无缝bi工具对接
  • 与MaxCompute、Flink、DataWorks深度融合
  • PG GIS地理分析能力
  • 达摩院Proxima向量检索能力

接下来,我们介绍下Hologres的使用。


1. Hologres 相关概念

  • 实例∶使用和管理数据库存储服务的实体,一个实例可以看作是多个数据库的合集
  • 数据库︰一个模式的合集,用户所有的操作,包括表、函数等都是在数据库里完成。系统会在用户完成实例申请后默认创建一个"postgres"的数据库,该 DB 仅用于运维管理,实际业务需要新建DB
  • 表∶表是数据存储单元。它在逻辑上是由行和列组成的二维结构,列的数量和顺序是固定的,并且每一列拥有一个名字。行的数目是变化的,它反映了在一个给定时刻表中存储的数据量。
  • 外表:外表是数据实际存储在其他系统里,但是通过 Hologres 来访问的一类表。Hologres 完全兼容 postgres 的 foreign data wrapper。目前内部支持直接访问 MaxComputer 中的数据

2. 连接开发工具

支持如下方式:

1、DataWorks数仓开发

2、HoloWeb

3、PSQL客户端

4、JDBC

5、Python(使用psycopg2模块访问Hologres)

6、其他工具(Navicat、DBeaver、DataGrip等)

2.1. DataWorks集成Holo

基于Dataworks开发,参考:如何在DataWorks上使用Hologres如何绑定Hologres引擎,细节:

DataWorks绑定hologres引擎 ==> 独享资源组、依赖独享调度资源组。

Dataworks绑定后,即可在DataStudio开发相关任务流程,详情请参见绑定Hologres实例。如下:

功能介绍:

1、DI离线同步:数据源数据 <--> Holo

2、RI实时同步:数据源数据 <--> Holo

3、Hologres SQL

4、一键MaxCompute表结构同步:批量创建Hologres外部表

5、一键MaxCompute数据同步:导入MaxCompute数据至Hologres

其他:dataworks可以连接hologres,并操作hologres外表方法:

1、holo创建内部表

2、mc创建外部表 关联DataWorks

问题:大数据计算MaxCompute的计算资源还是holo的?

在MaxCompute中创建Hologres外部表,在MaxCompute中做计算,用的是MaxCompute计算资源。

2.2. HoloWeb

功能介绍:

1、元数据管理:数据管理模块提供对Hologres引擎对象(包括实例、数据库、schema、表、视图等)的管理功能

2、SQL编辑器:提供标准SQL开发界面。

  • 可用PostgreSQL语句开发、
  • 查看SQL的执行计划和运行分析、诊断优化
  • 支持交互式分析(Ad Hoc分析,不支持执行时间超过60分钟的长运行SQL)

3、诊断与优化:提供实例级别的运维管控能力。

  • 查看慢Query日志、活跃Query、连接管理
  • 可结合管理控制台监控指标,对实例异常进行诊断

4、数据方案:提供数据接入能力。

  • 本地文件上传
  • 外表数据导入操作

5、安全中心:提供用户管理、DB管理、资源组管理

2.3. DBeaver

属于同一网络可以连通。

2.4. 永洪BI

参考:如何通过YonghongBI工具连接Hologres并进行数据分析

2.5. dataworks集成

1、数据地图(Beta)集成,参考:如何在数据地图中配置Hologres元数据采集器

2、数据血缘,参考:如何在DataWorks的数据地图中查看数据血缘信息

3. 开发规范

参考:Hologres开发规范

4. Hologres开发

4.1. 对象层级与模式(Schema)

hologres兼容PostgreSQL生态,因此也有模式相关概念如下图所示:

Hologres的Schema功能:

  • 新增Schema,表存储结构由database.table变为database.schema.table
  • 创建数据库时,默认创建public Schema

如何理解Schema?

  • PostgreSQL 模式(SCHEMA)可以看着是一个表的集合。
  • 一个模式可以包含视图、索引、数据类型、函数和操作符等。
  • 模式类似于操作系统层的目录,但是模式不能嵌套。

使用模式的优势:

  • 允许多个用户使用一个数据库并且不会互相干扰。
  • 将数据库对象组织成逻辑组以便更容易管理。
  • 第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。即相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 schema1 和 myschema 都可以包含名为 mytable 的表。

提示:

1、可以用于 OLAP表权限管理

如果其他用户想访问某个schema下的对象,则该schema的owner必须赋予其他用户的usage权限,如果需要做其他操作也需要赋予相应的权限在默认情况下,所有人都拥有在public模式上的CREATE和USAGE权限。

2、业务线隔离

3、数仓分层隔离

4.2. 表

  • 创建表--CREATE TABLE
  • 创建表--CREATE TABLE AS
  • 创建表--CREATE TABLE LIKE
  • 修改表--ALTER TABLE(重命名、增加列和修改表数据生存时间)
  • 删除表--DROP TABLE
  • 创建类型转换--CAST(删除、创建)
  • 视图--物化视图、视图
begin;
create table [if not exists] [schema_name.]table_name ([
  {
   column_name column_type [column_constraints, [...]]
   | table_constraints
   [, ...]
  }
]);

call set_table_property('<table_name>', property, value);
comment on column <tablename.column> is 'value';
comment on table <tablename> is 'value';
commit;

-- 给表增加注释
COMMENT ON TABLE table_name IS 'my comments on table table_name.';

-- 给列增加注释
COMMENT ON COLUMN table_name.col1 IS 'This my first col1';

-- 给外部表增加注释
COMMENT ON FOREIGN TABLE foreign_table IS ' comments on my foreign table';

设置默认值

smallint_col smallint DEFAULT 0,    

4.2.1. 表分类及使用场景

1、内部表

内部表数据存储在Hologres数据库中,支持设置:

  • 表数据生命周期(秒):默认生命周期为永久。
  • Binlog:表是否开启Binlog。Binlog生命周期
  • 各类索引等,后面介绍

相关语法:

-- 建表时开启
call set_table_property('test_message_src', 'binlog.level', 'replica');--设置表属性开启Binlog功能
call set_table_property('test_message_src', 'binlog.ttl', '86400');--binlog.ttl,Binlog的TTL,单位为秒


查询binlog
select hg_binlog_lsn,hg_binlog_event_type,hg_binlog_timestamp_us,* from test_message_src;

场景:各类高性能要求的OLAP分析、点查询、实时链路

2、分区表

Hologres的分区表必须提前创建好分区,不能用查询语句的值动态生成分区表。

Partition Table,也叫分区表。父表按分区键(Partition Key)的值划分为不同的子表,子表对外可见。

语法:

  • 创建分区表--CREATE TABLE
  • 修改分区表--ALTER TABLE (重命名、绑定分区、卸载分区)
  • 删除分区表--DROP TABLE

使用:

  • Hologres暂不支持插入数据至分区表父表,只支持插入数据至具体的分区表子表。
  • 若是表有主键,分区键必须是主键的一个子集。
  • 动态分区是自动调度创建,仅支持以time_unit作为分区

性能:

  • 如果单日分区数据小于1亿条,不建议使用日作为分区条件,或创建分区表。分区表太小,查询加速效果不明显,可以选择较大粒度的分区。
  • 分区表的任何一个子表在元数据存储上等同于一个非分区表,因此分区多会造成一定程度的元数据膨胀,以及小文件碎片。

场景:

  • 如果您需要经常对某分区数据进行整体替换,包括执行truncate操作或者drop操作,建议使用分区表。
  • 如果您的数据来源于数据库,不建议使用分区表。过多的分区表会引起额外的IO资源浪费,为改善此问题并实现索引过滤加速查询的效果,您可以将常用分区条件作为segment_key。
3、外部表

支持创建MaxCompute、OSS、DLF、Hologres类型的外部表,使用限制如下:

  • 使用Hologres创建外部表查询数据时,当MaxCompute表增加字段后,Hologres不会自动更新Schema,需要您在Hologres中手动增加列。
  • Hologres仅支持为外部表重命名、增加列及删除列等修改外部表操作。

语法:

  • 批量创建外部表--IMPORT FOREIGN SCHEMA
  • 修改外部表--ALTER FOREIGN TABLE (重命名、增加列、删除列)
  • 删除表--DROP FOREIGN TABLE
    • CASCADE 删除表时,级联删除依赖于表的对象,例如视图。
    • RESTRICT 如果目标表存在依赖对象,则系统拒绝删除该表。

场景:

4.2.2. 表设置

1、表存储格式--行、列

Hologres支持三种表存储格式,分别为:行存、列存和行列共存。通过如下进行设置:

call set_table_property('<table_name>', 'orientation', '[column | row | row,column]');

建表时默认为列存(column storage)形式。

使用建议:

各类存储格式总结:

1、列存(OLAP查询场景)

  • 数据按列存存储,ORC格式
  • 主键:系统会为每张表在底层存储一个主键索引文件,列存表如果设置了主键PK,系统会自动生成一个Row Identifier(RID),用于
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值