最新公告:诚信为本:市场永远在变,诚信永远不变。 服务热线:400-123-4567

万达平台

当前位置: 首页 > 万达平台

做sql优化器有前途吗?

发布时间:2024-04-15 点击量:

应届生 做和apache calcite 相关的sql优化器 本身是面向实时 大数据场景的的数据库 请问以后怎么规划职业发展道路

这是一个学界基本上研究透了,目前就是补足细枝末节,蹭点ai热度的小方向。

而工业界也是很多公司非常克制的在做维护的小系统。

我觉得你了解下原理 对工作有帮助 投入几十年来做这个方向实在太窄。

ps:国内所有db岗位都只是因为去o行政命令产生的,也会因为一纸行政命令瓦解,这个行业在国内是很脆弱的、比你想象的脆弱的多,偏偏还很卷。

db dead business(暴论) 我的看法是,不仅仅限于sql优化器。

而是对于数据库内核开发而言,最好是想清楚自己产生的价值在哪里,自己做的产品的价值在哪里,想做的是哪些客户。

db赛道的火热,在国外很大程度上是因为SaaS, 而SaaS其实是很需要市场环境和土壤的。国内这一波db的支撑点很大是由于信创,这种背景下,“关系型”数据库应该是会更优于技术型数据库。

这个大背景下,db 内核开发的情况可想而知了。

db开发这个领域已经很窄了,优化器开发是这里面最窄的。

db领域的知识其实已经都被沉淀了,现在更多都是工程问题。

以上

优化器这东西怎么说呢,你说这方向的技术水平低吧,它是整个数据库领域的绝对核心之一,发展了几十年有无数的高端技术,光一个优化顺序用push还是pull都有很多研究;但是要说它技术水平高吧,大家日常折腾的基本还是那些个人力枚举的rules,优化器架构和workflow方面已经很少有大的改动。目前还在不断进化的组件比如cost model和cardinality estimation很多都是在尝试用AI技术做。

所以如果有能力学一下AI相关知识的话,这个方向还算有一定的生机,比如这几年的learned optimizer。如果只是专注于传统技术的话,这个方向可做的事大概会越来越少、越来越侧重维护而非新的开发。

任何行业,任何领域,只要你能够做到 TOP 级别,都是很有前途的,但核心的问题是,你能够在 SQL 优化器这个领域做到 TOP 级别吗?

作为一名从事 SQL 优化器的程序员,同时也是 Apache Calcite 的 Committer,我想说如果在给我一次机会,我应该不会再选择 SQL 优化器作为我的职业方向,我可能会选择 SQL 引擎和大数据引擎作为我的开发方向,后者更偏向工程层面。

对于我个人而言,我感觉我自己可能更擅长用引擎解决业务侧问题,更多可能是偏工程方面,但对于读优化器的各种 Paper 和学术理论,说实话,相对于其他数据库博士、博士后,自知还是相差太远,而 SQL 优化器这个岗位,又是一个很吃数据库优化学术理论的工种,而这些东西,单纯的拼努力,拼卷,也不是立马就能补齐的,所以在选择 SQL 优化器之前,你思考一下,你的 SQL 优化器理论基础到底怎么样,如果不行,那你能比别人卷吗?这里我推荐可以看一下 pingap github 上 awesome-database-learning 的论文 Paper 总结:

坦白说,现在大部分的开源大数据引擎(Flink、Spark)、或者 OLAP 的一些引擎(Presto、StarRocks、Trino、Doris),SQL 优化器说实话离传统优秀的数据库还相差很远(Oracle、SQL Server),所以你说追齐国外同类产品 SQL 优化器的能力,的确还有很多事情要做。

但国内互联网很多公司都是业务驱动的,业务才是第一位,它们用大数据引擎或者数据库也是来解决业务问题的,所以有时候有很多引擎或者数据库做的优化,可能通过别的方式就绕过去了,不会给你说几个月的时候,把数据库的某一个优化项做好,毕竟老板要考虑 ROI,一般专门数据库的公司才有这样的机会。

SQL 优化器的核心是对 SQL 的计划进行优化,它需要大量的数据库算法和学术理论,需要看大量的 Paper,比如说,SQL 子查询的优化、谓词的 Pull UP 和 Push Down、Semi Join 优化、Join Order 的算法和框架、CBO 优化器搜索框架(哥伦比亚优化器、ORCA、Cascades)、函数依赖、Cost Model、统计信息等等,随便拉出来一个,就有很多 Paper 要看。

每篇论文都在考验你的英语理解能力、数学公式理解、算法思想理解能力,有时候一篇论文前面有好几篇前置论文做铺垫,你可能需要把它前面的几篇论文读了,才能理解,所以,你真能抗住不?

不过如果你也想好了未来从事 SQL 优化器的话,我建议你可以你下面几个方向来提升自己:

  1. 把 Apache Calcite 的几百种的 RBO 优化规则总结一下,对每种规则都能够熟悉它的优化思想,记住,核心是优化思想
  2. 最好能够结合你做的工作所涉及到优化事项,以及这个优化事项所涉及优化器 Paper,能够边做边读 Paper,我发现单纯的去读优化器 Paper,挺枯燥的,最好能够结合做的事情去做。
  3. 可以多看一些引擎的优化器工程实践的源码,比如 Doris、StarRocks、Apache Calcite,结合源码工程实现以及论文实现,能更好的帮助你理解优化器的思想。
  4. CMU 的数据库课程可以好好看看,比如 15-721
  5. 学会咨询和使用 Chat GPT 来帮你解答 SQL 优化器相关的问题。

最后,如果我的回答能够对你有帮助的话,欢迎点赞、收藏,关注我。

欢迎关注我的公粽号:【雷克分析】,私信发送“数据库”,即可得到我精心整理的数据库学习资料,包括视频、技术专栏、GitHub 资料、各类 Paper、SQL 标准、Apache Calcite 、 Apache Flink等等。

If you are good at this, you will get paid $$$.

這一張slide 一直貼在我床頭


2023:

沒$$$ 了:(

咨询热线:400-123-4567
站点分享:
友情链接:
电话:400-123-4567
传真:+86-123-4567
地址:广东省广州市天河区88号
版权所有:Copyright © 2002-2017 首页-万达娱乐-全球导航站 版权所有     
ICP备案编号:粤IP**********    

平台注册入口