ClickHouse随记

  最近项目上遇到一部分需求,需要处理很大的数据级,领导推荐了clickHouse,目前还在一边使用一边学习,此处随记遇到的问题和解决方案,不足之处,请多指正。

一、ClickHouse的区别

  之前的项目中用到的是mysql,数据量上来之后,mysql的查询就很吃力,后来数据同步到clickhouse上,clickHouse支持mysql查询,有些地方不太相同,clickhouse是列式数据库管理系统,数据始终是按列存储的,有增删查,不能修改数据,删除又分物理表和分布式表,分布式表不支持删除,需要直接去删除物理表,这点需要注意,之前我删除数据时执行alert成功,但是数据还是在的,索性直接删了表重新同步数据,好吧,个人感觉有点别扭,但毕竟是分析型数据库。

二、ClickHouse的group by问题

    结合业务中,所有的查询基本都用到了group by,这ClickHouse的group by很奇怪,查询的字段包括分组的字段,必须要在group by中罗列,不然会报错,查询执行不通过,举个栗子:


  这里做一个简单的查询,查询两个字段other_id,user_id,通过user_id分组,需要查询other_id,这是如果group by中如果没有other_id,则会提示报错,当时我遇到这样一个场景,就是我需要查询other_id,user_id这里两个字段,但是不想让other_id参与分组,这里首先我说一下mysql的查询方式


表数据


mysql查询

    这里的user_id等于3的other_id实际上是有两个值2和3,那么在clickHouse中查询,需要user_id分组但是不想让other_id参与分组怎么办


other_id参与分组的查询结果


other_id不参与分组的方式查询

        clickHouse的聚合函数any(),意思是选择第一个遇到的值,这里对比一下mysql,mysql在这种情况下默认也是取第一个。




目前暂时遇到这么几个问题,后续遇到会持续更新,不足之处,请多指正,共同学习.......

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容