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

从“万能 ES”到专业 ClickHouse:一次埋点数据存储的选择

目录

前言

实践

准备

安装clickhouse镜像

1.使用DockerTarBuilder下载镜像

2.查看clickhouse镜像版本

3.构建clickhouse镜像

部署clickhouse容器

1.  创建clickhouse文件夹

2.  设置配置文件

3.构建clickhouse容器

4.验证clickhouse容器

连接clickhouse

1.下载安装DBeaver工具

2.连接clickhouse

展望


前言

在新项目中,我们需要存储和分析大量的埋点数据。很多同事第一反应是使用 Elasticsearch —— 这并不奇怪,毕竟在不少团队里,ES 被当成“万能数据库”,既能存储数据,又能提供查询能力。

然而,ES 并不是一遇到大数据量就能一刀切的解决方案。它真正擅长的是全文检索、分词和高亮搜索,核心是为“查得快、搜得准”而设计。但在埋点场景下,我们更关心的是高并发写入、长时间存储和大规模聚合统计。这类需求在 ES 中往往带来高存储成本、索引膨胀和查询性能瓶颈。

相比之下,ClickHouse 作为一款列式 OLAP 数据库,天然适合处理埋点数据:批量写入快、压缩比高、聚合查询性能强,能以更低的资源消耗支撑埋点分析需求。正所谓——
👉 ES 是搜索的利器,而 ClickHouse 才是埋点的归宿。

所以,这里并不是说 ES 不好,而是要明确:工具没有好坏,只有适不适合。搜索场景用 ES,埋点分析就该交给 ClickHouse。基于这样的判断,我决定亲自落地搭建 ClickHouse,这也是我第一次从零开始实操,借此机会把过程和经验整理成一篇博客,和大家一起探索。

实践

准备

本文是在linux环境中通过docker容器部署clickhouse数据库。所以开始的前提得有台linux服务器以及服务器中安装了docker环境。还有你得熟悉docker的基本命令。

安装clickhouse镜像

从去年2024年开始国内许多的商业服务器都不能直接通过命令拉去docker镜像了,通过docker命令访问远程镜像都会报请求超时错误,如下:

所以要想构建docker官方仓库中的镜像,得自己手动去下载到本地,然后上传到自己服务器进行命令加载。接下来就是具体实现步骤

1.使用DockerTarBuilder下载镜像

首先我们fork GitHub开源项目https://github.com/wukongdaily/DockerTarBuilder 到自己仓库中(详细步骤作者也在文档中提供了,可自行访问查看)

2.查看clickhouse镜像版本

这里直接访问docker镜像仓库,dockerhub网站进行搜索即可:
https://hub.docker.com/search?q=clickhouse

找到对应的版本,这里博主选择的是最新稳定版本:clickhouse/clickhouse-server:25.8

3.构建clickhouse镜像

按照DockerTarBuilder官方的文档步骤将镜像包下载到本地,然后上传到自己的服务器的文件夹中,然后只想命令:

docker load -i 镜像包名称

执行完成后查看已有的镜像:docker images

部署clickhouse容器

1.  创建clickhouse文件夹

博主是在服务器的opt文件夹下面进行创建的

创建对于文件夹和文件的作用就是将clickhouse容器中的配置和数据映射到宿主机中,方便我们管理。

在config文件夹中还需要创建2个配置文件(内容可以先空着)

2.  设置配置文件

编辑docker-compose.yml文件内容

services:clickhouse:image: clickhouse/clickhouse-server:25.8container_name: clickhouse-serverrestart: unless-stoppedports:- "8123:8123"   # HTTP 接口- "9000:9000"   # TCP 接口ulimits:nofile:soft: 262144hard: 262144volumes:- ./data:/var/lib/clickhouse      # 数据持久化- ./logs:/var/log/clickhouse-server- ./tmp:/var/lib/clickhouse/tmp- ./config/config.xml:/etc/clickhouse-server/config.xml- ./config/users.xml:/etc/clickhouse-server/users.xml

先临时简单构建一个clickhouse容器

docker run -d --name ch-test -p 9000:9000 -p 8123:8123 clickhouse/clickhouse-server:25.8

查看镜像已经构建成功

拷贝镜像中的配置文件到自定义config文件夹中

docker cp 镜像id:/etc/clickhouse-server/config.xml ./config/config.xml
docker cp 镜像id:/etc/clickhouse-server/users.xml ./config/users.xml

然后再去查看对于自定义的文件就已经有内容了。

  • 1.config.xml中的内容不用改动,保持官方一样
  • 2.clickhouse默认没有密码,如果你的clickhouse要设置账号密码,则需要改动users.xml文件,设置账号密码,找到对应标签修改即可
    <users><admin><password>123456</password><networks><ip>::/0</ip> <!-- 允许所有IP访问,可改成指定IP或网段 --></networks><profile>default</profile><quota>default</quota></admin></users>

最后就是暂停并且删除临时构建的clickhouse容器

3.构建clickhouse容器

进入clickhouse文件夹,执行命令:docker compose up -d

容器构建成功

4.验证clickhouse容器

如果你是在自己购买的商用服务器中,则需要先在安全组中开放端口8123和9000

然后访问:http://ip:8123/

连接clickhouse

1.下载安装DBeaver工具

clickhouse和mysql一样是数据库,所以也有GUI工具,但是navcat并没有支持连接clickhouse,因此我们选择强大的DBeaver工具

https://dbeaver.io/download/

选择对应系统版本下载傻瓜式安装就行

2.连接clickhouse

展望

说到底,还是得熟悉 ClickHouse 的语法。别看它和 MySQL 有点像,但细节上差异挺大,哪怕一个小错误都会卡住。把这些坑趟过去,才能让 ClickHouse 真正展现出它的实力。

http://www.dtcms.com/a/396335.html

相关文章:

  • ICCV-2025 | 斯坦福人形机器人自主导航!LookOut:真实环境人形机器人第一人称视角导航
  • 网络销售网站数据库设计工具
  • stm32定时器:什么是 Timer Trigger Output Event
  • 网站推广有哪些方式如何用群晖做自己的网站
  • 网站后台管理员职责页游做的好的是哪个网站
  • 汕头网站设计浩森宇特自己做游戏app的网站
  • 做火锅加盟哪个网站好域名网安备案
  • seo网站推广与优化方案成交功能网站
  • 动漫网站模板建网站 温州
  • 北京网站建设 seo公司哪家好营口东站营销网站建设
  • 有自己域名如何做网站qq登录网页版登录入口
  • 做网站用到哪些软件万网归一
  • 吴桥网站建设价格个人网站可以备案了吗
  • 建设网站加盟苏州园区做网站公司
  • 网站服务器端口设置房屋建筑学课程设计图纸
  • 做昆特牌的网站网站内容的设计与实现
  • 网站建设栏目这一块怎么写深圳做互联网教网站公司
  • 什么是网站实施wordpress 默认播放器
  • 东明住房和城乡建设局网站小白怎么做无货源电商
  • 可以看的网站都有哪些网页设计表格跨行代码
  • 学校信息化网站建设广告策划书前言范文
  • 网页制作制作网站公司部门职位
  • 自己做的网站如何上首页室内设计师的工作内容
  • 网站建设 调研报告动画制作软件ae
  • 网站优化柳州网站后台空间满了怎么办
  • 网站建设工程师面试对自己的前景规划阿里接外包吗网站开发
  • 注册公司流程和费用2020网站建设seo需求文档
  • 安装Python3及使用openpyxl和xlrd将Excel自动生成多语言
  • 网站开发好不好wordpress 更换编辑器
  • 微小店网站建设比较好wordpress 支付 小程序