基于ClickHouse来实现实时数仓,一般来说我们可以将热数据存储在ClickHouse中,比如:存储最近30天的数据。对于冷数据,可以通过ClickHouse自带的TTL机制自动备份到对象存储中,比如:各云厂商的对象存储服务。如果想查询冷数据,可以通过CH的s3表引擎来实现,将s3对象存储,映射为CH中的一张表。其思路,与hadoop集成s3的方式类似。整体的架构图如下:
ClickHouse官方目前支持以TTL的方式,将冷数据备份到别的磁盘上,也支持备份到S3对象存储上。但是不支持备份到HDFS上。传统的文件系统,都具有目前结构的。hdfs本身也是个文件系统,小文件的处理也是个比较棘手的问题。文件越多目前层级越深,遍历的性能会越低。无论你是在window系统上进行全盘扫描,还是在linux进行文件夹传输,如果文件很多,你就会发现处理的效率非常低。对象存储技术的出现,很好解决传统文件系统的问题。其理论上就是个KV存储系统,V可以存储各种数据,比如:文本、视频、音频等。对象资源访问的时候,性能非常高,因为其没有层级目录的概念,直接通过K就可以找到V资源。这也是对象存储那么流行的原因。
ClickHouse支持对列和表进行TTL配置,官方有非常清晰的说明。可以直接访问官方文档。参考地址如下:
https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#mergetree-table-ttl
网友评论