写点什么

2021Java 大厂高频面试题,原理 + 实战 + 视频 + 源码

用户头像
Geek_f90455
关注
发布于: 2021 年 08 月 03 日

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.性能测试对比
4.数据同步方案

临时表



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

最后我们该如何学习?

1、看视频进行系统学习


这几年的 Crud 经历,让我明白自己真的算是菜鸡中的战斗机,也正因为 Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去 B 站进行学习,B 站上有很多学习视频,唯一的缺点就是免费的容易过时。


另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以分享给你:



2、读源码,看实战笔记,学习大神思路


“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。


Spring 源码深度解析:



Mybatis 3 源码深度解析:



Redis 学习笔记:



Spring Boot 核心技术-笔记:



3、面试前夕,刷题冲刺


面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。


关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:



只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。


人生短暂,别稀里糊涂的活一辈子,不要将就。


资料领取方式:点击蓝色传送门免费领取上述资料


文章内容中涉及到的 Java 面试题、源码文档,技术笔记等学习资料,均可以免费分享给大家学习,只需你动动手多多支持即可!

用户头像

Geek_f90455

关注

还未添加个人签名 2021.07.06 加入

还未添加个人简介

评论

发布
暂无评论
2021Java大厂高频面试题,原理+实战+视频+源码