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表中。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值