ClickHouse

学习链接

1、ClickHouse介绍

ClickHouse是什么?

由白俄罗斯Yandex公司开源的数据库,转为OLAP而设计。Yandex是俄罗斯最大的搜索引擎公司,官方称ClickHouse日处理记录数“十几亿”。发布之初跑分要超过很多流行的商业数据库软件,官方的性能测试相识比vertica快5倍,比GP快10倍。

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)

OLAP

OLAP:联机分析处理OLAP是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多维信息的快速分析的特征。其中F是快速性(Fast),指系统能在数秒内对用户的多数分析要求做出反应;A是可分析性(Analysis),指用户无需编程就可以定义新的专门计算,将其作为分析的一部 分,并以用户所希望的方式给出报告;M是多维性(Multi—dimensional),指提供对数据分析的多维视图和分析;I是信息性(Information),指能及时获得信息,并且管理大容量信息

  • 大多数是读请求
  • 数据总是以相当大的批(> 1000rows)进行写入
  • 不修改已添加的数据
  • 每次查询从数据库中读取大量的行,但时同时又仅需要少量的列
  • 宽表,即每个表包含大量的列
  • 较少的查询(通常每台服务器每秒数百个查询或更少)
  • 列中的数据相对较小:数字和短字符串(例如:每个URL 60个字节)
  • 处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
  • 事务不是必须的
  • 对数据一致性要求低
  • 每一个查询除了一个大表外都很小
  • 查询结果明显小于元源数据,换句话说,数据被过滤或聚合后能够盛放在单台服务器的内存中

列式数据库与行式数据库

常见的行式数据库:MySQL、Postgres、MS SQL Server

常见的列式数据库:Vertica、Paraccel(Actian Matrix, Amazon Redshift)、Sybase IQ、Exasol、Infobright、InfiniDB、MonetDB(VectorWise, Actian Vector)、LucidDB、SAP HANA、Google Dremel、Google PowerDrill、Druid、kdb+)

按行随机读取,无法并行处理

按列顺序读取,可以有效利用多核CPU

ClickHouse的特性

优势:

  1. 数据压缩
  2. 磁盘存储:机械硬盘也可以有较好的性能
  3. 多核心并行处理
  4. 多服务器分布式处理
  5. 支持SQL
  6. 向量引擎(SSE 4.2指令集)
  7. 实时的数据更新(持续写入)
  8. 稀疏索引
  9. 适合在线查询(不需要预处理既可以以较快的速度响应)
  10. 支持近似计算(Sample采样)
  11. 支持数据复制和数据完整性:异步多主复制

限制:

  1. 没有完整的事务支持
  2. 缺少高频率,低延迟的修改或删除已存在数据的能力
  3. 不适合通过主键检索单行数据

ClickHouse的性能

写入:建议每次写入不少于1000行,或每秒不超过一个写入请求。当使用TSV格式将一份数据写入到MergeTree表中时,写入速度大约为50到200MB/s

以历史数据表为例,6000w行的数据,从MySQL导入ClickHouse耗时为5min,平均每秒20w行存储(LZ4/ZSTD )

查询:参考官方数据

连接工具

clickhouse-client(TCP)

DBeaver(HTTP)

DateGrip(HTTP)

2、ClickHouse基本概念

基本术语

数据库:

  • 表:表有独立的引擎,有些引擎相当于视图
  • 列:不同列的数据分开存储。支持物化列
  • 物化视图:物化视图可用于构建数据立方体(预聚合)、数据传输等
  • 分区键:分区键分度不能太高,否则可能会导致创建的文件太多,反而降低查询性能,一般控制在1000个分区以内
  • 排序键:排序键用于对数据文件的内容进行排序
  • 主键:主键保存在内存中,一般与排序键一致,不另外声明

字段类型

Nullable 默认不为空,可为空时用Nullable修饰
整数 [U]Int(8/16/32/64/128/256)
浮点数 Float(32/64)
Decimal Decimal(P,S), Decimal32(S), Decimal64(S), Decimal128(S), Decimal256(S)
Boolean 底层以Int8存储(0/1)
String 相当于其他数据库中的VARCHAR/BLOB/CLOB等类型
FixString(n) 固定n个字节的字符串
UUID 默认值00000000-0000-0000-0000-000000000000,可用generateUUIDv4()生成
Date 支持范围 1970-01-01 ~ 2105-12-31(及2106年的一部分)
DateTime([timezone]) [1970-01-01 00:00:00, 2105-12-31 23:59:59]
DateTime64(precision, [timezone]) 时间精度为 10^(−precision)

学习笔记_ClickHouse相关推荐

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  2. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  5. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  6. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. 关于Markdown编辑器怎么写“|”等特殊符号的问题
  2. mysql log stats_MySQL慢查询之pt-query-digest分析慢查询日志
  3. 【IDEA】IDEA 单元测试 System.in 没办法输入
  4. 对于java中接口的作用与理解
  5. Oracle数据库中的数据类型
  6. 古建筑数字化影像采集技术分析
  7. 移动计算机笔试题,广东移动笔试题目
  8. javaw java_java与javaw区别
  9. 微信分享返回 错误码 -6 的情况!
  10. 机器学习实践系列之9 - 视频结构化
  11. 云计算与大数据概论第十一周(2)
  12. GitHub 用户专属福利,实际到账 3K+,Namebase Airdrop
  13. 自媒体新手怎么赚钱,搬运不是长久的出路!
  14. 数字IC所用软件及IP分类
  15. 集群学习分享2:pcs+postgresql一主两从集群搭建
  16. SM2算法第十二篇:数字证书原理
  17. Java Build工具Ant与Maven之比较
  18. 高效设置的Linux代理效劳器 Squid引见
  19. 『腾讯后台开发』实习生技能要求
  20. 计算机专英语第6版翻译10.2,2010年6月英语六级翻译题模拟训练附答案 第2期

热门文章

  1. 在express路由中使用ejs模板引擎
  2. websocket 传输文件
  3. java同步锁优化方案学习笔记(偏向锁,轻量级锁,自旋锁,重量级锁)
  4. j和jk是有区别的_jk制服和水手服到底有什么区别啊
  5. android虚拟设备 组成,2.1.2 Android虚拟设备和模拟器
  6. 海马玩模拟器卸载后怎么恢复Virtualbox
  7. 论文查重系统可以检测哪几种语言?
  8. 仿QQ黑屏、锁屏、程序切换等手势密码
  9. EC20 centos7 调试_TIA配合NX MCD与SIMIT进行虚拟调试案例步骤与模型
  10. Memblaze携全闪存VSAN解决方案亮相VMworld2015