当前位置: 首页 > news >正文

Java学习第一百一十七部分——ClickHouse

目录

一、前言简要介绍

二、核心特性优势

三、典型应用场景

四、关键技术架构

五、性能表现优化

六、下载安装使用

七、总结归纳概述


一、前言简要介绍

      ClickHouse 是一款由俄罗斯 Yandex 开发的高性能​​列式存储数据库​​,专为 ​​OLAP(在线分析处理)​​ 场景设计,以​​毫秒级响应海量数据查询​​著称。

二、核心特性优势

1.​​列式存储与高效压缩​​

  • 数据按列存储,查询仅读取所需列,减少 I/O 开销;同列数据类型一致,压缩率更高(可达 5-10 倍),显著降低存储成本。

  • 支持多种压缩算法(如 LZ4、ZSTD),可根据列数据类型优化选择。

2.​​向量化执行引擎​​

  • 利用 CPU 的 ​​SIMD 指令集​​(如 SSE4.2),单指令处理多数据,减少函数调用开销,提升并行计算效率。

​​3.分布式与水平扩展​​

  • 采用 ​​Multi-Master 多主架构​​,无单点故障,支持分片(Sharding)与副本(Replication),数据自动均衡。

  • 通过分布式表​​代理查询,实现多节点并行计算,吞吐量线性扩展。

4.​​灵活的数据模型与SQL兼容​​

  • 支持嵌套结构(Nested)、数组(Array)、Map 等复杂类型,适配多样化数据。

  • 兼容 ANSI SQL,提供标准 JOIN、GROUP BY 等语法,学习成本低。

5.​​数据生命周期管理(TTL)​​

  • 支持行、列、分区级别的自动过期清理,适用于日志、监控等时效性数据。

三、典型应用场景

​​场景​​

​​案例​​

​​实时日志分析​​

每秒百万级日志写入,快速分析 Web/App 访问日志,定位异常 。

​​用户行为分析​​

电商平台追踪用户点击、购买路径,实时计算转化率 。

​​时序数据处理​​

存储传感器、设备监控指标,支持时间窗口聚合查询 。

​​BI 报表与实时大屏​​

亿级数据聚合生成多维度报表,响应速度达秒级 。

​​广告效果分析​​

分析广告点击流,实时计算 ROI 和用户画像 。

⚠️ ​​不适用场景​​:高频事务(OLTP)、键值查询、频繁数据修改(如 UPDATE/DELETE)、ACID 事务需求。

四、关键技术架构

​​1.表引擎机制​​不同引擎适配不同场景

​​引擎类型​​

​​特点​​

​​适用场景​​

MergeTree

支持分区、排序、索引,基础高性能引擎

通用 OLAP 场景

ReplacingMergeTree

按版本去重,避免重复数据

日志消重

SummingMergeTree

自动合并相同 Key 数据并求和

实时聚合报表

Kafka

直接消费 Kafka 数据写入

流式数据处理

2.​​数据分区与索引​​

  • ​​分区(PARTITION BY)​​:按月/周等分区,加速范围查询(如 toYYYYMM(date))。

  • ​​排序键(ORDER BY)​​:数据按排序键存储,优化等值/范围查询(如 ORDER BY (user_id, timestamp))。

3.​​分布式集群设计​​

  • 分片策略支持随机、Hash 或自定义表达式,数据分布灵活。

  • 副本通过 ZooKeeper 同步,保障高可用。

五、性能表现优化

1.​​性能基准​​

  • ​​查询速度​​:单机每秒处理 ​​1–2 亿行​​,分布式环境下线性扩展。

  • ​​写入吞吐​​:建议批量写入(≥1000 行/次),单机写入速度 ​​50–200 MB/s​​(约 5万–20万行/秒)。

2.​​优化实践​​

  • ​​避免高频小写入​​:合并为批量提交,减少 IO 压力。

  • ​​慎用 JOIN​​:大表 JOIN 性能较低,优先用宽表或预聚合。

  • ​​利用物化视图​​:预计算指标,加速聚合查询。

六、下载安装使用

⬇️ ​​一、下载安装​​

​​1. Windows系统​​

  • ​​下载​​:访问官网下载64位安装包。

  • ​​安装​​:双击安装程序,可选添加环境变量。

  • ​​配置环境变量​​:

    • 将ClickHouse的bin目录(如C:\Program Files\ClickHouse\bin)加入系统PATH。

  • ​​启动服务​​:
    clickhouse-server   # 启动服务
    clickhouse-client   # 连接客户端
  • ​​验证​​:浏览器访问http://localhost:8123/,显示欢迎页即成功。

​​2. Linux系统(Ubuntu/CentOS)​​

  • ​​APT安装(Debian/Ubuntu)​​:

    sudo apt-get install apt-transport-https ca-certificates dirmngr
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4
    echo "deb https://repo.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
    sudo apt-get update
    sudo apt-get install clickhouse-server clickhouse-client
    sudo service clickhouse-server start  # 启动服务
  • ​​YUM安装(CentOS/RHEL)​​:

    sudo yum install yum-utils
    sudo rpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPG
    sudo yum-config-manager --add-repo https://repo.clickhouse.com/rpm/clickhouse.repo
    sudo yum install clickhouse-server clickhouse-client
    sudo systemctl start clickhouse-server  # 启动服务
  • ​​Tgz包安装(通用)​​:

    • 从阿里云镜像下载4个组件包:
      clickhouse-common-static、clickhouse-server、clickhouse-client、clickhouse-common-static-dbg(可选)
    • 按顺序解压并执行安装脚本:
      tar -xzvf clickhouse-common-static-*.tgz
      sudo ./clickhouse-common-static-*/install/doinst.sh
      # 重复解压并安装其他组件包

​​3. Docker安装(跨平台)​​

docker run -d --name clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
docker exec -it clickhouse-server clickhouse-client  # 连接客户端

⚙️ ​​二、关键配置​​

  1. ​​允许远程访问​​

    • 修改/etc/clickhouse-server/config.xml
      <listen_host>0.0.0.0</listen_host>  <!-- 取消注释 -->
    • 重启服务:sudo systemctl restart clickhouse-server

  2. ​​目录结构​​

    • 配置文件:/etc/clickhouse-server/(含config.xmlusers.xml

    • 数据存储:/var/lib/clickhouse/

    • 日志文件:/var/log/clickhouse-server/

🖥️ ​​三、基本使用​​

​​1. 命令行操作​​

clickhouse-client -m  # 启动客户端(支持多行语句)
  • ​​示例查询​​:
    SELECT * FROM system.tables LIMIT 10;  -- 查看系统表
    CREATE TABLE test (id UInt32, name String) ENGINE = MergeTree ORDER BY id;  -- 建表

​​2. JDBC连接(Java)​​

  • ​​Maven依赖​​:
    <dependency><groupId>ru.yandex.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.2.6</version>
    </dependency>
  • ​​连接代码​​:
    Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
    Connection conn = DriverManager.getConnection("jdbc:clickhouse://localhost:8123/test");
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT 1");  // 执行查询

​​3. 图形化工具​​

  • ​​DBeaver​​:
    创建连接时选择ClickHouse驱动,填写IP、端口(默认8123),无密码可留空。

⚠️ ​​四、注意事项​​

1.​​系统要求​​

  • CPU需支持SSE 4.2指令集(验证命令:grep -q sse4_2 /proc/cpuinfo)。

  • 避免Windows生产部署(官方未优化支持)。

2.​​安全配置​​

  • 默认无密码,生产环境需在users.xml设置密码及权限。

3.​​性能优化​​

  • 批量写入(≥1000行/次)提升吞吐;

  • 使用MergeTree引擎时合理设计分区键(如PARTITION BY toYYYYMM(date))。

🔄 ​​五、服务管理​​

​​操作​​

​​命令(Linux)​​

​​命令(Windows)​​

​​启动服务​​

sudo systemctl start clickhouse-server

clickhouse-server

​​停止服务​​

sudo systemctl stop clickhouse-server

Ctrl+C 或关闭终端

​​状态查询​​

sudo systemctl status clickhouse-server

任务管理器查看进程

💡 ​​总结​​:ClickHouse安装需匹配操作系统类型(推荐Linux),通过配置开放远程访问后,可使用客户端、JDBC或图形工具操作数据。注意生产环境的安全设置与性能优化,避免高频小写入和复杂JOIN。

七、总结归纳概述

       ClickHouse 凭借​​列式存储、向量化引擎与分布式架构​​,成为实时分析场景的首选,尤其适合​​读多写少、数据量大、低延迟查询​​的需求。使用时需注意其​​弱事务支持、JOIN 限制​​等特性,通过合理选择表引擎、预聚合和分区分片优化性能。

http://www.lryc.cn/news/614028.html

相关文章:

  • 9:USB摄像头的最后一战(上):MP4音视频合封!
  • 企业AI的双层技术栈架构:融合社区创新与企业级管控的设计蓝图
  • Pytest项目_day10(接口的参数传递)
  • JAVA基础-集合框架
  • 【新启航】航空飞机起落架深孔型腔的内轮廓测量方法探究 - 激光频率梳 3D 轮廓检测
  • Alkimi 与 Sui 合作,修复「破碎」的广告生态
  • Upscayl – 免费开源的 AI 图像放大工具,跨平台使用
  • 使用 Setup Project 打包
  • EI学术会议 | 机械制造、智能控制
  • spaCy study notes[1]
  • 使用Python+selenium实现第一个自动化测试脚本
  • MySQL的触发器:
  • 什么是Serverless(无服务器架构)
  • ORACLE看当前连接数的方法
  • pycharm常见环境配置和快捷键
  • isulad + harbor私有仓库登录
  • 特征值和特征向量的直觉
  • 【大模型】(实践版)Qwen2.5-VL-7B-Instruct模型量化以及运行测试
  • MCP实现:.Net实现MCP服务端 + Ollama ,MCP服务端工具调用
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的运营策略创新研究
  • k8s调度问题
  • Android 的CameraX的使用(配置,预览,拍照,图像分析,录视频)
  • 自动驾驶数据闭环
  • WiFi 核心概念与实战用例全解
  • Redis基础数据类型
  • 【DFS系列 | 递归】DFS算法入门:递归原理与实现详解
  • 【MySQL】初识索引
  • 优选算法2
  • Redis中String数据结构为什么以长度44为embstr和raw实现的分界线?
  • 【JavaEE】(10) JavaEE 简介