Clickhouse实时数据的另一种实现思路
前言
之前从kafka出来的数据是实时写入到clickhouse和pg的,现在提出另一种通过view实现的方案。 具体来说,把当天的数据存放到clickhouse的pg引擎表中,把历史数据同步到clickhouse表中,然后通过view把这两张表组合到一起。 每天晚上定时将当天的数据从pg库里同步到clickhouse的历史表。
步骤
1. 在pg库里建表
CREATE TABLE t_city( cjsj varchar, province varchar(40), city varchar ); -- 插入一条当天的数据 insert into t_city (cjsj, province, city) values (2021-07-22 10:00:01, HuNan, changSha);
2. 在clickhouse里建相同的表,用来存放历史数据
create table t_city ( cjsj String default , province String default , city String default ) engine = MergeTree PARTITION BY tuple() ORDER BY city SETTINGS index_granularity = 8192; -- 给几条昨天的数据(历史数据) insert into t_city (cjsj, province, city) values (2021-07-21 08:01:10, HuBei, xiaoGan); insert into t_city (cjsj, province, city) values (2021-07-21 08:01:20, HuBei, wuHan);
3. 在clickhouse里建立PG引擎表,此表可以提供当天的实时数据
create table t_city_from_pg ( cjsj String default , province String default , city String default ) ENGINE = PostgreSQL(ip:port, 库, t_city, 用户名, 密码, schema);
4. 最后在clickhouse中建立view
CREATE VIEW city_view ( cjsj String , province String , city String ) AS SELECT * FROM t_city_from_pg where toDate(cjsj) = today() UNION ALL select * from t_city;
5. 每晚同步
做一个定时任务,每晚把当天的数据从pg同步到ck。这里的当天是2021-07-22 ,到了2021-07-23 00:01:00,启动定时任务,我用的是datax做同步,会将 2021-07-22 这一整天的数据同步到clickhouse的t_city表中。
上一篇:
JS实现多线程数据分片下载
下一篇:
人工智能模型的网络结构可视化