ClickHouse 是什么?

ClickHouse:是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)

我们首先理清一些基础概念

  • OLTP:是传统的关系型数据库,主要操作增删改查,强调事务一致性,比如银行系统、电商系统
  • OLAP:是仓库型数据库,主要是读取数据,做复杂数据分析,侧重技术决策支持,提供直观简单的结果

接着我们用图示,来理解一下列式数据库行式数据库区别

在传统的行式数据库系统中(MySQL、Postgres和MS SQL Server),数据按如下顺序存储:

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

两者在存储方式上对比:

以上是ClickHouse基本介绍

二、业务问题

业务端现有存储在Mysql中,5000万数据量的大表及两个辅表,单次联表查询开销在3min+,执行效率极低。经过索引优化、水平分表、逻辑优化,成效较低,因此决定借助ClickHouse来解决此问题

最终通过优化,查询时间降低至1s内,查询效率提升200倍!

希望通过本文,可以帮助大家快速掌握这一利器,并能在实践中少走弯路。

三、ClickHouse实践

1.Mac下的Clickhouse安装

我是通过docker安装,也可以下载CK编译安装,相对麻烦一些。

2.数据迁移:从Mysql到ClickHouse

ClickHouse支持Mysql大多数语法,迁移成本低,目前有[五种迁移]

  • create table engin mysql,映射方案数据还是在Mysql
  • insert into select from,先建表,在导入
  • create table as select from,建表同时导入
  • csv离线导入
  • streamsets

选择第三种方案做数据迁移:

CREATE TABLE [IF NOT EXISTS] [db.]table_name ENGINE = Mergetree AS SELECT * FROM mysql('host:port', 'db', 'database', 'user', 'password')

3.性能测试对比
类型 数据量 表大小 查询速度
Mysql 5000万 10G 205s
ClickHouse 5000万 600MB 1s内
4.数据同步方案

临时表

图片来源:新建temp中间表,将Mysql数据全量同步到ClickHouse内temp表,再替换原ClickHouse中的表,适用数据量适度,增量和变量频繁的场景

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

[外链图片转存中…(img-diGjlazm-1627106638131)]

[外链图片转存中…(img-qu7QrIWd-1627106638132)]

更多Java核心笔记、真实面经、学习笔记等知识干货可以点击这里免费领取

八年Java开发心路历程,燕郊开发区java工程师招聘相关推荐

  1. 【linux(1),八年Java开发心路历程

    2.检查java是否安装成功 使用java -version查看java是否安装成功 java -version 有版本的显示就是安装成功了 3.更换java版本 在学习过程中我们经常会学习不同版本的 ...

  2. JAVA开发学习——欢迎来到JAVA开发世界!

    java概述 Java是第一门完全面向对象编程的计算机语言 作者:詹姆斯·高斯林(James Gosling) 三大平台版本 J2SE(Java 2 Platform Standard Edition ...

  3. java开发环境安装原理,java开发环境搭建 java开发环境的完整搭建过程

    想了解java开发环境的完整搭建过程的相关内容吗,Rosalh在本文为您仔细讲解java开发环境搭建的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java开发环境搭建步骤,java开发环 ...

  4. 研究生、本科生Java开发、后台、软件工程师秋招春招经验

    研究生.本科生Java开发.后台.软件工程师秋招春招经验 在2020年10月份的时候结束了自己的秋招过程.在秋招过程中,我也算是大厂中厂都拿过多个offer.在这个过程.在这半年的秋招过程中,通过自己 ...

  5. wim10系统怎么装java_w10系统怎么安装java开发环境|w10安装java开发环境的方法

    w10系统怎么安装java开发环境?java开发环境搭建 for java新学者不清楚的话,可以看看以下的教程. 具体方法如下: 1.下载开发工具包(JDK).对于不同的操作系统,可下载的文件格式不同 ...

  6. Java小白到大神的心路历程(Java SE)

    万事万物皆有其发展规律,学习Java也不例外. 以下是我根据教学经验,总结出来的小白在学习Java各阶段时的心路历程,当你在学习期间欣喜.困惑时,不妨看一看,也许这些都是必经之路. 使用Java完成第 ...

  7. 4年小Java的心路历程,绝对干货分享

    有赞: 一面 hashMap原理,put和resize过程 线程池有哪些类型, concurrentHashMap分段锁原理,java8和java7实现的区别 B-树和B+树区别,数据库索引原理,组合 ...

  8. 转自goosman的编程开发心路历程

    我现在是一名大二的学生,无意间看到这篇文章,心里受到很大的触动,特意研究了一怎么转载博客,打算纪念一下这个可能改变我生命轨迹的日子.我想,几年以后我也会写下一篇类似的文章,记录自己的程序猿心路历程.文 ...

  9. 高级java开发_适用于高级Java开发人员的十大书籍

    高级java开发 Java是当今最流行的编程语言之一. 有很多适合初学者的书籍. 但是对于那些使用Java进行过一段时间编程的人来说,其中有些人看起来有些简单和多余. 初学者的书没有带来新鲜有趣的想法 ...

最新文章

  1. swift和OC - 拆分数组 和 拆分字符串
  2. h30-t10 android phone,荣耀(荣耀)3C H30-T10/2GB RAM/移动3G手机系统介绍评测-ZOL中关村在线...
  3. 【学术相关】U.S.News正式发布最新的2022最佳全球院校排名
  4. markDown 语法(个人练习篇)
  5. 【转】void及void指针的深刻解析
  6. es6 Class 的继承简介
  7. 万维网之父:Facebook、Google 等硅谷巨头必须被拆分!
  8. joson返回数据库的时间格式在前台用js转换
  9. 计算机套题库c版,计算机二级C语言上机题库100套(最新版)
  10. vsftpd配置权限问题
  11. 巴特沃斯数字低通滤波器的设计步骤
  12. 弱电总包施工组织设计与实施方案
  13. w10系统桌面的计算机找不到,w10桌面我的电脑图标不见了怎么办
  14. 零基础学习Shell编程
  15. vue v-for和v-if同时使用
  16. 程序设计 | python | Hello World的条件输出
  17. 使用Android自带的DownloadManager下载ApK并安装
  18. 通过 IDEA 检查代码 Inspect Code,查找无用的方法、类等问题
  19. Ubuntu服务器的安装和配置----系统安装
  20. 苹果AI人才报告:斯坦福、伯克利、CMU、MIT被挖空

热门文章

  1. vxWorks armV8a 多核启动过程
  2. 物联网基础:移远EC20固件升级
  3. 泛型 Class 类
  4. vue:遇到的坑之-----table属性(element-ui)
  5. 3DCNN概述及3DCNN与2DCNN的区别
  6. css3实现字体渐变色
  7. AndroidStudio NDK开发 之 jni生成so文件
  8. 匿名社交:在安全和危险边缘摇摆
  9. 计算机主机配置最好的,组装台式电脑配置清单有哪些 台式电脑什么配置好
  10. 笔记本外接显示器“显示信号输入超出范围“及外接显示器自动息屏的问题解决方案