大数据系列——什么是ClickHouse?ClickHouse有什么用途?

这篇具有很好参考价值的文章主要介绍了大数据系列——什么是ClickHouse?ClickHouse有什么用途?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、什么是ClickHouse

二、ClickHouse有什么用途

三、ClickHouse的不足

四、适用场景

五、ClickHouse特点

六、ClickHouse VS MySQL

七、类SQL 语句 

八、核心概念


一、什么是ClickHouse

  • clickHouse是俄罗斯的 Yandex 公司于 2016 年开源的列式存储数据库,使用 C++ 语言编写;

clickhouse是什么,【能力】工作/软实力/书籍阅读,【技术】研发,【技术】数据库DB/缓存,大数据,ClickHouse

  • 一款面向 OLAP 的数据库
  • ClickHouse支持类SQL语言,提供了传统关系型数据的便利

二、ClickHouse有什么用途

专门用于 OLAP(联机分析处理),其性能惊人;

什么是 OLAP? 联机分析处理,又可以称之为多维分析处理。它指的是通过多种不同的维度审视数据,进行深层次分析。

三、ClickHouse的不足

高性能面向 OLAP 的数据库,不擅长的方面:

  • 不支持事务
  • 不擅长根据主键按行粒度进行查询(虽然支持),所以不应该把 ClickHouse 当做键值对数据库使用
  • 不擅长按行删除数据(虽然支持)

对于 OLAP 数据库而言,上述这些能力不是重点,只能说这是为了极致的查询性能所做的权衡。

四、适用场景

  • 绝大多数请求都是读取访问权限。
  • 数据以相当大的批次(> 1000行)更新,而不是单行更新; 或者它根本没有更新。
  • 数据已添加到数据库,但未进行修改。
  • 读取数据时,会从数据库中提取出大量的行,但只用到一小部分列 列式存储
  • 数据一致性要求较低

五、ClickHouse特点

  • 完备的DBMS功能
  • 列式存储和数据压缩

    列式存储,在扫描指定列时,不用按行组织其他非指定列的数据,避免多余的数据扫描。

    数据压缩,按照一定步长对数据进行匹配扫描,当发现重复部分的时候就进行编码转换,降低IO和存储的压力。

  • 向量化执行引擎

    简单理解就是消除程序循环的优化,堆机器加快速度,数据级并行。

  • 关系模型与SQL查询

        其他数据库迁移到CK的成本很低

  • 多样化的表引擎

    CK的最初架构是基于MySQL实现的,表引擎设计就与MySQL类似,存储引擎作为一层独立的接口。种类繁多,根据业务场景自行选择

  • 多线程与分布式

        多线程处理就是通过线程级并行的方式实现了性能的提升。

        预先将数据分布到各台服务器,将数据的计算查询直接下推到数据所在的服务器,因为计算移动比数据移动更加划算。

  • 多主架构

Multi-Master多主架构,集群中的每个节点角色对等,天然规避单点故障问题,适用于多数据中心、异地多活场景

  • 在线查询,CK又快又免费

与其他分析型数据库对比,存在许多相似之处,例如都支持海量查询场景、支持列式存储、数据分片、计算下推等特效,说明CK在设计上吸取了各路优点。

价格方面:其他开源系统慢,商用系统贵。CK又快又免费。

  • 数据分片和分布式查询

        CK有本地表(Local Table)和分布式表(Distributed Table),一张本地表等同于一份数据的分片,而分布式表不存储数据,只是本地表的访问代理。

        分布式表类似分库中间件,代理访问多个数据分片,实现分布式查询。

六、CH表对比

1、ClickHouse VS MySQL

  • MySQL单条SQL是单线程的,只能跑满一个core,ClickHouse相反,有多少CPU,吃多少资源,所以飞快;
  • ClickHouse不支持事务,不存在隔离级别。ClickHouse的定位是分析性数据库,而不是严格的关系型数据库。
  • IO方面,MySQL是行存储,ClickHouse是列存储,后者在count()这类操作天然有优势,同时,在IO方面,MySQL需要大量随机IO,ClickHouse基本是顺序IO。

2、ClickHouse VS Druid

参考:https://www.sohu.com/a/516246493_411876

clickhouse是什么,【能力】工作/软实力/书籍阅读,【技术】研发,【技术】数据库DB/缓存,大数据,ClickHouse

在广告场景下,基于benchmark分析来看,ClickHouse会比druid有许多可取之处:

  • 数据存储方面,ClickHouse的数据压缩和列式存储会极大节省存储空间,而druid和其他多数数据库都是基于时序的,druid在查询大范围的数据时会出现性能问题,而利用ClickHouse的分区键优化可以有效的解决这个问题 
  • 在查询方面,druid的排序,聚合能力都不太好,灵活性和扩展性也不够,比如缺少join,子查询,主键排序等这些需求。而这些用SQL都可以通过ClickHouse来支持解决。
  • 运维成本方面,Druid的运维是非常复杂的,虽然支持多种数据摄入的组件,但是组件的构成是比较复杂的,节点数量有6种之多,而ClickHouse架构采用的是对等节点的设计,节点就有一种类型,没有主从节点。

七、类SQL 语句 

1、 客户端登陆命令 : clickhouse-client -u user --password 123456 --port 9000


2、利用system数据库中的parts_columns表进行查询。

select distinct column from system.parts_columns 
where database='表所属的数据库名称' and table='所需要查询的表名'

例如:
select distinct column from system.parts_columns where database='test' and table='table1'


3、利用system数据库中的columns表进行查询。

select distinct name from system.columns 
where database='表所属的数据库名称' and table='所需要查询的表名'

例如:
select distinct name from system.columns where database='test' and table='table1'
ps :–推荐使用第二种方式来查询表的所有列名。

4、

 alter table 表名称 ON 集群名称 add column 列名称;        --添加列
 alter table 表名称 ON 集群名称 drop column 列名称;       --删除列
 alter table 表名称 ON 集群名称 modify column 列名称 数据类型;   --修改数据类型
 alter table 表名称 ON 集群名称 COMMENT COLUMN 列名称 注解;     --修改注释

5、建表
CREATE TABLE test.table1(
    `id` String COMMENT '主键',
    `chinese_name` Nullable(String) COMMENT '中文名称',
    `english_name` Nullable(String) COMMENT '英文名称',
    `update_time` Nullable(DATETIME) COMMENT '更新时间',
    `create_time` Nullable(DATETIME) COMMENT '创建时间'
)
ENGINE = MergeTree
order by id

6、删除表
//删除本地表
DROP table ti.java4al_base on cluster ck;
//删除分布式表
DROP table ti.java4al_base_all on cluster ck;

7、删除数据: 
方法1: 删除分区 alter table  name drop partition 分区;
方法:alter 语句 : alter table  name delete where 
ALTER TABLE <table_name> UPDATE col1 = expr1, ... WHERE <filter>
方法:
索引列不能进行更新


8、查询表容量及压缩
select
    table as "表名",
    sum(rows) as "总行数",
    formatReadableSize(sum(data_uncompressed_bytes)) as "原始大小",
    formatReadableSize(sum(data_compressed_bytes)) as "压缩大小",
    round(sum(data_compressed_bytes) / sum(data_uncompressed_bytes) * 100, 0) "压缩率"
from system.parts
    group by table;    

八、核心概念

clickhouse是什么,【能力】工作/软实力/书籍阅读,【技术】研发,【技术】数据库DB/缓存,大数据,ClickHouse

几个概念:

1、Column与Field:一列中的某一行(具体数值)用Field对象表示;一列数据用一个Column对象表现

2、DataType : 负责数据的序列化和反序列化相关工作,但是并不直接负责数据的读取,而是转由Column或Field对象获取。在DataType的实现类中,聚合了相应数据类型的Column对象和Field对象。

3、Block对象CK的数据操作是面向Block对象进行的,并且是采用流的形式。Block=数据对象(Column/Feild) + DataType + 列名称字符串。

4、Table:

在数据表的底层设计中并没有所谓的Table对象,它直接使用 IStorage接口指代数据表

表引擎是ClickHouse的一个显著特性, 不同的表引擎由不同的子类实现,例如IStorageSystemOneBlock (系统表)、StorageMergeTree(合并树表引擎)和 StorageTinyLog(日志表引擎)等。

5、Parser和Interpreter

Parser分析器负责创建AST对象,而Interpreter解释器则负责解释AST,并进一步创建查询的执行管道。它们与IStorage一起,串联起了整个数据查询的过程。

Parser分析器可以将一条SQL语句以递归下降的方法解析成 AST语法树的形式

不同的SQL语句,会经由不同的Parser实现类解析。

6、Functions与Aggregate Functions

  • 普通函数,例如四则运算、日前转换、网址提取函数、IP地址脱敏函数。没有状态,函数效果作用于每行数据之上。在函数具体执行过程中,采用向量化的方式直接作用于一整列数据,而不是一行一行计算。
  • 聚合函数,有状态的,例如COUNT聚合函数,AggregateFunctionCount的状态用整型UInt64记录。聚合函数 的状态支持序列化与反序列化,所以能够在分布式节点之间进行传 输,以实现增量计算。

7、Cluster与Replication

集群由分片(Shard)组成,分片由副本(Replica)组成。

CK的1个节点只能拥有一个分片,如果要实现1分片、1副本,至少需要部署两个服务节点。

分片是逻辑概念,物理承载由副本承担文章来源地址https://www.toymoban.com/news/detail-813888.html

到了这里,关于大数据系列——什么是ClickHouse?ClickHouse有什么用途?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据仓库系列:StarRocks的简单试用及与clickhouse的对比

    StarRocks 与 ClickHouse 是两款基于 MPP 架构的列式数据库管理系统,都可以提供高性能的 OLAP 分析能力。 但是它们在功能、性能和使用场景上也有一些区别。 总结如下: StarRocks 与 ClickHouse 最大的区别就在于对于 join 的处理上 。 ClickHouse 虽然提供了 join 的语义,但使用上对大表

    2024年02月09日
    浏览(39)
  • ClickHouse--04--数据库引擎、Log 系列表引擎、 Special 系列表引擎

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ClickHouse 中支持在创建数据库时指定引擎,目前比较常用的两种引擎为默认引擎 和 MySQL 数据库引擎。 Ordinary 就是 ClickHouse 中默认引擎,如果不指定数据库引擎创建的就是Ordinary 数据库引擎,在这种数据

    2024年02月20日
    浏览(53)
  • clickhouse 系列2:clickhouse 离线安装

    https://download.csdn.net/download/shangjg03/88353547 /etc/clickhouse-server : 服务端的配置文件目录,包括全局配置config.xml 和用户配置users.xml。 /var/lib/clickhouse : 默认的数据存储目

    2024年02月11日
    浏览(37)
  • ClickHouse(十三):Clickhouse MergeTree系列表引擎 - ReplicingMergeTree

      进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情! 👍点赞:赞同优秀创作

    2024年02月14日
    浏览(50)
  • ClickHouse(九):Clickhouse表引擎 - Log系列表引擎

      进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,Kerberos安全认证,大数据OLAP体系技术栈-CSDN博客 📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情! 👍点赞:赞同优秀创作

    2024年02月13日
    浏览(43)
  • clickhouse 系列1:clickhouse v21.7.5.29 源码编译

    安装依赖 下载gcc 源码包并解压  配置、编译和安装 初

    2024年02月10日
    浏览(29)
  • ClickHouse(十一):Clickhouse MergeTree系列表引擎 - MergeTree(1)

    进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,Kerberos安全认证,大数据OLAP体系技术栈-CSDN博客 📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情! 👍点赞:赞同优秀创作,

    2024年02月14日
    浏览(41)
  • ClickHouse--07--Integration 系列表引擎

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ClickHouse 提供了许多与 外部系统集成的方法 ,包括一些表引擎。这些表引擎与其他类型的表引擎类似,可以用于将外部数据导入到ClickHouse 中,或者在 ClickHouse中直接操作外部数据源。 HDFS 引擎支持 Cl

    2024年02月20日
    浏览(34)
  • ClickHouse--06--其他扩展MergeTree系列表引擎

    MergeTree 系列表引擎 --种类 MergeTree 系 列 表 引 擎 包 含 : MergeTree ReplacingMergeTree SummingMergeTree(汇总求和功能) AggregatingMergeTree(聚合功能) CollapsingMergeTree(折叠删除功能) VersionedCollapsingMergeTree(版本折叠功能)引擎 在这些的基础上还可以叠加 Replicated 和 Distributed。 1.1 概

    2024年02月20日
    浏览(34)
  • 【clickhouse】ClickHouse与MySQL之间实时同步数据(MySQL引擎),将MySQL数据实时同步到clickhouse

    参考1:MySQL(通过该配置实现了实时同步) 参考2:experimental MaterializedMySQL 参考3:[experimental] MaterializedMySQL(包含设置 allow_experimental_database_materialized_mysql) MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许您对表进行INSERT和SELECT查询,以方便您在ClickHouse与MySQL之间进行

    2024年01月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包