ClickHouse是一款高性能、MPP架构、列式存储、具有完备DBMS功能的OLAP数据库。
ClickHouse可以在存储数据超过20万亿行的情况下,做到了90%的查询能够在1秒内返回。它基本能够满足各种数据分析类的场景,并且随着数据体量的增大,它与Spark、Impala、Kylin对比,优势也会变得越为明显。
ClickHouse适用于商业智能领域(BI),也能够被广泛应用于广告流量、Web、App流量、电信、金融、电子商务、信息安全、网络游戏、物联网等众多其他领域。应该说它适合的场景,就是OLAP。
ClickHouse不是万能的。它对于OLTP事务性操作的场景支持有限,它有以下几点不足。
- 不支持事务。
- 不擅长根据主键按行粒度进行查询,虽然支持,不应该把ClickHouse当作Key-Value数据库使用。
- 不擅长按行删除数据,虽然支持但是不高效。
这些弱点并不能视为ClickHouse的缺点,事实上其他同类高性能的OLAP数据库同样也不擅长上述的这些方面。因为对于一款OLAP数据库而言,上述这些能力并不是重点,只能说这是为了极致查询性能所做的权衡。
我们可以本地搭建一下clickhouse的镜像,自己本地试跑一下clickhouse,并好好学习一下这方面的内容。
# 基于官方 ClickHouse 镜像构建
FROM yandex/clickhouse-server:latest
# 安装 ClickHouse 客户端
# RUN apt-get update && apt-get install -y clickhouse-client
# RUN apt-get update
# 复制配置文件到容器中
# COPY config.xml /etc/clickhouse-server/config.xml
# 暴露 ClickHouse 服务端口
EXPOSE 8123 9000 9009
# 将config.xml文件复制到容器中
COPY config.xml /etc/clickhouse-server/config.xml
# 启动 ClickHouse 服务器
# CMD ["clickhouse-server", "--config-file=/etc/clickhouse-server/config.xml"]
# CMD ["sh", "-c", "clickhouse-server & tail -f /etc/clickhouse-server/config.xml"]
ENV CLICKHOUSE_CONFIG=/etc/clickhouse-server/config.xml
CMD ["sh", "-c", "/entrypoint.sh"]
通过dockerfile创建docker镜像。
config.xml中,可以自己配置用户名、密码,最大连接数等。