ClickHouse 项目中常见的表引擎

一.外部存储:

            外部存储表引擎直接从其它的存储系统读取数据,例如读取HDFS的文件或者MySql数据库的表,这些表引擎只负责元数据管理和数据查询,他们自身通常并不负责数据的写入,数据文件直接由外部系统提供   

        1.HDFS: ENGINE = HDFS('hdfs://node01:8020/clickhouse/hdfs_table1','CSV');

        2.Mysql : ENGINE = MySQL('192.168.88.101:3306', 'scott', 'dept', 'root','123456');

        3.JDBC : 

        4.Kafka: ENGINE = Kafka()
                                                SETTINGS
                                                kafka_broker_list = 'node01:9092',
                                                kafka_topic_list = 'topic_clickhouse',
                                                kafka_group_name = 'clickhouse',
                                                kafka_format = 'TabSeparated',
                                                kafka_skip_broken_messages = 10;

二,内存类型

        将数据全量放在内存中,一方面,查询性能高,但是如果装载的数据量过大,可能带来极大的内存消耗和负担。

        1.Memory表引擎直接将数据保存在内存中,数据既不会被压缩也不会被格式化转换,数据在内存中保存的形态与查询时看到的如出一辙

当ClickHouse服务重启的时候,Memory表内数据会全部丢失

 当数据被写入,磁盘上不会创建任何数据文件

  ENGINE =  Memory()

        2.Set

        Set表引擎时拥有物理存储的,数据首先会被写至内存,然后同步到磁盘文件中。

所以当服务重启时,它的数据不会丢失,当数据表被重新装载时,文件数据会再次被全量加载至内存。

Set表引擎具有去重的内力,在数据写入的过程中,重复的数据会被自动忽略。

Set表引擎具有去重能力,在数据写入的过程中,重复的数据会被自动忽略。

Set表引擎的存储结构由两部分组成,他们分别是:

        .bin数据文件:保存了所有列字段的数据。其中,num是一个自增id,从1开始。伴随着没一批数据的写入,都会生成一个新的.bin文件,num也会随之加一。

        .tmp临时目录:数据文件首先会被写到这个目录,当一批数据写入完毕后,数据文件会被移除出次目录。

ENGINE = set()

        3.Join

        Join表引擎可以说是为JOIN查询而生的,它等同于将JOIN查询进行了一层简单封装。在Join表引擎的底层实现中,它与Set表引擎共用了大部分的处理逻辑,所以Join和Set表引擎拥有许多相似之处。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值