clickhouse直连mysql

遇到了一个这样的需求,报表上展示超时的订单信息
部门,统计日期,超时订单编号,订单计划开始/结束时间 订单实际开始/结束时间
这里需要让业务方当其认为这条记录不是真的超时时,为这条记录打上一个不纳入统计的标签,如果业务方选择了隐藏,那么这部分打上标签的数据就不会纳入统计,如果没有点隐藏按钮就不会受影响,打标签前怎么统计就怎么统计。
目前的解决方案是:前端在页面交互时通过业务方输入的内容将带标签信息写入mysql表,使用clickhouse直连mysql提供接口查询服务。

如果有更好的设计方案也欢迎交流😊

想着有这么个需求就测试下clickhouse是否能直连mysql,才有了下面的测试:

首先在mysql中创建一张表

create table test.employee(
 id int,
 name varchar(255),
 age int,
 gender varchar(10),
 e_mail varchar(255)
);

mysql插入数据

insert into test.employee values
(1,'zhangsan',24,'mail','zhangsan@163.com.cn'),
(2,'lisi',15,'femail','lisi@163.com.cn'),
(3,'wangwu',18,'mail','wangwu@163.com.cn');

clickhouse建表

create table mysqlemployee(
 id Nullable(Int32),
 name Nullable(String),
 age Nullable(Int32),
 gender Nullable(String),
 e_mail Nullable(String)
)engine=MySQL('192.168.xxx.xxx:3306','test','employee','username','password');

查询clickhouse表

select * from test.mysqlemployee;
====>
┌─id─┬─name─────┬─age─┬─gender─┬─e_mail──────────────┐
│  1 │ zhangsan │  24 │ mail   │ zhangsan@163.com.cn │
│  2 │ lisi     │  15 │ femail │ lisi@163.com.cn     │
│  3 │ wangwu   │  18 │ mail   │ wangwu@163.com.cn   │
└────┴──────────┴─────┴────────┴─────────────────────┘

对mysql表执行insert操作后查询clickhouse表

-- mysql执行insert操作
insert into test.employee values(4,'hanwu',33,'femail','hanwu@163.com');
-- 查询ck
select * from test.mysqlemployee;
====>
┌─id─┬─name─────┬─age─┬─gender─┬─e_mail──────────────┐
│  1 │ zhangsan │  24 │ mail   │ zhangsan@163.com.cn │
│  2 │ lisi     │  15 │ femail │ lisi@163.com.cn     │
│  3 │ wangwu   │  18 │ mail   │ wangwu@163.com.cn   │
│  4 │ hanwu    │  33 │ femail │ hanwu@163.com       │
└────┴──────────┴─────┴────────┴─────────────────────┘

对mysql执行update操作后查看clickhouse表

-- mysql update操作
update test.employee set age=50 where id=1;
-- 查询ck表
select * from test.mysqlemployee;
====>
┌─id─┬─name─────┬─age─┬─gender─┬─e_mail──────────────┐
│  1 │ zhangsan │  50 │ mail   │ zhangsan@163.com.cn │
│  2 │ lisi     │  15 │ femail │ lisi@163.com.cn     │
│  3 │ wangwu   │  18 │ mail   │ wangwu@163.com.cn   │
│  4 │ hanwu    │  33 │ femail │ hanwu@163.com       │
└────┴──────────┴─────┴────────┴─────────────────────┘

对mysql执行delete操作

-- mysql delete 操作
delete from test.employee where id=2;
-- 查看ck
select * from test.mysqlemployee;
====>
┌─id─┬─name─────┬─age─┬─gender─┬─e_mail──────────────┐
│  1 │ zhangsan │  50 │ mail   │ zhangsan@163.com.cn │
│  3 │ wangwu   │  18 │ mail   │ wangwu@163.com.cn   │
│  4 │ hanwu    │  33 │ femail │ hanwu@163.com       │
└────┴──────────┴─────┴────────┴─────────────────────┘

对mysql执行drop操作

-- mysql drop 操作
drop table test.employee;
-- 查询ck表,mysql表删除后会抛出异常
select * from test.mysqlemployee;
====>
Code: 1000. DB::Exception: Received from localhost:9000. DB::Exception: mysqlxx::BadQuery: Table 'test.employee' doesn't exist (192.168.xxx.xxx:3306)

对clickhouse执行insert操作

-- clickhouse执行insert操作
insert into test.mysqlemployee values(5,'tmp',23,'mail','tmp@100.com');
-- 查询ck
select * from test.mysqlemployee;
====>
┌─id─┬─name─┬─age─┬─gender─┬─e_mail──────┐
│  5 │ tmp  │  23 │ mail   │ tmp@100.com │
└────┴──────┴─────┴────────┴─────────────┘

--查询mysql
select * from test.employee;
====>
+------+------+------+--------+-------------+
| id   | name | age  | gender | e_mail      |
+------+------+------+--------+-------------+
|    5 | tmp  |   23 | mail   | tmp@100.com |
+------+------+------+--------+-------------+
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值