kafka客户端与服务端
ClickHouse 是什么?
ClickHouse:是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)
我们首先理清一些基础概念
- OLTP即传统的关系型数据库,在实际应用中主要用于执行增删改查操作,并特别强调事务一致性这一特性。例如,在银行系统或电子商务平台等场景中即可见到其身影。
- OLAP即仓库型数据库,则主要用于数据的读取与分析工作,并进行复杂的数据分析以支持技术驱动的支持决策过程。通过提供直观简洁的结果呈现形式来辅助决策者快速获取关键业务信息。
接着我们用图示,来理解一下列式数据库 和行式数据库 区别
在传统行式数据库体系(MySQL、Postgres和MS SQL Server)中,默认情况下数据存储结构遵循特定规则。

在列式数据库系统中(ClickHouse),数据按如下的顺序存储:

两者在存储方式上对比:

以上是ClickHouse基本介绍
二、业务问题
目前业务层的数据存储主要采用MySQL数据库,在处理规模达到5,000万数据量的大规模表格及其两个辅助表时,在单次跨表查询过程中耗时超过3分钟的情况下运行性能表现欠佳。通过实施索引优化策略、引入水平分区策略以及改进逻辑架构设计等措施,在实际效果上提升有限的基础上,在综合评估各种解决方案后决定采用ClickHouse作为替代方案以解决当前性能瓶颈问题
最终通过优化,查询时间降低至1s内,查询效率提升200倍!
希望通过本文,可以帮助大家快速掌握这一利器,并能在实践中少走弯路。
三、ClickHouse实践
1.Mac下的Clickhouse安装
我是通过docker安装,也可以下载CK编译安装,相对麻烦一些。
2.数据迁移:从Mysql到ClickHouse
ClickHouse支持Mysql大多数语法,迁移成本低,目前有[五种迁移]
- 创建MySQL数据库引擎表,并确保方案数据仍存储于MySQL数据库中。
- 插入操作将基于SELECT FROM语句执行。
- 基于SELECT FROM语句自定义新建数据库表。
- 使用本地文件完成离线数据导入。
- 流式数据集合配置参数设置为true(streamsets)。
选择第三种方案做数据迁移:
CREATE TABLE [IF NOT EXISTS] [db.]表名使用合并树引擎,并通过SELECT 语句获取从 host:port 连接到 MySQL 数据库 “db” 使用默认库名为 database 的数据。
3.性能测试对比
| 类型 | 数据量 | 表大小 | 查询速度 |
|---|---|---|---|
| Mysql | 5000万 | 10G | 205s |
| ClickHouse | 5000万 | 600MB | 1s内 |
4.数据同步方案
临时表

图片来源于新建的temp中间表;随后将MySQL数据库中的全部数据进行全量同步至ClickHouse内的temp表中;接着替换原ClickHouse中的相关表;适用于数据规模适中且增量及变量频繁变化的场景
难道这样就够了吗?不,远远不够!
熟悉历年阿里面试题对求职者来说具有重要意义。然而,在技术类职业中占据核心竞争力的关键在于掌握扎实的技术功底与丰富的工作经验积累。这种自信来源于个人专业素养与实践经验的全面提升。
主要精力都投入到了技术领域,并占据了我学习时间的大头70%!这些我在学习期间觉得相当优秀的技术笔记以及学习视频都可以在这里免费领取:点击这里获取!
为什么要撰写这篇文章呢?我认为学习必须持续不断。于网络平台与大家交流探讨,在线分享观点和经验。不仅仅能够结识志同道合的朋友,并且能够拓展视野、获取更多技术知识。我也在、博客以及掘金等网站上分享我的技术见解与经验总结,并将其作为一种有效的学习途径。
今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!



片转存中…(img-Y7MERbRb-1627551814362)]
[外链图片转存中…(img-C8I6D2FS-1627551814363)]
