ClickHouse入门、实战与进阶

ClickHouse入门、实战与进阶

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

ClickHouse领域集大成之作。

内容简介

本书从基础知识、实现原理、项目实战、扩展应用4个维度全面展开,表述简练清晰、案例丰富实用,既可以作为入门的标准参考书,又适合作为案头速查手册。

全书共10章,主要内容如下:

第1~3章整体介绍ClickHouse概念、特性、应用场景、技术生态、快速入门和基础数据类型等基础内容,目的是从本质上揭开ClickHouse高性能背后的秘密,帮助读者快速上手实践。

第4~6章重点讲解ClickHouse的高级数据类型、函数和SQL查询语法与配置实践等进阶内容,通过该部分内容的阅读和学习,你将全面掌握ClickHouse核心功能的使用方法和技巧。

第7~10章从企业级项目实战的角度出发,详细解析ClickHouse在实际业务项目中的使用,主要包括基于Spring Boot开发ClickHouse SQL查询工具、基于ClickHouse Bitmap实现DMP用户画像标签圈选人、基于ZooKeeper搭建ClickHouse分布式集群、基于Grafana搭建ClickHouse集群监监控平台等相关内容。

作者简介

作者陈光剑,资深开发人员,目前就职于阿里巴巴集团,参与过多种平台工具的开发,具有丰富的平台开发经验,操练过Java、Android、Scala、Groovy等语言进行领域建模、架构设计、工具开发,在工作中积累了大量经验,善于总结,乐于分享,发布过大量技术文章。

章节目录

版权信息

赞誉

前言

第1章 全面了解ClickHouse

1.1 ClickHouse概述

1.2 ClickHouse特性

1.2.1 深度列存储

1.2.2 向量化查询执行引擎

1.2.3 数据压缩

1.2.4 使用磁盘

1.2.5 支持SQL

1.2.6 实时数据更新

1.2.7 稀疏索引

1.2.8 运行时代码生成

1.2.9 支持近似计算

1.2.10 数据TTL

1.2.11 高吞吐写入能力

1.2.12 多核心并行计算

1.2.13 多服务器分布式计算

1.2.14 分布式MPP计算架构

1.2.15 分片和副本

1.2.16 完整的DBMS能力

1.2.17 自适应连接算法

1.2.18 数据复制和数据完整性

1.2.19 提供复合数据类型和丰富的函数库

1.3 ClickHouse应用场景

1.3.1 典型应用场景

1.3.2 通用解决方案

1.4 ClickHouse技术生态

1.4.1 ClickHouse用户都有哪些

1.4.2 ClickHouse的优点

1.4.3 ClickHouse的缺点

1.4.4 ClickHouse未来展望

1.5 本章小结

第2章 ClickHouse快速入门

2.1 安装与运行ClickHouse

2.1.1 在macOS系统中安装ClickHouse

2.1.2 在Linux系统中安装ClickHouse

2.1.3 在Windows系统中使用Docker安装ClickHouse

2.2 ClickHouse常用命令行

2.2.1 ClickHouse命令行清单

2.2.2 实用命令行工具

2.3 本章小结

第3章 ClickHouse基础数据类型

3.1 基础数据类型概述

3.2 数值类型

3.3 字符串类型

3.4 时间类型

3.5 本章小结

第4章 ClickHouse高级数据类型

4.1 数组类型

4.1.1 数组类型定义

4.1.2 创建数组

4.1.3 数组基础操作

4.2 元组类型

4.2.1 元组定义

4.2.2 创建元组

4.2.3 使用元组

4.3 嵌套数据类型

4.3.1 嵌套类型定义

4.3.2 创建嵌套类型

4.3.3 嵌套类型的使用

4.4 Map类型

4.4.1 Map类型定义

4.4.2 创建Map类型

4.4.3 Map常用操作

4.5 Nullable类型

4.6 聚合函数类型

4.6.1 聚合函数类型定义

4.6.2 使用-State函数聚合物化视图指标

4.6.3 使用-Merge函数读取聚合结果值

4.7 Bitmap类型

4.7.1 Bitmap简介

4.7.2 创建Bitmap类型

4.7.3 Bitmap常用操作函数

4.8 本章小结

第5章 ClickHouse函数

5.1 概述

5.1.1 ClickHouse函数简介

5.1.2 ClickHouse函数分类

5.1.3 表级别函数

5.1.4 聚合函数算子

5.2 算术函数

5.2.1 加法函数

5.2.2 减法函数

5.2.3 乘法函数

5.2.4 浮点除法函数

5.2.5 整数除法函数

5.2.6 带0整数除法函数

5.2.7 取余函数

5.2.8 带0取余函数

5.2.9 负数函数

5.2.10 绝对值函数

5.2.11 最大公约数函数

5.2.12 最小公倍数函数

5.2.13 最大数函数

5.2.14 最小数函数

5.3 数组函数

5.3.1 判断空数组函数

5.3.2 判断非空数组函数

5.3.3 数组长度函数

5.3.4 根据范围构造数组函数

5.3.5 根据元素字面量构造数组

5.3.6 拼接数组函数

5.3.7 根据下标获取元素函数

5.3.8 判断是否包含元素函数

5.3.9 判断是不是子数组函数

5.3.10 判断两个数组是否有交集函数

5.3.11 返回元素下标函数

5.3.12 数组切片函数

5.3.13 数组升序排序函数

5.3.14 数组降序排序函数

5.3.15 数组自定义排序函数

5.3.16 数组自定义逆序排序函数

5.3.17 计算数组不重复元素个数函数

5.3.18 数组元素去重函数

5.3.19 数组交集函数

5.3.20 数组归并函数

5.3.21 数组逆序函数

5.3.22 数组拍平函数

5.3.23 数组压缩函数

5.3.24 数组元素映射函数

5.3.25 数组过滤函数

5.3.26 求数组最小元素函数

5.3.27 求数组最大元素函数

5.3.28 数组元素求和函数

5.3.29 数组元素平均值函数

5.3.30 数组元素相乘函数

5.3.31 数组元素展开函数

5.4 字符串函数

5.4.1 字符串判空函数

5.4.2 字符串非空判断函数

5.4.3 字符串字节长度函数

5.4.4 左补齐字符串函数

5.4.5 右补齐字符串函数

5.4.6 字符串转小写函数

5.4.7 字符串转大写函数

5.4.8 重复字符串函数

5.4.9 拼接字符串函数

5.4.10 计算子串函数

5.4.11 base64编码函数

5.4.12 base64解码函数

5.4.13 判断开头字符串函数

5.4.14 判断结尾字符串函数

5.4.15 删除空白字符函数

5.4.16 从HTML提取纯文本函数

5.4.17 字符串部分替换函数

5.4.18 字符串全部替换函数

5.4.19 字符串正则部分替换函数

5.4.20 字符串正则全部替换函数

5.4.21 计算子串下标函数

5.4.22 正则匹配函数

5.4.23 模糊匹配函数

5.4.24 正则匹配次数函数

5.5 条件函数

5.5.1 单条件分支函数

5.5.2 多条件分支函数

5.5.3 NULL值判断

5.6 时间函数

5.6.1 计算当前时间函数

5.6.2 计算今天日期函数

5.6.3 计算昨天日期函数

5.6.4 计算当前时区函数

5.6.5 计算时区函数

5.6.6 时区转换函数

5.6.7 计算年份函数

5.6.8 计算季度函数

5.6.9 计算月份函数

5.6.10 计算该年中第几天函数

5.6.11 计算该月中第几天函数

5.6.12 计算该周中第几天函数

5.6.13 计算小时函数

5.6.14 计算分钟函数

5.6.15 计算秒函数

5.6.16 计算UNIX时间戳函数

5.6.17 时间加法函数

5.6.18 时间减法函数

5.6.19 计算相差天数函数

5.7 数学函数

5.7.1 生成随机数函数

5.7.2 生成随机字符串函数

5.7.3 向下取整函数

5.7.4 向上取整函数

5.7.5 最大绝对值函数

5.7.6 自然常数函数

5.7.7 圆周率函数

5.7.8 自然指数函数

5.7.9 自然对数函数

5.7.10 求根函数

5.7.11 三次方根函数

5.7.12 正弦函数

5.7.13 余弦函数

5.7.14 正切函数

5.7.15 反正弦函数

5.7.16 反余弦函数

5.7.17 反正切函数

5.7.18 指数函数

5.7.19 符号函数

5.7.20 伽马函数

5.8 聚合函数

5.8.1 计数函数

5.8.2 近似去重计数函数

5.8.3 精确去重计数函数

5.8.4 近似计算不同值数量

5.8.5 使用哈希算法近似计算不同值数量

5.8.6 计算出现频率最高的值

5.8.7 计算总和函数

5.8.8 计算最大值函数

5.8.9 计算最小值函数

5.8.10 计算平均值函数

5.8.11 绘制柱状图函数

5.8.12 计算序列的偏度

5.8.13 计算序列的样本偏度

5.8.14 线性回归函数

5.8.15 计算分位数

5.8.16 用列值创建数组

5.8.17 用列值创建数组并去重

5.9 窗口函数

5.9.1 自增行号函数

5.9.2 跳跃排名函数

5.9.3 连续排名函数

5.9.4 窗口计数函数

5.9.5 窗口最大值函数

5.9.6 窗口最小值函数

5.9.7 窗口平均值函数

5.10 空值函数

5.11 常用算子

5.12 本章小结

第6章 ClickHouse SQL基础

6.1 SQL概述

6.1.1 SQL简史

6.1.2 SQL命令类型

6.1.3 ClickHouse SQL

6.1.4 ClickHouse查询分类

6.2 数据定义

6.2.1 概述

6.2.2 创建数据库

6.2.3 删除数据库

6.2.4 创建MergeTree表

6.2.5 复制表

6.2.6 从查询语句创建表

6.2.7 从表函数创建表

6.2.8 创建视图

6.2.9 创建函数

6.2.10 创建字典

6.2.11 RENAME操作

6.2.12 ALTER操作

6.2.13 DROP操作

6.3 数据操作

6.3.1 概述

6.3.2 插入数据

6.3.3 UPDATE操作

6.3.4 DELETE操作

6.3.5 EXCHANGE操作

6.3.6 OPTIMIZE操作

6.3.7 ATTACH操作

6.3.8 DETACH操作

6.4 数据查询

6.4.1 概述

6.4.2 WITH子句

6.4.3 FROM子句

6.4.4 SAMPLE子句

6.4.5 JOIN子句

6.4.6 PREWHERE子句

6.4.7 WHERE子句

6.4.8 GROUP BY子句

6.4.9 HAVING子句

6.4.10 SELECT子句

6.4.11 DISTINCT子句

6.4.12 LIMIT子句

6.4.13 SETTINGS子句

6.4.14 UNION子句

6.4.15 INTERSECT子句

6.4.16 EXCEPT子句

6.4.17 INTO OUTFILE子句

6.4.18 FORMAT子句

6.4.19 SHOW查询

6.4.20 EXISTS查询

6.4.21 KILL查询

6.5 数据控制

6.5.1 概述

6.5.2 创建用户

6.5.3 创建角色

6.5.4 创建行策略

6.5.5 创建配额

6.5.6 创建配置文件

6.5.7 修改用户、角色、行策略、配额和配置

6.5.8 撤销授权

6.6 PROJECTION特性

6.6.1 新增高基维度投影

6.6.2 构建测试数据

6.6.3 关闭投影优化开关测试

6.6.4 开启投影优化开关测试

6.6.5 性能数据

6.6.6 维度字段基数对投影性能的影响

6.7 EXPLAIN命令

6.7.1 EXPLAIN概述

6.7.2 EXPLAIN语句类型

6.7.3 EXPLAIN AST

6.7.4 EXPLAIN SYNTAX

6.7.5 EXPLAIN PLAN

6.7.6 EXPLAIN PIPELINE

6.7.7 EXPLAIN ESTIMATE

6.8 本章小结

第7章 基于Spring Boot开发ClickHouse SQL查询工具

7.1 项目概述

7.1.1 功能界面

7.1.2 项目技术栈

7.2 开发后端查询服务

7.2.1 创建Spring Boot工程

7.2.2 配置ClickHouse JDBC依赖

7.2.3 配置ClickHouse数据库连接信息

7.2.4 ClickHouse客户端查询实现

7.2.5 查询功能单元测试

7.2.6 实现SQL查询HTTP接口

7.2.7 HTTP接口测试

7.3 开发前端UI界面

7.3.1 Node环境准备

7.3.2 Arco Design简介

7.3.3 创建Arco React工程

7.3.4 实现SQL编辑器

7.3.5 SQL查询功能实现

7.3.6 格式化SQL实现

7.3.7 实现JSONEditor来展示查询结果

7.3.8 格式化JSON实现

7.4 系统集成部署

7.4.1 打包前端静态资源

7.4.2 集成到后端工程

7.5 项目测试

7.6 本章小结

第8章 基于ClickHouse Bitmap实现DMP用户画像标签圈人

8.1 项目背景知识

8.1.1 数据管理平台

8.1.2 客户数据平台

8.1.3 客户关系管理

8.1.4 数据仓库

8.1.5 数据统计分析术语

8.2 项目技术方案

8.2.1 创建用户标签宽表

8.2.2 创建Bitmap圈选表

8.2.3 将用户标签宽表转为Bitmap表

8.2.4 人群数量计算

8.2.5 实时人群圈选

8.2.6 圈选人群包存储

8.2.7 人群画像洞察

8.3 本章小结

第9章 基于ZooKeeper搭建ClickHouse分布式集群

9.1 方案概述

9.2 ZooKeeper集群环境准备

9.2.1 ZooKeeper简介

9.2.2 使用Docker安装ZooKeeper

9.2.3 配置ZooKeeper集群

9.2.4 创建ZooKeeper集群的docker-compose.yaml配置文件

9.3 ClickHouse集群环境准备

9.3.1 使用Docker创建ClickHouse集群

9.3.2 配置ClickHouse分布式集群

9.3.3 新建docker-compose.yaml配置文件

9.3.4 启动ClickHouse集群所有容器节点

9.3.5 查看ClickHouse集群节点状态

9.3.6 查看ZooKeeper集群上的ClickHouse元数据路径节点

9.3.7 停止容器运行

9.3.8 到ClickHouse系统表中查看ClickHouse集群信息

9.4 创建库表

9.4.1 登录到ClickHouse集群ch1容器实例节点

9.4.2 使用on cluster创建分布式集群上的数据库

9.4.3 查看ZooKeeper上分布式DDL路径节点数据

9.4.4 创建分布式表

9.4.5 创建集群分布式逻辑表

9.5 数据写入

9.5.1 写数据方案

9.5.2 写数据具体操作

9.6 数据查询

9.6.1 分布式查询原理

9.6.2 分布式查询过程分析

9.6.3 分布式子查询

9.7 集群副本与分片

9.7.1 简介

9.7.2 副本离线

9.7.3 副本扩缩容

9.7.4 分片扩缩容

9.8 本章小结

第10章 基于Grafana搭建ClickHouse集群监控平台

10.1 方案简介

10.2 环境准备

10.2.1 Grafana简介

10.2.2 安装Grafana

10.2.3 安装Grafana ClickHouse插件

10.2.4 配置ClickHouse数据源

10.2.5 安装clickhouse-exporter

10.2.6 安装Prometheus

10.2.7 启动Prometheus服务

10.2.8 查看容器实例状态

10.2.9 查看Prometheus容器详情

10.2.10 访问Prometheus服务

10.2.11 添加Prometheus数据源

10.3 常用监控

10.3.1 仪表盘模板

10.3.2 创建可用内存看板

10.3.3 自定义最近查询

10.3.4 常用监控指标

10.4 本章小结

ClickHouse入门、实战与进阶是2023年由机械工业出版社出版,作者陈光剑。

得书感谢您对《ClickHouse入门、实战与进阶》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
云原生架构进阶实战 电子书
凝练云原生的核心思想和理念,通过讲述云原生敏捷基础架构构建过程和DevOps方法,并结合实际案例,为你展现云原生的实战场景和步骤。
区块链技术进阶与实战(第2版) 电子书
本书从实战的角度对区块链技术进行了全面的介绍和剖析,非常适合区块链开发人员由浅入深地学习区块链技术。全书共分为4个部分,包括:对区块链进行全景分析,介绍其概念、历史、技术流派、主要公司和典型应用场景等内容。
Scratch编程入门与算法进阶(第2版) 电子书
Scratch是国际流行的图形化编程软件,使用者哪怕没有编程基础、不会编程语言,只要有清晰的思路,就可以通过拖曳各个功能模块的方式,设计出智能互动项目,轻松地把创意变成现实。本书同时也是中国电子学会全国青少年软件编程等级考试图形化编程(Scratch一级到四级)的指定用书,基于Scratch3.0中文版,在多个有趣小游戏的制作过程中对应每级考试要求讲解知识点,从图形化编程积木的应用方法,一直讲到程序的结构、算法的设计,内容丰富有趣,寓教于乐,让你逐步学会智能互动知识。对于青少年学习者,本书能够激发他们对编程的兴趣,指导他们了解并掌握Scratch编程技巧,培养他们的编程思维。本书与其他Scratch教程的**不同在于难度跨度设计得当,从简单应用逐步提升到基础算法内容,可以培养很好地编程思维,衔接代码编程。
PaddlePaddleFluid深度学习入门与实战 电子书
本书全面讲解PaddlePaddle Fluid框架在深度学习领域的应用。
Python3快速入门与实战 电子书
理论与实战相结合,结合大量案例系统为你介绍Python。