首页>参考读物>计算机科学与技术>综合

ClickHouse入门、实战与进阶
作者 : 陈光剑 著
丛书名 : 数据库技术丛书
出版日期 : 2023-06-09
ISBN : 978-7-111-72717-0
定价 : 139.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 :
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书是ClickHouse领域的集大成之作,从基础知识、实现原理、项目实战、扩展应用4个维度全面展开,表述简练清晰、案例丰富实用,既可以作为入门的标准参考书,又适合作为案头速查手册。书中内容是作者在阿里巴巴、字节跳动多年实战经验的总结,得到了字节跳动和阿里巴巴9位大数据专家的高度评价。
全书共10章,主要内容如下:
第1~3章整体介绍ClickHouse概念、特性、应用场景、技术生态、快速入门和基础数据类型等基础内容,目的是从本质上揭开ClickHouse高性能背后的秘密,帮助读者快速上手实践。
第4~6章重点讲解ClickHouse的高级数据类型、函数和SQL查询语法与配置实践等进阶内容,通过该部分内容的阅读和学习,你将全面掌握ClickHouse核心功能的使用方法和技巧。
第7~10章从企业级项目实战的角度出发,详细解析ClickHouse在实际业务项目中的使用,主要包括基于Spring Boot开发ClickHouse SQL查询工具、基于ClickHouse Bitmap实现DMP用户画像标签圈选人、基于ZooKeeper搭建ClickHouse分布式集群、基于Grafana搭建ClickHouse集群监监控平台等相关内容。通过该部分内容的阅读学习,你将掌握ClickHouse企业级项目实战开发的方方面面。
本书非常注重实用性和实战性,不仅在各个知识点都辅有大量的实际案例、图表说明和小贴士,而且还有多个综合性的项目案例贯穿全书。

图书特色

ClickHouse领域集大成之作,入门标准参考书,日常工作案头必备手册
资深大数据专家和架构师在字节跳动和阿里巴巴的多年实践经验总结
抖音电商数据产品研发负责人等9位资深大数据专家联袂推荐

上架指导

计算机/大数据

封底文字

大数据分析一直是互联网企业的核心技术,而ClickHouse是大数据分析中解决海量数据存储、OLAP分析的最佳方式之一。作者在我们团队有很丰富的ClickHouse应用经验。他的这本书几乎涵盖了ClickHouse的所有基本特性、使用技巧和应用开发,并通过丰富的图表、小贴士和代码案例等形式进行由浅入深的阐述,不仅是很好的ClickHouse的工具书,也是很好的大数据分析领域的参考资料。
——朱金清 字节跳动抖音电商数据产品研发负责人

对海量数据进行OLAP分析是近些年不可避免的应用场景,在企业的技术选型中,ClickHouse几乎都是首选。本书既对技术原理和使用语法进行了详实的讲解,又为从系统安装到企业内真实场景的项目实践落地给出了具体的例子,能够有效帮助读者快速掌握ClickHouse并应用到实战中,非常值得大家学习。
——刘兵兵 字节跳动抖音电商罗盘策略研发负责人

ClickHouse非常新,发展也非常快,是一个非常有前景的高性能大数据OLAP分析引擎。本书融入了作者自己多年的ClickHouse开发实战经验,内容翔实、简洁流畅、循序渐进,对大数据OLAP分析引擎有深刻的理解,是不可多得的优秀图书。在大数据人工智能时代,各个行业都意识到了数字化转型对企业的重要性。希望大数据工程师、程序员们都能停下来阅读这本高质量且非常实用的书, 系统地了解这项技术。
——郭宇 阿里巴巴技术专家

作者简介

陈光剑 著:陈光剑
资深大数据专家、后端技术专家和架构师,拥有超过10年的技术研发和管理经验,一线实战经验丰富。现就职于字节跳动,曾就职于阿里巴巴,主要从事企业智能数字化经营管理、电商智能数字化运营等系统架构设计和研发工作。
在大数据和企业级系统架构领域有非常深厚的积累,擅长大数据系统架构和分布式系统架构设计开发。同时在微服务架构和编程语言领域有非常丰富的实践经验,对函数式编程、领域建模和Kotlin、Go编程语言等技术有深入的理解和丰富的实践经验,热衷于新技术的学习和技术分享。业余爱好读书、书法和写作,推崇阳明心学。
著有《Kotlin 极简教程》《Spring Boot开发实战》《Kotlin从入门到进阶实战》等技术畅销书。
公众号:禅与计算机程序设计艺术。

图书目录

《ClickHouse企业级应用:入门、进阶与实战》目录
前言
为何写作本书
本书主要内容
本书读者对象
本书内容特色
资源和勘误
致谢
第1章 全面了解ClickHouse
1.1.ClickHouse 是什么
1.1.1.ClickHouse 概述
1.1.2.ClickHouse 名称由来
1.1.3.ClickHouse 发展历程
1.2.ClickHouse 应用场景
1.2.1.ClickHouse适用的场景
1.2.2.ClickHouse不适用的场景
1.3.ClickHouse与其他数据库对比
1.3.1.ClickHouse 与 MySQL
1.3.2.ClickHouse 与 HBase
1.3.3.ClickHouse 与 Impala
1.3.4.ClickHouse 与 Doris
1.4.ClickHouse 技术生态
1.4.1.ClickHouse 的用户都有哪些
1.4.2.ClickHouse 的竞对有哪些
1.4.3.ClickHouse 的优势
1.4.4.ClickHouse 的缺点
1.4.5.ClickHouse 的未来展望
1.5.其他主流 OLAP 引擎介绍
1.5.1.OLAP 与 OLTP概述
1.5.2.Hive 简介
1.5.3.Presto 简介
1.5.4.Druid 简介
1.5.5.Kylin 简介
1.5.6.Sparksql 简介
1.5.7.Greeplum 简介
1.5.8.Doris 简介
1.5.9.各大 OLAP 引擎对比
1.6.NoSQL 引擎介绍
1.6.1.HBase
1.6.2.Redis
1.6.3.Cassandra
1.6.4.LevelDB
1.6.5.TiDB
1.6.6.MemSQL
1.7.本章小结
2.ClickHouse 快速入门
2.1.安装 ClickHouse
2.1.1.Mac OS 安装 ClickHouse
2.1.2.Linux 安装 ClickHouse
2.1.3.Windows 安装 ClickHouse
2.2.配置 ClickHouse Server
2.3.启动运行 ClickHouse
2.4.ClickHouse 常用内部命令
2.5.本章总结
3.ClickHouse 核心数据结构与算法
3.1.二维表数据模型
3.2.MergeTree
3.3.索引结构
3.4.稀疏索引与8192
3.5.二分查找算法
3.6.LSM 顺序写磁盘
3.7.SIMD向量化执行
3.8.hypserscan 字符串匹配算法

4.ClickHouse 核心模块与整体架构
4.1.ClickHouse 核心模块
4.2.ClickHouse 整体架构
4.2.1.整体架构概述
4.2.2.列(Columns)
4.2.3.字段(Field)
4.2.4.数据类型
4.2.5.块(Block)
4.2.6.块流(Block Streams)
4.2.7.格式(Formats)
4.2.8.I/O
4.2.9.表(Tables)
4.2.10.解析器(Parsers)
4.2.11.解释器(Interpreters)
4.2.12.函数(Functions)
4.2.13.聚合函数(AggregateFunction)
4.2.14.服务器(Server)
4.2.15.Table Engine
4.2.16.Log引擎簇
4.2.17.MergeTree引擎簇
4.2.18.Distribution引擎
4.3.ClickHouse 核心特性
4.3.1.列式存储与数据压缩
4.3.2.向量化执行
4.3.3.丰富的表引擎
4.3.4.多线程
4.3.5.大规模并行处理
4.3.6.数据分片与副本
4.3.7.分布式查询
4.4.ClickHouse 高性能背后的设计原理
4.4.1.列式存储
4.4.2.向量化执行
4.4.3.hyperscan 算法
4.4.4.Code Generation
4.4.5.MPP架构
4.5.ClickHouse 为什么这么快
4.6.本章总结
5.ClickHouse 数据类型
5.1.ClickHouse 基本数据类型
5.2.ClickHouse 集合数据类型
5.3.ClickHouse 进阶数据类型1: Map字典
5.4.ClickHouse 进阶数据类型2: Bitmap位图
5.5.本章总结
6.ClickHouse SQL 基础
6.1.CSQL 数据定义语言
6.1.1.创建数据库 
6.1.2.删除数据库 
6.1.3. 创建表 
6.1.4. 修改表 
6.1.5. 删除表 
6.1.6. 创建分区 
6.2.CSQL 数据操作语言 
6.3. 向管理表中装载数据 
6.4. 经查询语句向表中插入数据 
6.5. 单个查询语句中创建表并加载数据
6.6. 导入数据 
6.7. 导出数据 
6.8.CSQL 数据查询语言
6.8.1.WITH 语句
6.8.2.SELECT 语句 
6.8.3.WHERE 语句 
6.8.4.GROUP BY 语句 
6.8.5.HAVING 分组筛选 
6.8.6.ORDER BY 语句
6.8.7.排序 DESC/ASC 
6.8.8.LIMIT 语句
6.9.CSQL连接查询语句
6.9.1.JOIN
6.9.2.LEFT JOIN
6.9.3.RIGHT JOIN
6.9.4.GLOBAL IN
6.10.本章总结
7.ClickHouse 内置函数
7.1.数学函数 
7.2.字符函数 
7.3.转换函数 
7.4.日期函数 
7.5.条件函数 
7.6.聚合函数 
7.7.Bitmap 位图运算函数
7.8.本章总结
8.ClickHouse 表引擎
8.1.表引擎简介
8.2.引擎类型概述
8.3.MergeTree引擎
8.3.1.MergeTree
8.3.2.ReplacingMergeTree
8.3.3.SummingMergeTree
8.3.4.AggregatingMergeTree
8.3.5.CollapsingMergeTree
8.3.6.VersionedCollapsingMergeTree
8.3.7.GraphiteMergeTree
8.4.日志引擎
8.4.1.TinyLog
8.4.2.StripeLog
8.4.3.Log
8.5.集成引擎
8.5.1.Kafka
8.5.2.MySQL
8.5.3.ODBC
8.5.4.JDBC
8.5.5.HDFS
8.6.用于其他特定功能的引擎?
8.6.1.Distributed
8.6.2.MaterializedView
8.6.3.Dictionary
8.6.4.Merge
8.6.5.File
8.6.6.Null
8.6.7.Set
8.6.8.Join
8.6.9.URL
8.6.10.View
8.6.11.Memory
8.6.12.Buffer
8.7.本章总结
9.ClickHouse SQL 执行原理
9.1.本地 SQL 查询过程
9.2.分布式 SQL 查询过程
9.3.本章总结
10.ClickHouse 分布式集群
10.1.集群
10.2.副本
10.3.分片
10.4.性能优化
10.5.本章总结
11.大数据用户标签画像平台实战
11.1.什么是标签
11.1.1.标签定义
11.1.2.标签与指标
11.1.3.指标与维度
11.1.4.修饰词
11.1.5.原子指标与派生指标
11.2.标签体系的构建
11.2.1.One ID
11.2.2.结构化标签
11.2.3.非结构化标签
11.3.用户标签分类
11.4.用户画像概述
11.4.1.用户画像定义
11.4.2.用户画像的构建
11.4.3.用户画像的应用
11.5.标签圈选引擎设计1: 横表引擎
11.6.标签圈选引擎设计2: bitmap 表引擎
11.7.构建数据仓库
11.7.1.创建数据仓库
11.7.2.创建原始数据表
11.7.3.加载数据到数据仓库
11.7.4.验证数据结果
11.8.数据源加工清洗
11.8.1.创建源表
11.8.2.数据清洗详细步骤
11.8.3.验证清洗
11.9.元数据管理层设计
11.9.1.逻辑表模型
11.9.2.物理表模型
11.9.3.逻辑表到物理表的映射
11.10.贴源层设计
11.10.1.建表
11.10.2.HSQL 数据同步任务
11.11.数据模型构建
11.11.1.创建临时构建表
11.11.2.二叉构建
11.11.3.创建构建结果表
11.11.4.构建任务 DAG
11.11.5.使用 map() 和 explode() 实现横表转纵表
11.12.数据同步
11.12.1.DataX 简介
11.12.2.同步到 ClickHouse 做 OLAP 分析
11.12.3.同步到 ElasticSearch 做检索查询
11.13.数据服务化
11.13.1.KQL 查询语言
11.13.2.编译器设计
11.13.3.SQL 下推优化
11.13.4.缓存设计
11.14.进阶设计1: 分表分区策略
11.15.进阶设计2: 标签分组策略
11.16.进阶设计3: 采样策略
11.17.用户画像与推荐系统
11.17.1.推荐系统简介
11.17.2.矩阵计算
11.17.3.协同过滤算法介绍
11.18.用户画像与智能营销
11.18.1.营销场景构建
11.18.2.实时自动化营销
11.19.本章总结
12.大数据用户行为事件分析平台实战
12.1.用户行为分层
12.2.行为分析指标
12.2.1.渠道类指标
12.2.2.访问类指标
12.2.3.转化类指标
12.2.4.留存类指标
12.2.5.社交类指标
12.3.大数据用户行为模型构建方法
12.3.1.用户行为数据采集
12.3.2.用户分层: 新客/老客/潜客/流失客
12.3.3.挖掘分析行为模式构建模型
12.3.4.抽样验证
12.3.5.修正用户行为模型
12.4.AARRR 用户生命周期
12.4.1.什么是 AARRR
12.4.2.用户获取
12.4.3.用户转化
12.4.4.用户留存
12.4.5.产生收入
12.4.6.用户传播
12.5.行为事件表设计
12.5.1.行为事件定义
12.5.2.事件表结构
12.5.3.度量指标与分析维度
12.6.构建数据仓库
12.6.1.创建数据仓库 创建原始数据表 加载数据到数据仓库 验证数据结果
12.7.数据源加工清洗
12.7.1.创建源表 数据清洗详细步骤 验证清洗
12.8.元数据管理层设计
12.8.1.逻辑表模型
12.8.2.物理表模型
12.8.3.逻辑表到物理表的映射
12.9.贴源层功能设计开发
12.9.1.建表
12.9.2.HSQL 数据同步任务
12.10.数据模型构建
12.10.1.bitmap 表构建
12.10.2.创建构建结果表
12.10.3.构建任务 DAG
12.11.数据同步通道
12.11.1.同步到 ClickHouse 做事件分析
12.11.2.同步到 ElasticSearch 做事件详情检索查询
12.12.数据服务化
12.12.1.KQL 查询语言
12.12.2.Bitmap and or 运算函数
12.13.本章总结
13.附录I: 大数据技术生态圈介绍
13.1.数据仓库基础
13.2.数据库与数据仓库
13.3.关系型数据库与 NoSQL
13.4.数据仓库设计理念
13.5.Hadoop 简介
13.6.Hive 简介
13.7.Spark 简介
Apache Spark 是用于大规模数据处理的统一分析引擎。它提供 Java Scala Python 和 R 中的高级 API 以及优化的引擎。
13.8.Flink 简介
13.9.HBase 简介
14.附录 II: 关系代数极简教程
14.1.关系代数简介
14.2.集合的概念
14.3.传统的集合运算
传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算。
14.3.1.并(Union)
设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R且属于S的元组组成。其结果关系仍为n目关系。记作:
R∪S={t|t∈R∨t∈S}
14.3.2.差(Difference)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作:
R-S={t|t∈R∧t?S}
14.3.3.交(Intersection Referential integrity)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作:
R∩S={t|t∈R∧t∈S}
14.3.4.广义笛卡尔积(Extended cartesian product)
这里的笛卡尔积严格地讲是广义笛卡尔积(Extended Cartesian Product)。在不会出现混淆的情况下广义笛卡尔积也称为笛卡尔积。
两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。
记作:
R×S={(t_r t_s ) ?|t_r∈R?t_s∈S}
14.4.专门的关系运算
专门的关系运算(Specific relation operations)包括选择、投影、连接、排除等。
14.4.1.选择
14.4.2.投影
14.4.3.连接
14.4.4.排除
15.参考资料
https://clickhouse.com/docs/zh/sql-reference/dictionaries/external-dictionaries/external-dicts/
https://baike.baidu.com/item/%E5%85%B3%E7%B3%BB%E4%BB%A3%E6%95%B0/5223017?fr=aladdin

教学资源推荐
作者: 凌云 吴海燕 谢满德 编著
作者: [加]斯蒂芬·布朗(Stephen Brown) 斯万克·瓦拉纳西(Zvonko Vranesic) 著
参考读物推荐
作者: [印]所罗伯·斯里瓦斯塔瓦(Saurabh Shrivastava),[印]内拉贾利·斯里瓦斯塔夫(Neelanjali Srivastav) 著
作者: 兰天 曲鹏东 孙高飞 姜建卫 著