ClickHouse数据库详解和应用实践

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


概述

  • ClickHouse 是一个用于联机分析 (OLAP) 的开源的列式数据库管理系统 (DBMS)。来自于俄罗斯本土搜索引擎企业 Yandex 公司。
  • ClickHouse具有ROLAP、在线实时查询、完整的 DBMS 功能支持、列式存储、支持批量更新、拥有非常完善的SQL支持和函数、支持高可用、不依赖 Hadoop 复杂生态、开箱即用等许多特点。
  • 在 1 亿数据集体量的情况下,ClickHouse 的平均响应速度是 Vertica 的 2.63 倍、InfiniDB 的 17 倍、MonetDB 的 27 倍、Hive 的 126 倍、MySQL 的429 倍以及Greenplum 的 10 倍。

1.适用场景

  • ClickHouse在存储数据超过20万亿行的情况下,做到了90%的查询都能够在1秒内返回的惊人之举。可以说ClickHouse具备了人们对一款高性能OLAP数据库的美好向往,所以它基本能够胜任各种数据分析类的场景,并且随着数据体量的增大,它的优势也会变得越为明显。
  • ClickHouse非常适用于商业智能领域(也就是我们所说的BI领域),除此之外,它也能够被广泛应用于广告流量、Web、App流量、电信、金融、电子商务、信息安全、实时数仓、物联网等众多其他领域。
  • 在国内的应用:
    今日头条内部用 ClickHouse来做用户行为分析,几千个 ClickHouse 节点,单集群最大 1200 节点,总数据量几十PB,日增原始数据300TB左右。
    腾讯内部用 ClickHouse做游戏数据分析,并且为之建立了一整套监控运维体系。
    携程内部80%的业务都跑在ClickHouse 上。每天数据增量十多亿,近百万次查询请求。
    快手内部也在使用 ClickHouse,存储总量大约10PB,每天新增 200TB,90% 查询小于 3S。

2.不适用场景

不支持高并发

没有完整的事务支持

稀疏索引导致 ClickHouse 不擅长细粒度或者 key-value 类型数据的查询需求

缺少高频率,低延迟的修改或删除数据的能力

两张大表join性能不高


一、核心特性

1.完备的DBMS功能

作为一个DBMS,它具备了一些基本功能,如下所示:

DDL(数据定义语言):可以动态地创建、修改或删除数据库、表和视图,而无须重启服务。

DML(数据操作语言):可以动态查询、插入、修改或删除数据。

ClickHouse提供了DELETE和UPDATE的能力,这类操作被称为Mutation操作,是一种"很重"的操作,更适用于批量数据的修改和删除;

ALTER TABLE 表名 DELETE WHERE nodeid = '';

ALTER TABLE表名 UPDATE 字段名=新值 WHERE xxx=xxx

权限控制:可以按照用户粒度设置数据库或者表的操作权限,保障数据的安全性。

数据备份与恢复:提供了数据备份导出与导入恢复机制,满足生产环境的要求。

分布式管理:提供集群模式,能够自动管理多个数据库节点。

2.列式存储与数据压缩

  • 列式存储和数据压缩,是高性能数据库必不可少的特性。列式存储和数据压缩通常是伴生的,因为一般来说列式存储是数据压缩的前提。
  • 列式存储避免了多余的数据扫描
  • ClickHouse默认使用LZ4算法压缩,在Yandex的生产环境中,数据总体的压缩比可以达到8:1。

二、安装部署

1.在线安装

ClickHouse 可以通过源码编译、在线安装、Docker 镜像和 RPM 等多种方法进行安装。

Yum在线安装命令:

sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo

sudo yum install -y clickhouse-server clickhouse-client

修改配置文件config.xml,允许所有ip访问

<listen_host>::</listen_host>

启动clickhouse

sudo /etc/init.d/clickhouse-server start

2.离线安装

需要下载以下4个安装包文件:

clickhouse-client-21.7.4.18-2.noarch.rpm

clickhouse-common-static-21.7.4.18-2.x86_64.rpm

clickhouse-server-21.7.4.18-2.noarch.rpm

clickhouse-server-common-21.7.4.18-2.x86_64.rpm

执行如下命令后即可安装RPM文件:

rpm -ivh ./*.rpm

可以使用clickhouse-client命令对数据库进行访问

三、jdbc访问

1、单机环境

官方最新驱动

com.clickhouse

clickhouse-jdbc

0.4.1

all

获取单节点连接代码示例:

2、集群环境

1 使用Nginx、F5等三方软件或设备做负载均衡。代码中访问地址为负载均衡ip地址。

2 使用jdbc的负载均衡功能,此种方式没有故障转移功能。


总结

详细内容请下载 ClickHouse数据库详解和应用实践

相关推荐
heartbeat..2 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
麦聪聊数据4 小时前
MySQL并发与锁:从“防止超卖”到排查“死锁”
数据库·sql·mysql
AC赳赳老秦5 小时前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek
YMatrix 官方技术社区6 小时前
YMatrix 存储引擎解密:MARS3 存储引擎如何超越传统行存、列存实现“时序+分析“场景性能大幅提升?
开发语言·数据库·时序数据库·数据库架构·智慧工厂·存储引擎·ymatrix
辞砚技术录7 小时前
MySQL面试题——索引2nd
数据库·mysql·面试
linweidong7 小时前
C++thread pool(线程池)设计应关注哪些扩展性问题?
java·数据库·c++
欧亚学术8 小时前
突发!刚刚新增17本期刊被剔除!
数据库·论文·sci·期刊·博士·scopus·发表
黑白极客8 小时前
怎么给字符串字段加索引?日志系统 一条更新语句是怎么执行的
java·数据库·sql·mysql·引擎
大厂技术总监下海9 小时前
数据湖加速、实时数仓、统一查询层:Apache Doris 如何成为现代数据架构的“高性能中枢”?
大数据·数据库·算法·apache
LeenixP9 小时前
RK3576-Debian12删除userdata分区
linux·运维·服务器·数据库·debian·开发板