一位挪威博士是如何成为阿里云PolarDB资深架构师的?How I ended up working as a senior architect on PolarDB

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 挪威博士倾心传授对于软件架构师角色至关重要的经验,希望能指导和帮助各位技术同学实现成为资深技术架构师。

我叫Øystein Grøvlen,在过去的三年中,我一直在阿里巴巴PolarDB团队的优化器和执行器团队担任资深技术专家。我来自挪威,但在2018年来到中国杭州阿里巴巴公司, 一年后,我搬到了加利福尼亚州桑尼维尔的阿里巴巴公司办公室。


My name is Øystein Grøvlen, and for the last 3 years I have been working as a Senior Staff Engineer in the MySQL Optimizer & SQL group of the POLARDB team at Alibaba. I am originally from Norway, but moved to China to work for Alibaba in 2018. After living one year in Hangzhou, I relocated to Alibaba's office in Sunnyvale, California.


我的软件开发之旅始于作为美国的一名交换生,在那里我在APPLE II电脑上接触到了BASIC语言。我发现我对能够创建自己的程序来解决不同的问题感到非常满足,这激发了我在Norwegian Institute of Technology的学习期间去学习计算机科学,我发现数据库和信息检索特别有趣,因此我决定在该领域攻读博士学位。我与挪威电信的研究部门取得了联系,最终在他们的研究项目ClustRa上工作了一段时间,同时攻读了基于Compensation-Based Query Processing课题的博士学位。


My journey as a software developer started as an exchange student in the US where I was introduced to programming in BASIC on APPLE II computers. I found it very satisfying to be able to create my own programs in order to solve different kind of problems, and this inspired me to study computer science at the Norwegian Institute of Technology. During my studies, I found databases and information retrieval particularly interesting, and I decided to pursue a PhD in that area. I came in contact with the research department at the Norwegian Telecom, and I ended up working part-time on their research project, ClustRa, while working on my PhD on Compensation-Based Query Processing.


获得博士学位后,我开始在一家初创公司工作,该公司旨在将ClustRa数据库系统商业化。ClustRa是针对电信运营的高可用数据库系统。Clustra的体系结构与MySQL集群非常相似,你们中的许多人可能听说过。我们的工作重点是事务、分区、复制、故障容错和恢复。那是一段有趣的时光,解决了许多有趣的问题。不幸的是,当网络泡沫破裂时,我们耗尽了资金,但我们很幸运,Sun Microsystems决定收拾残局。在Sun公司,我继续在Clustra上工作了一段时间,然后开始使用Java实现的数据库Cloudscape的开源版本。当Sun后来购买MySQL时,我切换到MySQL上工作,并且获得了在优化器团队中工作的机会。Sun后来被Oracle收购,我在加入阿里巴巴之前,在Sun/Oracle从事了10年MySQL的工作。


After my PhD, I started working at a start-up that was set up to commercialize the ClustRa database system. ClustRa was a highly available database system targeted at Telecom operations. The architecture of Clustra was pretty similar to MySQL Cluster, which many of you may have heard about. The focus of our work was on transactions, partitioning, replication, fail-over, and recovery. It was a fun time, solving a lot of interesting problems. Unfortunately, we ran out of funding when the dot-com bubble burst, but we were lucky that Sun Microsystems decided to pick up the pieces. At Sun, I continued to work on Clustra for while, before starting to work on Derby, the open-source version of the Cloudscape, a database implemented in Java. When Sun later bought MySQL, I switch to work on MySQL, and I got the opportunity to work in the Optimizer team. Sun was later bought by Oracle, and I worked on MySQL at Sun/Oracle for 10 years before joining Alibaba.


我发现从事查询优化和处理真的很有趣。我最喜欢的部分是研究如何让查询运行得更快。PolarDB基于MySQL代码,因此我可以运用已有的优化器的经验来使PolarDB成为更好的产品。我觉得为PolarDB团队工作特别有意义的是,阿里巴巴愿意为PolarDB投入大量资源。我们有一大群人在改进产品,我认为我在这里工作的这段时间,我们能做的事情是令人惊叹的。我大部分时间都花在支持并行查询处理项目上; 而MySQL只能使用一个线程来执行查询,PolarDB可以将查询执行划分为多个线程并行执行。


I find it really interesting to work on query optimization and query processing. My favorite part is investigating how we can get queries to run faster. POLARDB is based on MySQL code, so I can use my knowledge about the MySQL optimizer to make POLARDB a better product. What I find particularly rewarding about working for the POLARDB team, is that Alibaba is willing to put a lot of resources into POLARDB. We have a large group of people working on improving the product, and I think it is amazing what we have been able to do while I have been here. Most of my time I have spent on the project to support parallel query processing; while MySQL can only use one thread to execute a query, POLARDB can partition the query execution across multiple parallel threads.


我会被问到是否可以给其他研发人员提供一些建议,指导和帮助他们实现成为资深技术架构师的职业目标。


我认为有许多不同的成功之路,有些人可能会认为,一部分可能是因为幸运地在正确的时间出现在正确的地点。但是,根据我的经验,我想讨论一些我认为对于软件架构师的角色至关重要的方面。


I have been asked to give some advice to other developers on what it takes to make a career as a senior architect. I think there are many different paths to success, and some may claim that part of it may be the luck of being at the right place at the right time. However, based on my experience, I will discuss a few aspects that I feel has been essential to prepare myself for the role of software architect.

深入研究 Make deep dives


我认为学习一个软件系统是如何工作的唯一方法就是深入代码进行研究。不要假设你理解代码是如何工作的,而是要通过跟踪执行过程或使用调试逐步执行代码来验证它。


I think the only way to learn how a software system works, is to deep dive into the code. Do not just assume that you understand how the code is working, verify it by tracing the execution or stepping through the code with a debugger.


我遇到了很多开发人员,当遇到错误时,不去对代码的工作原理有很好的了解,而是尝试不断反复试错来走捷径。他们可能会成功地修复这个BUG,但是他们对代码是如何工作的知之甚少。很多时候,这种方法还导致了似乎可以解决BUG的修复,但是潜在的问题可能仍然存在。不要只是满足于所有测试成功,要通过跟踪/调试验证它是否按预期运行。第一次可能需要更长的时间完成工作,但是当你在同一领域被分配另一项任务时,你就会非常受益。


I have met quite a few developers that when faced with a bug, instead of getting a good understanding of how the code works, try to take short-cuts based on trial and error. They may succeed in fixing the bug, but they have learned very little about how the code works. Many times this approach also leads to bug fixes that seems to solve the problem, but the underlying problem may still exist. Do not just be satisfied when all your tests succeed, verify by trace/debugger that it runs as expected! It may take a bit longer to get the job done the first time, but you will get the reward later when you are assigned another task in the same area.



Optimizer Trace is a great tool to learn about the MySQL Query Optimizer


通过示例学习 Learn by example


每个人是不同的。我发现通过执行一些特定示例来学习新代码更容易,然后推广这种方法。有些人可能仅通过阅读就成功地理解了代码,但是我想我的心智还没有达到这个水平。


People are different. I find it easier to learn new code by following the execution of some specific examples, and then generalize from that. Other people may be successful in understanding the code just from reading it, but I guess my mental capacity is not at that level.


我在ClustRa的第一个任务之一是让事务回滚成功。这个任务的大部分代码已经完成了,但是仍然有一小部分缺失了。通过仔细跟踪事务的执行情况,我花了很长时间才发现缺失的部分并使其正常工作。我认为,如果我仅通过阅读代码来识别缺少的部分,那将花费我更长的时间。


One of my first tasks at ClustRa was to make transaction rollback work. Much of the code was already prepared for the task, but there was still some missing pieces. By carefully tracing the execution of a transaction, it did not take me long to identify the missing pieces and make it work. I think it would have taken me much longer if I were to identify what was missing just by reading the code.


不要害怕问 Be not afraid to ask


当你偶然被一个问题绊住时,不要害怕问你的同事。分享你对问题的理解,并征求他们的意见。大多数开发人员非常乐意分享他们所知道的。但是,在提出问题之前,请确保你已经付出了一些努力来理解问题。否则,你的同事可能会觉得你只是想让他们做你的工作。


When you stumbled on a problem, do not be afraid to ask your co-workers. Share your understanding of the problem and ask for their advice. Most developers are more than happy to share what they know. However, make sure you have put some effort into understanding the problem before you ask. Otherwise, your co-workers may feel you are just trying to make them do your job.


分享你的智慧 Share your wisdom


与你的同事分享你的知识。欢迎他们提出问题; 在这个过程中,你经常会学到一些东西。

Share your knowledge with your co-workers. Welcome their questions; you will often learn something yourself in the process。


另外,在技术文章中记录你的工作内容,并寻求机会在公开场合分享。这是让其他团队或公司以外的人了解你和你的工作的好方法。


Also, write about your work in articles and blog posts, and seek for opportunities to talk about it in public. This is a good way to make people outside your team or company aware of you and your work.



了解你的用户 Understand your users


我发现许多开发人员在理解用户需求方面投入的努力太少了。通常开发人员更喜欢要么快速直接的解决方案,要么在技术上更 “有趣”,而不是解决实际问题。问问自己:“这将如何使用?”,“选择的交互对用户实用吗?”,等等。


I feel many developers put too little effort into understanding the needs of their users. Often the developer prefer solutions that are either more straight-foward to implement, or more technically "interesting", over solving the real problem. Ask yourself: "How will this be used?", "Will the chosen interface be practical to the users?", and so on.


在开始设计之前,最好指定一些客户场景,来描述将如何使用此新功能以及它将解决什么问题。


Before starting the design, it is a good idea to specify a few uses cases that describes how this new feature will be used, and what problem it will solve.


保持耐心 Stay around


成为技术、产品或代码库的专家需要时间。我花了很多年才认为自己是MySQL查询优化器的专家。虽然拥有丰富的经验当然很好,但我认为如果你经常换工作或技术,你将错过获得深刻见解的机会,而这是自己成为专家的必要之路。换句话说,要有耐心,并为自己设定长期目标!


It takes time to become an expert on a technology, a product, or a code base. It took me several years before I could consider myself an expert on the MySQL query optimizer. While it is certainly good to have a wide experience, I think that if you change jobs or technologies too often, you will miss the opportunity to get the deep insights that will be necessary to establish yourself as an expert. In other words, be patient, and set long-term goals for yourself!


相关阅读:

删库跑路?别怕!PolarDB-X 轻松拯救误删数据的你

阿里13篇论文入选数据库顶会 PolarDB创新技术架构获认可

上海ACE同城会演讲实录|云原生分布式数据库PolarDB-X

PolarDB-X 是如何用15M内存跑1G的TPCH

顶会点赞!PolarDB Serverless实现了哪些突破?

云原生分布式数据库PolarDB技术深度解密

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
4月前
|
存储 Cloud Native 关系型数据库
PolarDB 高可用架构设计与实践
【8月更文第27天】 在现代互联网应用中,数据库作为核心的数据存储层,其稳定性和可靠性尤为重要。阿里云的 PolarDB 作为一款云原生的关系型数据库服务,提供了高可用、高性能和自动化的特性,适用于各种规模的应用。本文将详细介绍 PolarDB 的高可用架构设计,并探讨其实现数据安全性和业务连续性的关键技术。
103 0
|
22天前
|
人工智能 云计算 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日~10日在江苏张家港召开的CCF ChinaNet(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变革。
阿里云引领智算集群网络架构的新一轮变革
|
22天前
|
人工智能 运维 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日至10日,CCF ChinaNet(中国网络大会)在江苏张家港召开,众多院士、教授和技术领袖共聚一堂,探讨网络未来发展方向。阿里云研发副总裁蔡德忠发表主题演讲,展望智算技术发展趋势,提出智算网络架构变革的新思路,发布高通量以太网协议和ENode+超节点系统规划,引起广泛关注。阿里云HPN7.0引领智算以太网生态蓬勃发展,成为业界标杆。未来,X10规模的智算集群将面临新的挑战,Ethernet将成为主流方案,推动Scale up与Scale out的融合架构,提升整体系统性能。
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
|
2月前
|
人工智能 Cloud Native 关系型数据库
阿里云关系型数据库连续五年蝉联榜首
全球领先的IT市场研究和咨询公司IDC发布了《2023年下半年中国关系型数据库软件市场跟踪报告》,2023年阿里云整体市场份额(公有云+本地部署模式)稳居第一,其中公有云市场份额高达39.2%,自2019年起连续5年蝉联榜首。
|
3月前
|
Cloud Native Java 编译器
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
随着云计算技术的不断发展,云服务商们不断推出高性能、高可用的云服务器实例,以满足企业日益增长的计算需求。阿里云推出的倚天实例,凭借其基于ARM架构的倚天710处理器,提供了卓越的计算能力和能效比,特别适用于云原生、高性能计算等场景。然而,有的用户需要将传统基于x86平台的应用迁移到倚天实例上,本文将介绍如何将基于x86架构平台的应用迁移到阿里云倚天实例的服务器上,帮助开发者和企业用户顺利完成迁移工作,享受更高效、更经济的云服务。
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
|
3月前
|
缓存 Kubernetes Java
阿里云 SAE Web:百毫秒高弹性的实时事件中心的架构和挑战
SAE 事件中心通过智能诊断显示通知与用户连接起来,SAE WEB 百毫秒弹性实例给事件中心带来了新的实时性、海量数据和高吞吐的挑战,本篇将带您了解 SAE 整体事件中心的架构和挑战。
164 10
|
2月前
|
存储 关系型数据库 MySQL
阿里云PolarDB解决游戏行业全球部署高并发问题
阿里云PolarDB解决游戏行业全球部署高并发问题
|
4月前
|
Cloud Native 数据库 开发者
云原生数据库2.0问题之帮助阿里云数据库加速技术更新如何解决
云原生数据库2.0问题之帮助阿里云数据库加速技术更新如何解决
|
4月前
|
Serverless 数据安全/隐私保护 开发者
Serverless 架构问题之阿里云函数计算在事件生态层面如何解决
Serverless 架构问题之阿里云函数计算在事件生态层面如何解决
44 0

相关产品

  • 云原生数据库 PolarDB