「从ES到CK 02」Clickhouse的基础知识扫盲

这篇具有很好参考价值的文章主要介绍了「从ES到CK 02」Clickhouse的基础知识扫盲。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导航

        在完成将公司日志数据从Elasticsearch(下称ES)转战到Clickhouse后,个人认为有必要将过程记录分享。限于篇幅及便于分类组织,我会以一个系列文章的形式记录:

  • 01 《Elasticsearch vs Clickhouse》
  • 02 《Clickhouse的基础知识扫盲》
  • 03 《​Clickhouse多分片多副本集群部署​》
  • 04 《​​Clickhouse表引擎选择和表结构设计​》
  • 05 《​clickhouse高效数据处理工具vector​》
  • 06 《​​​​​​​​​clickhouse的数据可视化工具clickvisual​》
  • 07 《kibana自定义插件跳转clickvisual》
  • 08 《妙用clickvisual api实现用户自动管理》(敬请期待)

通过接口机写入数据到ck分布式表,日志解决方案,elasticsearch,clickhouse

一、CLickhouse 是什么

        ClickHouse是俄罗斯Yandex公司于2016年开发,是一个用于OLAP的列式数据库管理系统(DBMS)。

存储形式

优点

缺点

业界代表

行式

  • 针对行的查询
  • 一致性、事务性强
  • 适合频率较高delete/update 
  • 针对列的查询
  • 存储成本高
  • 不利于聚合操作 

Mysql、sql server等

列式

  • 针对列的查询
  • 压缩率高(值近似、类型一致),存储成本低
  • 单表海量数据查询/分析效率高、速度快 
  • 针对行的查询
  • 一致性、事务性弱
  • 不适合频率较高delete/update
  • 多表关联查询

Clickhouse、SAP HANA等

二、为什么选择CLickhouse

  • 数据压缩

        支持多种压缩算法,在磁盘空间和cpu的消耗之间达到相对平衡

  • 顺序读写

        通过预排序、定期合并排序,巧妙的转化为顺序读写,大大提升吞吐量和查询效率

  • 多核心并行处理

        ClickHouse会使用服务器上一切可用的资源,从而以最自然的方式并行处理大型查询

  • 支持通用SQL

        在大多数情况下遵循ANSI SQL标准 

三、CLickhouse 基础知识科普

1、架构层面

(1)分片
  • 数据读取由分布式表从所有分片获取数据,作并行处理后返回客户端
  • 数据写入有2种方式: 1、直接写入本地表,通过外部负载均衡实现数据平均分布 2、通过分布式表写入,利用sharding_key实现数据平均分布, 支持如下分片方式:

分片方式

说明

random随机分片

写入数据会被随机分发到分布式集群中的某个节点上

constant固定分片

写入数据会被分发到固定一个节点上

column value分片

按照某一列的值进行hash分片

自定义表达式分片

指定任意合法表达式,根据计算后的值进行hash分片

(2)副本
  • Clickhouse 使用 zookeeper(请使用3.4.5或以上版本)存储副本的元信息
  • 副本是表级别的,不是服务器级别的。所以服务器里可以同时有复制表和非复制表
  • 只有MergeTree 系列里的表可支持副本
  • INSERT和ALTER语句会被复制
  • 复制方式是多主异步的 

2、表引擎

(1)合并树家族(MergeTree)

        合并树家族(MergeTree)是Clickhouse内适用于高负载任务的最通用和功能最强大的表引擎,基于MergeTree还衍生出十多种具备不同特性的表引擎,下文会重点介绍MergeTree。日志平台选用的是ReplicatedMergeTree,以实现数据副本复制

(2)集成的表引擎

        支持直接从Hive、S3、RabbitMQ、kafka、mysql等14种常见的数据源同步数据 

(3)特殊的表引擎
  • 分布式表:本身不存储数据,读取时可在多个服务器进行分布式查询,自动并行后返回。写入时可通过sharding_key将数据写入各个shard
  • 物化视图:功能类似于数据库视图

3、表结构(MergeTree)

(1)索引
  • 一级索引(稀疏索引):将每列数据按照 index granularity(默认8192行)进行划分,查询时用二分法查找数据。因此,应尽量选用区分度低的字段
  • 二级索引(跳数索引):跳数索引是指数据片段按照粒度(index_granularity)分割成小块后,将一定数量(granularity_value)的小块按照一定规则组合成一个新的块,对这个新的块写入索引信息 
(2)主键

        主键值不是唯一的,且主键必须是 order by 字段的前缀字段。主键索引采用的是稀疏索引。

(3)排序(必填)

        MergeTree 中唯一一个必填项,它设定了分区内的数据按照哪些字段顺序进行有序保存,应根据字段使用频率、优先级,由高至低组合,在没有显式设置主键的情况下,order by 字段即主键。 

(4)常用压缩方式
  • LZ4:默认的压缩方式,压缩/解压性能极强,但压缩率一般
  • ZSTD[(level)]:压缩/解压性能不如LZ4,但压缩率比LZ4高,常用于字符串类型。默认level为1,支持1-22,数字越大压缩率越高,但压缩/解压消耗的cpu、io资源就越多,可结合实际情况设置level值,在cpu资源和磁盘空间之间达到相对平衡
(5)分区

        分区是在一个表中通过指定的规则划分而成的逻辑数据集。分区的目的主要是降低扫描的范围,避免全表扫描,优化查询速度,一般按月、日或事件类型来划分。但要避免过于精细的分区方案,以免影响整体性能。 

(6)数据生命周期

        支持字段、表级别的TTL。当字段的值过期时,会替换成该字段的默认值,当该字段所有值过期,会自动删除此字段;当表中的数据行过期时,会自动删除对应行

四、Clickhouse的配套组件

  • zookeeper

        负责存储表的元数据,用于副本复制

  • chproxy

        负责Clickhouse节点的负载均衡,可实现读写分离

  • clickvisual

        目前市面上唯一一款支持clickhouse的类kibana的业务日志查询平台,支持日志查询、聚合、告警

五、CLickhouse部署架构参考

        下图为1分片2副本的架构图:

通过接口机写入数据到ck分布式表,日志解决方案,elasticsearch,clickhouse

六、参考文档

  • Clickhouse

        ​​https://clickhouse.com/docs/zh​​

  • Chproxy

        ​​https://www.chproxy.org/cn​​

  • Clickvisual

        ​​https://clickvisual.gocn.vip/​​

下回预告

        Clickhouse多分片多副本集群的详细部署过程,欢迎关注后续更新的系列文章~文章来源地址https://www.toymoban.com/news/detail-774173.html

到了这里,关于「从ES到CK 02」Clickhouse的基础知识扫盲的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 「从ES到CK 01」Elasticsearch vs Clickhouse

            在完成将公司日志数据从Elasticsearch(下称ES)转战到Clickhouse后,个人认为有必要将过程记录分享。限于篇幅及便于分类组织,我会以一个系列文章的形式记录: 01 《Elasticsearch vs Clickhouse》 02 《Clickhouse的基础知识扫盲》 03 《​Clickhouse多分片多副本集群部署​》 04

    2024年02月04日
    浏览(30)
  • 「从ES到CK 05」clickhouse高效数据处理工具vector

            在完成将公司日志数据从Elasticsearch(下称ES)转战到Clickhouse后,个人认为有必要将过程记录分享。限于篇幅及便于分类组织,我会以一个系列文章的形式记录: 01 《Elasticsearch vs Clickhouse》 02 《Clickhouse的基础知识扫盲》 03 《​Clickhouse多分片多副本集群部署​》 04

    2024年02月03日
    浏览(32)
  • 「从ES到CK 04」Clickhouse表引擎选择和表结构设计

            在完成将公司日志数据从Elasticsearch(下称ES)转战到Clickhouse后,个人认为有必要将过程记录分享。限于篇幅及便于分类组织,我会以一个系列文章的形式记录: 01 《Elasticsearch vs Clickhouse》 02 《Clickhouse的基础知识扫盲》 03 《​Clickhouse多分片多副本集群部署​》 04

    2024年02月03日
    浏览(28)
  • Java基础知识篇02——封装

    大家好,我是白夜,今天给大家聊聊面向对象的三大特征——封装 先来看看我们之前写的代码结构 以上代码存在的问题 所有类写在一个目录下面,非常难管理,因为以后项目不可能只有这么几个类,当类数量很大的时候,就不容易管理了。 不能写同名但是不同需求的类。

    2024年04月12日
    浏览(32)
  • Web安全-渗透测试-基础知识02

    无代理服务器 Request请求数据包 Reponse相应数据包 有代理服务器 Requeset请求数据包 Proxy代理服务器 Reponse相应数据包 代理的出现在接受数据包和发送数据包的时候提供了修改数据包的机会 总结: 建立连接——发送请求数据包——返回响应数据包——关闭连接 定义: HTTP协议是超

    2024年02月07日
    浏览(34)
  • STM32-02-STM32基础知识

    STM32F103 STM32F103是ST公司基于ARM授权Cortex M3内核而设计的一款芯片,而 Cortex M内核 使用的是 ARM v7-M架构 ,是为了替代老旧的单片机而量身定做的一个内核,具有低成本、低功耗、实时性好、中断响应快、处理效率高等特点。 架构 、 内核 、 芯片 的关系: 架构 : (ARMv7-M)

    2024年02月03日
    浏览(28)
  • Java基础知识篇02——Java基本语法

    定义: 就是用了保存数据的一个类型,一种数据类型,只能保存该类型数据值 作用: 只有了解数据类型,才能选择合适的类型存放数据,才能更好的利用计算机硬件资源(内存和硬盘等)。 不同的数据类型存放数据大小是不同的。 数据类型的使用方式就是用来声明一个变量,

    2024年03月15日
    浏览(46)
  • 前端02:CSS选择器等基础知识

    CSS基础选择器、设置字体样式、文本样式、CSS的三种引入方式、能使用Chrome调试工具调试样式 HTML专注做结构呈现,样式交给CSS,即结构(HTML)和样式CSS相分离 CSS主要由量分布构成,选择器以及一条或多条声明 选择器:给谁改样式 声明:改什么样的样式 在head最后写上styt

    2023年04月25日
    浏览(34)
  • 02 k8s考试基础知识(一)

    服务发现负载平衡 , 服务很方便的给外部用户 方便回滚和故障恢复 有金主爸爸们(google 红帽之类的) master(或者叫做Control Plane) 这边4个 etcl 存储这个分布式集群的信息 apiserver 通信用的 controller manage 这个是apiserver的小弟,没有主意的古惑仔 schedule 这个是apiserver的小弟之

    2024年02月03日
    浏览(42)
  • k8s学习笔记-02(Pod基础知识)

    原创文档编写不易,未经许可请勿转载。文档中有疑问的可以邮件联系我。 邮箱:yinwanit@163.com k8s中不能直接对容器进行管理,k8s中最小得的理单元即Pod。 Pod分为静态POD和动态POD,静态Pod不通过kubelet管理。 同一个pod内共享同一个网络命名空间,IP地址等信息没有配置在具体

    2024年02月14日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包