开发者学堂课程【实时数仓 Hologres 实战课程:开源 OLAP 迁移 HSAP 实战(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/904/detail/14392
开源 OLAP 迁移 HSAP 实战(二)
七、ClickHouse 简介及应用场景
ClickHouse :
自带存储引擎,支持实时数据,并提供亚秒级查询,C++ 实现的 OLAP 分 布式列式数据库
适用场景∶
1.海量明细数据存储
2.单表聚合类查询
3.写入可见性/一致性要求不高
不适用场景
1.高 QPS 查询
2.高 QPS 更新
3.需要 join 的场景
八、ClickHouse 迁移 Hologres 实践
数据写入链路迁移
常见实时数仓写入链路如上图,通过Flink将实时日志数据写入到实时数仓系统中。
增量数据迁移
Hologres 紧密结合 Flink 生态,如果客户之前是通过 Flink 来向 ClickHouse 灌入实时数据
那么通过集成 Hologres ,Connector,可以方便地将数据导入 Hologres,将增量数据迁移过来。
存量数据迁移
由于 DataX 等插件,暂不支持 ClickHouse Reader。如果已经在 ClickHouse 中存储了存量数据,需要搬迁至 Hologres,目前可以用 ClickHouse -> COPY OUT -> Data File -> COPY IN ->Hologres 的链路,需要确定好字符集、分隔符和 NULL 标记等规范
九、ClickHouse 迁移 Hologres 实践-数据模型
|
ClickHouse |
Hologres |
DB |
create database xx |
create database xx |
Table Group/Shard |
对所有的<SHARD> , <REPLICA>:ENGINE= Replicated MergeTree( " /path/to','clusterO1-<SHARD>-<REPLICA> "dt,(cmd,dt,log_timestamp) 8192) |
—键设置 begin; create table xo (a int); Call set_table _property’( ‘xx ', ‘shard_count". "100’); commit; |
TABLE |
create table xx (a int) ENGINE= engine |
无需engine设置 |
默认列存 |
默认死存,支持行存 |
|
表级TTL |
表级TTL |
|
COLUMN |
列级TTL |
不支持 |
|
CONSTRAINT |
支持primary key., default , not null等 |
VIEW |
支持Materialized view |
支持VlEwW,不支持Materialized view |
十、ClickHouse 迁移 Hologres 实践- DDL
ClickHouse
CREATE TABLE test (
`a`Int64 DEFAULT CAST(O, "Int64'),
`b`Float64 DEFAULT O.,
'c' String DEFAULT ".
‘d’ DateTime DEFAULT CAST('0o00-00-00 00:00:00",'DateTime'),
) ENGINE = ReplicatedMergeTree(' /clickhouse/tables/{layer}-(shard}/test', "(replica}')
PARTITION BY formatDateTime(d, '%D")
ORDER BY d
SETTINGS index_granularity = 8192;
Hologres
BEGIN;
CREATE TABLE test (
a bigint DEFAULT 0,
b double precision DEFAULT 0
c text DEFAULT ",
d timestamptz DEFAULT O.
);
CALL set_table_property('test', 'clustering_key", 'd');
--聚簇列(段内排序列),与 ClickHouse 的 ORDER BY 类似
CALL set_table_property('‘test , 'segment_key’ , d )
--分段列,与 ClickHouse 的 PARTITOIN BY 类似,注: PARTITION 多的表,也可以改造成 Holo 的分区表
CALL set_table_property('test", 'bitmap_columns', 'c');
-- bitmap 索引
CALL set_table_property('test,'shard_count', "100');
shard_count 根据数据量而定
COMMIT;
十一、ClickHouse 迁移 Hologres 实践-查询
|
ClickHouse |
Hologres |
ldendifier quote |
”,“””支持反引号,双引号 |
“”支持双引号 |
QUANTILE |
quantile(level)(expr) |
approx_percentile(level) WITHGROUP (ORDER BY expr) |
quantileDeterministic(level) (expr, determinator) |
-- |
|
quantileExact(level)(expr) |
percentile_cont(level) WITHGROUP (ORDER BY expr) |
|
DISTINCT |
uniq(x) uniqCombined(x) uniqCombined64(x) uniqHLL12(x) |
approx_count_distinct(x) |
uniqExact(x) |
count (distinct x) |
|
WINDOW |
不支持 |
支持(参考PG或Holo官方文档) |
JOIN |
支持 |
支持(参考PG或Holo官方文档) |
十二、Hologres 升级–客户案例
阿里集团-搜索推荐业务
KVStore : Redis/Mysql/Hbase/Cassandra 存储能力
交互式计算能力:Presto/Drill 计算能力
实时数仓:Clickhouse/Druid 存诸+计算
HSAP : Hybrid Serving/Analytical Processing
指标 |
Druid |
Hologres |
资源 |
- |
节省60% |
平均查询性能 |
300ms |
复杂查询100ms,点查询5ms |
写入可见性 |
5s |
<1ms |
写入QPS |
千万 |
1.3亿 |
查询量 |
千万 |
1.5亿 |
开发周期 |
周 |
小时 |
公共云-某社交网站客户
指标 |
CilckHouse |
Hologres |
资源 |
1320core |
1024core |
存储 |
只能存7天 |
无限制 |
复杂查询 |
只能查3天 |
7-15天 |
实时写入QPS |
<30k/s |
>40k/s |
写入可见性 |
秒级 |
毫秒级 |
查询性能 |
- |
提升2-5倍 |
公共云-某游戏客户
指标 |
Redis/Faiss |
Hologres |
成本 |
- |
节省50% |
扩展性 |
单机 |
分布式 |
复杂查询 |
不支持 |
支持 |
学习成本 |
高 |
低 |
业务耦合度 |
高 |
低 |
易用性 |
低 |
高 |
十三 、新一代技术理念HSAP:服务、分析一体化
Hybrid ServingiAnalytical Processing