zoukankan      html  css  js  c++  java
  • 【ClickHouse】0:clickhouse学习1之数据引擎(数据库引擎,表引擎)

    ClickHouse提供了大量的数据引擎,分为数据库引擎、表引擎,根据数据特点及使用场景选择合适的引擎至关重要,这里根据资料做一些总结。

     数据库引擎官方文档: https://clickhouse.tech/docs/en/engines/database-engines

    数据库引擎默认是Ordinary,在这种数据库下面的表可以是任意类型引擎。
    生产环境中常用的表引擎是MergeTree系列,也是官方主推的引擎。
    MergeTree是基础引擎,有主键索引、数据分区、数据副本、数据采样、删除和修改等功能,
    ReplacingMergeTree有了去重功能,
    SummingMergeTree有了汇总求和功能,
    AggregatingMergeTree有聚合功能,
    CollapsingMergeTree有折叠删除功能,
    VersionedCollapsingMergeTree有版本折叠功能,
    GraphiteMergeTree有压缩汇总功能。
    在这些的基础上还可以叠加Replicated和Distributed。
    Integration系列用于集成外部的数据源,常用的有HADOOP,MySQL。

    引言

    表引擎在ClickHouse中的作用十分关键,直接决定了数据如何存储和读取、是否支持并发读写、是否支持index、支持的query种类、是否支持主备复制等。

    ClickHouse提供了大约28种表引擎,各有各的用途,比如有Lo系列用来做小表数据分析,MergeTree系列用来做大数据量分析,而Integration系列则多用于外表数据集成。再考虑复制表Replicated系列,分布式表Distributed等,纷繁复杂,新用户上手选择时常常感到迷惑。

    本文尝试对ClickHouse的表引擎进行梳理,帮忙大家快速入门ClickHouse。

    ClickHouse表引擎概览

    一共分为四个系列,分别是Log、MergeTree、Integration、Special。其中包含了两种特殊的表引擎Replicated、Distributed,功能上与其他表引擎正交,我们后续会单独写一篇文章来介绍。

    Log系列

    Log系列表引擎功能相对简单,主要用于快速写入小表(1百万行左右的表),然后全部读出的场景。

    几种Log表引擎的共性是:

    • 数据被顺序append写到磁盘上;
    • 不支持delete、update;
    • 不支持index;
    • 不支持原子性写;
    • insert会阻塞select操作。

    它们彼此之间的区别是:

    • TinyLog:不支持并发读取数据文件,查询性能较差;格式简单,适合用来暂存中间数据;

    • StripLog:支持并发读取数据文件,查询性能比TinyLog好;将所有列存储在同一个大文件中,减少了文件个数;

    • Log:支持并发读取数据文件,查询性能比TinyLog好;每个列会单独存储在一个独立文件中。

    Integration系列

    该系统表引擎主要用于将外部数据导入到ClickHouse中,或者在ClickHouse中直接操作外部数据源。

    • Kafka:将Kafka Topic中的数据直接导入到ClickHouse;

    • MySQL:将Mysql作为存储引擎,直接在ClickHouse中对MySQL表进行select等操作;

    • JDBC/ODBC:通过指定jdbc、odbc连接串读取数据源;

    • HDFS:直接读取HDFS上的特定格式的数据文件;

    Special系列

    Special系列的表引擎,大多是为了特定场景而定制的。这里也挑选几个简单介绍,不做详述。

    • Memory:将数据存储在内存中,重启后会导致数据丢失。查询性能极好,适合于对于数据持久性没有要求的1亿一下的小表。在ClickHouse中,通常用来做临时表。

    • Buffer:为目标表设置一个内存buffer,当buffer达到了一定条件之后会flush到磁盘。

    • File:直接将本地文件作为数据存储;

    • Null:写入数据被丢弃、读取数据为空;

    MergeTree系列

    Log、Special、Integration主要用于特殊用途,场景相对有限。MergeTree系列才是官方主推的存储引擎,支持几乎所有ClickHouse核心功能。

    以下重点介绍MergeTree、ReplacingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree、SummingMergeTree、AggregatingMergeTree引擎。

    参考文章:https://clickhouse.tech/docs/en/engines

    参考文章:https://blog.csdn.net/A1373712651/article/details/103608340

    参考文章:https://blog.csdn.net/qq_41106844/article/details/107067525

  • 相关阅读:
    UVa10340.All in All
    UVa1368.DNA Consensus String
    《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅲ
    UVa232.Crossword Answers
    Uva272.TEX Quotes
    《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅱ
    算法面试(3)
    算法面试(2)
    算法面试(1)
    hdu 4896 Minimal Spanning Tree
  • 原文地址:https://www.cnblogs.com/DBArtist/p/clickhouse_Engines.html
Copyright © 2011-2022 走看看