最近公司用clickhouse作为数据服务提供存储,看到了clickhouse的存储优势和单表计算优势,现在说说它在应用中有哪些坑在里面,还有我们应该怎么使用它。
我是Lee,在数据领域扎根了6年了,之前做基于Hive的数据仓库比较多,包括数据仓库层次建设、模型设计、数据接入、数据下发等等。
最近公司采用了新的流程,将数据仓库dws层结果放到clickhouse里,直接对外提供服务,app层结果直接在接口里实现,利用了clickhouse sql单表计算性能快的优势,将数据对外提供服务。
为甚么用Clickhouse?
这样做的优势是什么?
- 减少了数据仓库链路层次,少了许多集市层的表;
- 调度系统压力减小;
- 业务逻辑更改,或者码值更新,可以灵活调整sql,而不必重刷app层数据;
缺点是啥?
- 历史数据无法保存,无法统计到趋势数据;
- 暂时想到这一点,其他的后面再补充
使用的坑
- Date日期字段最小1970年,应用到到出生日期上就有问题,改用String或者Int32;对应的Date32,DateTime64也有日期范围;
- DateTime日期字段,插入时要指定yyyy-MM-dd HH:mm:ss19位长度的值,不然会截取下一字段的值补足19位;
- 分布式表和本地表,分布式表hash分布和本地表的order by主键要一致;程序操作(查询、写入)都操作分布式表,不要操作本地表;操作本地表,相同主键的数据可能分布到不同的本地表中,导致无法merge,只有本地表中,相同主键的数据才能被merge;
持续更新中…
Keep reading, Keep writing, Keep coding.
欢迎关注我的微信公众号,比较喜欢分享知识,也喜欢宠物,所以做了这2个公众号:
一起学习,一起进步。