clickhouse源码分析(一)
- 简单介绍
clichouse是由俄罗斯yandex公司的大数据引擎团队开发的分析型数据库。在2016年发布,经过几年的跌代现在被国内外很多大小公司在各种场景使用。clickhouse的轻量级,多种协议接口,SQL兼容性,优秀的导入和查询速度等等特性。被国内外的企业和数据分析从业人员所喜欢。 - 代码下载
clickhouse github链 接https://github.com/ClickHouse/ClickHouse.git 下载的时候最好使用git下载(下载的代码的不用创建git仓库就能编译)
下载完成后:在$SOURCE_DIR/Clickhouse目录下执行
git submodule update --init --recursive (将编译clickhouse需要的第三方包和插件下载) - 编译
1.安装编译器(不同版本的clickhouse对于编译器的版本有不同的要求)使用gcc或者clang进行编译。之前的版本是用gcc编译的。2020之后官方推荐clang。
clang 比 gcc好在哪里?
编译速度快:在某些平台上,Clang的编译速度显著的快过GCC(Debug模式下编译OC速度比GGC快3倍)
占用内存小:Clang生成的AST所占用的内存是GCC的五分之一左右
模块化设计:Clang采用基于库的模块化设计,易于 IDE 集成及其他用途的重用
诊断信息可读性强:在编译过程中,Clang 创建并保留了大量详细的元数据 (metadata),有利于调试和错误报告
设计清晰简单,容易理解,易于扩展增强
官方编译文档:https://clickhouse.tech/docs/en/development/build/
–对于在arm架构上编译我直接在arm平台上编译有很多问题,之后在x86上使用交叉编译,交叉编译的官方文档上有些问题,在一些目录要进行修改才能编译通过。官方文档:https://clickhouse.tech/docs/en/development/build-cross-arm/ - 第三方包和工具介绍
poco clickhouse使用poco框架开发。
llvm 模块化编译工具
zstd 压缩算法
lz4-hc 压缩算法
ssse 向量化计算
jemalloc 内存管理工具
zookeeper 分布式管理工具