开源 OLAP 迁移 HSAP 实战(一)|学习笔记

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
云原生数据仓库AnalyticDB MySQL版,8核32GB 100GB 1个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 快速学习开源 OLAP 迁移 HSAP 实战(一)

开发者学堂课程【实时数仓 Hologres 实战课程开源 OLAP 迁移 HSAP 实战(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/904/detail/14392


开源 OLAP 迁移 HSAP 实战(一)


目录:

一、开源 OLAP 系统现状

二、大数据架构中 OLAP 系统

三、Presto 简介及场景应用

四、Presto 迁移 Hologres 实践

五、Druid 简介及应用场景

六 、Druid 迁移 Hologres 实践

七、ClickHouse 简介及应用场景

八、ClickHouse 迁移 Hologres 实践

九、ClickHouse 迁移 Hologres 实践-数据模型

十、ClickHouse 迁移 Hologres 实践- DDL

十一、ClickHouse 迁移 Hologres 实践-查询

十二、Hologres 升级–客户案例

十三 、新一代技术理念 HSAP:服务、分析一体化

 

一、开源 OLAP 系统现状

系统

Github Star

开源时长

语言实现

系统分类

ClickHouse 

12k

4年

C++

存储+计算

Presto

11k

7年

Java

计算引擎

Druid

10k

8年

Java

存储+计算

Greenplum

4k

5年

C

存储+计算

Impala 

3k

7年

C++

计算引擎

 

二、大数据架构中 OLAP 系统

从业务的角度看大数据架构中 OLAP 系统的定位,功能,在业务系统中的作用

用户可能会有一些实时的数据分析,比如淘宝上一些交易的日志,一些浏览的日志,一些点击的日志在这个时候可能会使用 Flink 进行实时的处理,同时把这些数据处理做一些语句和写到类似于 HBase,Cassandra 里面去,然后进行实时的大屏显示。HBase,Cassandra 适合做点查询,但是缺点是不能做复杂的分析

系统对比

Druid/ClickHouse 与 Hologres 对比

 

 

Druid

ClickHouse

Hologres

存储

写入可见性

秒级

秒级

毫秒级

明细存储

不建议

支持

支持

可更新

不支持

不完备

支持

索引

bitmap/dicnionary

Primary key/clustering Key

Bitmap/dictionacy/segmenu/

primary/clustea

计算

优化器

RBO

RBO

CBO

执行器

-

向量化/SIMD

向量化/SIMD

联盟查询

不支持

支持

支持

预聚合

支持

支持

支持(Flink)

QPS点查

不支持

不支持

支持

SQL

DDL

复杂

语法复杂

语法简单

Update/Dete

不支持

有限支持,语法复杂,非ANSI标准

支持

JOIN

有限支持

支持,性能较差

支持

WINDOW

不支持

不支持

支持

高级功能

向量检索

不支持

不支持

支持

空间数据

不支持

不支持

支持

安全管理

不支持

不支持

丰富的权限控制,RAM子账号,ip白名单

扩缩容

分钟级

小时级,复杂

分钟级

生态

数据接入

Kafka/HTTP

Kafka/JDBC/DataX

Klink/JDBC/DataX

BI工具

部分

部分

10+主流BI工具

 

三、Presto 简介及场景应用

Presto:

Facebook 推出的分布式 SQL 查询引擎基于内存的并行计算提供交互式查询功能

应用场景:Presto

离线加速:Hive 加速

联邦查询:MySQL/MongoDB 等丰富的 connector 扩展

数据湖:s3/OSS

实时数仓(写入/更新/高 QPS):不支持

应用场景:Hologres

离线加速:MaxCompute/Hive 加速

联邦查询:MaxCompute/Postgres 等丰富的 Postgres FDW 扩展

数据湖:OSS

实时数仓(写入/更新/高 QPS):支持


四、Presto 迁移 Hologres 实践

 

功能

Presto

Hologres

数据模型

Catalog/Schema/Table

Database/Schema/Table

数据类型

基本类型/复杂类型

基本类型/复杂类型

sQL

ANSI SQL(Presto)

ANSI SQL(Postgres)

数据接入

客户端/JDBC

PSQL客户端/JDBC/HoloWeb

BI生态

Tableau/帆软等主流BI

Tableau/帆软主流BI+云QuickB1

两者均支持 ANSI SQL,迁移成本低,基本无缝


五、Druid 简介及应用场景

Druid :

自带存储引擎,支持实时数据,并提供亚秒级查询的 OLAP 引擎

Druid适用场景︰

1.时序组织数据(点击,曝光,监控)

2.数据质量要求不高(有可能重复/丢失)

3.海量 append only 数据(不支持更新)

4.单表聚合类查询

Druid 不适用场景

1.高 QPS 明细场景

2.有一致性要求的场景

3.需要更新的场景

4.需要 join 的场景


六 、Druid 迁移 Hologres 实践

数据模型迁移

Druid 所有数据都存储在 dataSource 中 , dataSource 类似于 hologres 的表,本章节介绍 druid 中的数据模型和 Hologres 的数据模型之间的关系以及如何迁移。

Data Schema

Druid 通过 json 的方式来描述一个 dataSource 的 schema , dataSource schema 与 Hologres 的概念映射如下:

 

Druid概念

Hologres概念

说明

dataSource

Table

 

timestampSpec

Column

Druid中的timestamp在hologres中就是一个普通列,切分segment的属性通过在表中添加segment_key的方式来指定

dimensionsSpec

Column

维度列在hologres中是一个普通列,在 druid中维度列一般用来做过滤和聚合,用户可以通过在hologres中添加bitmap或
dictionary的方式来加速用户的查询

metricsSpec

Column

指标列在holagres中是一个普通列

granularitySpec

-

无需配置

transformSpec

-

在数据Ingestion到Hologres中时,用户通过SQL where子句指定需要过滤的数据

Druid 迁移 Hologres 实践–DDL

Druid Datasource

"dataSchema": {

" dataSource": "wikipedia",

"timestampSpec":{

"column": "ts",

"format" : "auto"

},

" dimensionsSpec." : {

"dimensions".: [

{"type" : "string ". " page” },

{ "type" : "string", " language" },

{ "'type" : "long" , "name": "userld" }

]

},

" metricsSpec" : [

{"type": "doubleSum", " name" : "bytes_added_sum","fieldName": " bytes_added"}.

{ "type": "doubleSurm", "name": "bytes_deleted_sum","field Name": " bytes_deleted" }

]

}

Hologres Table

BEGIN;

CREATE TABLE wikipedia (

ts timestamptz,

page text,

language text,

user_id bigint,

bytes_added_sum double precision,

bytes_deleted double precision

);

CALL set_table_property('test", 'segment_key' , 'ts');

--分段列,设成为druid的timestampSpec中指定的列

CALL set_table_property(‘test' , ‘bitmap_columns’ , 'page,

language, user_id' );-- bitmap索引,设成druid的维度列

CALL set_table property('test,'dictionary_encoding columns’

page,language');-- dictionary索引,设成druid维驻度列中的string列

COMMIT;

Druid 迁移 Hologres 实践

Query 迁移

Druid 当前版本支持两种询方式:SQL 查询和 Native 查询,SQI 查询和 Holongres 的 SQL 查询方式类似,在此主要介绍 Native query 到 Hologres 的迁移方式

Druid

Scan 查询

{

"queryType": "scan", "dataSource":

"dataSourceName",

"columns": ['column1", " column2"]. "intervals ":

["0000/3000"]

}

Hologres

SELECT

column1,

column2

FR OM

dataSourceName

Druid 迁移 Hologres 实践–查询

Druid

TOPN 查询:

{

"aggregations": [

{

"fieldName":

"L_QUANTITY_longSum",

"name": "L_QUANTITY_",

"type": "longSum'

}

],

"dataSource" : "tpch_year",

"dimension":"l_orderkey", "granularity" : "all".

"metric": "L_QUANTITY_". "queryType": "topN",

"threshold": 2

Halogres

SELECT

SUM(L_QUANTITY_longSum) AS L_QUANTITY_

FROM

tpch_year

GROUP BY

l_orderkey

ORDER BYL_

QUANTITY_

LIMIT 2

Druid

Timeseries 查询:

{

"queryType" : "timeseries”,

"dataSource": "sample_datasource”,

"granularity": "day",

"descending" : "true“ ,

"filter": [

"type" : "and” ,

"fields": [

{ "type: "selector","dimension": "sample_dimension1". "value":"sample_value1" ].

{ 'type" : "or" ,

"fields": [

{ "type": "selector". "dimension" : "sample_dimension2" , "value":"sample_value2" ],

{ "type" : "selector" , "dimension" : "sample_dimension3", "value":"'sample_value3" }

]

}

]

},

"aggregations": [

{"type" : "longSum", "name": "sample_name1", "fieldName":"sample_fieldName1"}.

i "type" : "doubleSum", "name": "sample_name2", "fieldNarme":"sample_fieldName2"}

] }

],

"intervals ": [ "2012-01-01T00:00:00.000/2012-01-03TO0:00:00.000"]

}

Hologres

SELECT

SUM(sample_fieldNamel) as sample_name1,

SUM(sample_fieldName2) as sample_fieldName2

FROM

sample_datasource

WHERE

sample_dimension1 = 'sample_valuel1'

AND

isample_dimension2 = 'sample_value2'

OR

sample_dimension3 = 'sample_value3'

)

Druid 

GroupBy 直询︰

{

"type": "query" .

'query" : {

"queryType": " groupBy",

"dataSource" : "site_traffic",

"intervals": [" O000/3000"],

"granularity": "all",

"dimensicns: ["page"],

"aggregations": [

{“type" : " count", "name" : "hits"}

]

}

}

Hologres

SELECT

page,

COUNT(*) AS hits

FROM

site_traffic

GROUP BY

Page

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
2月前
|
关系型数据库 MySQL Apache
**ADB MySQL湖仓版能够平滑迁移到湖仓**,阿里云提供了相应的迁移工具和服务来简化这一过程。
**ADB MySQL湖仓版能够平滑迁移到湖仓**,阿里云提供了相应的迁移工具和服务来简化这一过程。
298 2
|
29天前
|
存储 运维 安全
Greenplum闭源?平滑迁移到 AnalyticDB 开启Data+AI新范式
知名开源 MPP 数据库 Greenplum 由于其丰富的企业级特性和出色的数据处理能力成为很多企业构建数仓的首选。近期 GP 公开 Github 仓库无法访问仅保留只读归档代码,业界纷纷猜测 GP 即将闭源。云原生数仓 AnalyticDB PostgreSQL 版完全掌控内核代码,完全兼容GP语法,全自研计算及存储引擎较比开源GP有五倍性能提升,全自研企业级特性在实时计算、弹性扩展、安全增强、高可用等方面实现对GP的全面超越,并在数仓能力上扩展了向量检索及一站式 RAG 服务,帮助企业快速构建 AI 应用、开启 Data+AI 新范式。
58975 3
|
SQL 分布式计算 关系型数据库
Hive 数仓迁移 JindoFS/OSS 数据湖最佳实践
Hive 数仓是大多数迁移客户都会遇到的场景。在迁移过程中,不建议同时在新集群进行业务升级(比如从 Hive on MR 迁移到 Hive on Tez 或 Spark SQL等),这些业务升级可以在迁移完成后进行。1. 元数据同步Hive 元数据是对于 Hive 表来说非常关键,除了表结构信息,里面还记录着 Hive 表与底层文件系统的关联关系,许多上层服务都依赖 Hive 元数据提供服务。a.
610 0
|
数据管理 关系型数据库 MySQL
湖仓一体架构EMR元数据迁移DLF最佳实践
通过EMR+DLF数据湖方案,可以为企业提供数据湖内的统一的元数据管理,统一的权限管理,支持多源数据入湖以及一站式数据探索的能力。本方案支持已有EMR集群元数据库使用RDS或内置MySQL数据库迁移DLF,通过统一的元数据管理,多种数据源入湖,搭建高效的数据湖解决方案。
湖仓一体架构EMR元数据迁移DLF最佳实践
|
SQL 存储 druid
开源OLAP迁移至Hologres
本文将会为您介绍开源OLAP如ClickHouse/Druid/Presto等架构同Hologres的深度对比,并介绍如何如何平滑迁移到Hologres技术体系,实现更稳定,更可扩展,更多功能的HSAP架构。
11021 0
开源OLAP迁移至Hologres
|
SQL 存储 关系型数据库
只需五步!将数据仓库从 Redshift迁移到阿里云AnalyticDB for PG
作者:陆封,阿里云数据库资深技术专家
508 0
只需五步!将数据仓库从 Redshift迁移到阿里云AnalyticDB for PG
|
SQL 存储 关系型数据库
只需五步!将数据仓库从 Redshift迁移到阿里云AnalyticDB for PG
作者:陆封,阿里云数据库资深技术专家
1695 0
只需五步!将数据仓库从 Redshift迁移到阿里云AnalyticDB for PG
|
存储 SQL Oracle
如何将数据仓库从 AWS Redshift 迁移到阿里云 AnalyticDB for PostgreSQL
阿里云AnalyticDB for PosgreSQL与 AWS Redshift 均为采用PosgreSQL内核的MPP架构数据仓库服务,语法高度兼容一致。本文介绍两者的差异比较,以及如何从AWS Redshift迁移应用和数据到阿里云 ADB for PG。
4978 0
如何将数据仓库从 AWS Redshift 迁移到阿里云 AnalyticDB for PostgreSQL
|
SQL 关系型数据库 数据库
如何将Teradata应用迁移至AnalyticDB for PostgreSQL
AnalyticDB for PostgreSQL(简称:ADB for PG)对Teradata语法有着很好的兼容,将Teradata应用迁移到ADB for PG,只需进行有限的修改。本文介绍将Teradata应用迁移到ADB for PG应该注意的事项。
10212 0
如何将Teradata应用迁移至AnalyticDB for PostgreSQL
Oracle应用迁移到AnalyticDB for PostgreSQL指导 | 6月17号云栖夜读
今天的首篇文章,讲述了:AnalyticDB for PostgreSQL(简称:ADB for PG)对Oracle语法有着较好的兼容,本文介绍如何将Oracle应用迁移到AnalyticDB for PostgreSQL。
6521 0

热门文章

最新文章