在腾讯实习的五个月的一些思考与收获

本文作者分享了在腾讯实习期间,从事OLAP计算引擎工作的思考和收获。文章回顾了数据库的发展历程,从关系型数据库到大数据时代的OLAP,探讨了云原生数据仓库的重要性。作者通过实习,深入了解了数据库组件、优化策略以及行业趋势,并对腾讯的大数据平台提出了评价。此外,还提及了实习期间的工作时间和福利待遇。
2021年上半年在腾讯实习,马上实习结束跑路了,一些相关工作内容不方便对外发表,下面只记录一些思考与收获。

1.思考

组里面是做OLAP计算引擎的,从学科大类上来说,属于大数据、数据库领域的交界处。
在这里插入图片描述

从1970年oracle发表的关系型模型论文开始,就开启了数据库的新世界,到95年开源的MySQL、学术圈的PostgreSQL,之后漫长的20多年都是单机版数据库。(如上图所示)

随着移动互联网的兴起,数据量越来越大,出现了一些新形数据库,如2003的出现了内存的数据库memcache,到2005年左右,Google发表的三辆马车,开启了大数据的时代。原来数据库也可以玩分布式的! 数据库开始也朝着分布式方向发展。

此外,还有一些新方向,比如2010年左右的NoSQL,代表的有:Redis(内存 kv)、MongoDB(文档)

而数据量一大,就诞生了分析、挖掘这些数据的需求,这就是OLAP型数据仓库诞生的时代背景,一个大数据时代下和数据库领域结合的产物。

在这里插入图片描述

而回头看OLAP领域的发展线,从用Hive做mapreduce分析,到基于cube、预计算的kylin,到kudu+impala,联邦查询presto,针对单机大宽表的clickhouse,再到阿里云的AnalyticDB(采用pangu作为统一存储 share-disk、全列加索引、异步构建索引、读节点写节点解耦的架构),OLAP领域的数据库呈现着百花齐放、又螺旋前进的姿态。(这里顺便吐槽一下,腾讯大数据平台的技术,比较落后啊,至少没有走在OLAP领域前沿)

不过随着2016年OLAP领域的云原生数据仓库snowflake这篇论文一发表,OLAP数据仓库进入了另一个新时代:云原生。

与此同时,数据库(不论是OLTP还是OLAP)也朝着云原生方向发展,一如Amazon的Aurora(2017),阿里的polarDB等

我们发现,历史总是惊人的相似。

十年前,随着移动互联网的兴起,人们面临的问题是数据量大了怎么办?Google在2005年给出的答案是:水平拓展加机器存储(当时可能不需要考虑分析型计算吧

十年后,随着企业数据的沉淀,需要分析的数据量过大怎么办?2016年snowflake给出的答案是:还是加机器。只不过十年后是用云的形式,虚拟化计算资源,按量付费,弹性计算。

十年前,再优雅的排序也算不过mapreduce(加机器、并行计算;

一如十年后,一些计算引擎层上的优化(当然这也是很重要的)抵不过云原生的弹性拓缩容来的直接、高效。

此外数据库领域近些年还有一些新分支、新探索,比如物联网数据库、时序数据库,还有最近比较火的HTAP等等(TiDB、OceanBase),刚刚入坑不久,所以了解的不多。

当然,时代的发展总有其滞后性,最新的技术往往要过几年才能大规模推广、落地。一如2005年google三篇论文开启大数据时代,到中国大数据成为“热门”话题到了2011、2012年左右(可能是hive让mapreduce这个复杂计算框架可以用简单的sql来实现了吧。

依此类推,云原生数据仓库,真正能大规模应用,估计还要3~5年吧,毕竟上云可不是一件容易的事。

2.收获

聊完了宏观上的视野收获,再记录一下个人的收获。

  • 了解了数据库发展的大时代背景
  • 了解了大数据纷繁复杂的组件
  • 了解了数据库发展的大时代背景,以及数仓的未来:云原生、更加实时、流批一体
  • 了解到了行业一线居然有的sql确实这么复杂。。。可以多表join写到200行的,进而认识到在中间层、引擎层 不管是策略上的大sql拦截、倾斜处理、多级队列,还是内核优化的必要性,更认识到上云的迫切性。
  • 了解了一些设计架构,如:
  • 数仓的两大架构:Lambda、kappa
  • 存算分离 share-nothing的水平拓展(计算和存储强绑定) 与share-disk,共用“一块”存储,做到计算和存储都能各自拓展
  • 列存:本质上是不去扫描不需要的列,大大减少IO开销
  • 行列混存(优点是,对于(point-lookup)点查询,行列混存只需要一次IO开销)
  • 设计只读节点,用于应对高并发读场景(比如doris里面FE中有observer、analyticDB里面的read-node)但是对于高并发查询请求,那还是得加机器

了解了一些优化原则如:

  • Join reorder(多表join顺序优化)
  • 物化视图(将查询结果预先计算并存储的一张特殊的表,存储在内存中,用来加速查询
  • 真·黑科技:向量化执行,方面使用CPU SIMD指令集
  • K-way-merge(K路合并)合并结果时,大多数据库采用的是2路合并,但它会导致巨大的内存使用量和低并发性。为了减轻这种影响,我们改用 K-way 合并,这确保了大型数据集上的亚秒级查询延迟
  • 异步构建索引(给所有的列都构建索引,在off-peak非高峰时段进行,加速查询,不需要全表扫描了
  • 谓词下推
  • 计算下推
  • 利用历史数据进行优化(机器学习在系统设计上的应用)
  • 利用前缀索引、倒排索引等技术加速
  • bitMap、zoneMap
  • 实时采样+自适应算法,选取最优参数
  • 查询分不同的优先队列等等

3.其他

  • 实习一般是9.30到公司,吃完早餐10点开始干活,12~2点有两个小时吃饭、午休,下午6点去吃饭,7.30回来开始干活,我一般8.30就走了,正式员工大概9、10点走。
  • 福利方面,早、晚餐随便吃,不花钱,茶水间的咖啡、奶茶、红茶、热水什么的,都是随便喝的。差旅报销都不用管,有一次去深圳,机票、住宿都报销,还有一千多的出差补贴,腾讯员工福利是没得说的。
  • 总的来说,体验是非常不错的~希望校招能回来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值