这位挪威博士是如何成为阿里云PolarDB资深架构师的?
我叫?ystein Gr?vlen,在過去的三年中,我一直在阿里巴巴PolarDB團隊的優(yōu)化器和執(zhí)行器團隊擔任資深技術專家。我來自挪威,但在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.?
我的軟件開發(fā)之旅始于作為美國的一名交換生,在那里我在APPLE II電腦上接觸到了BASIC語言。我發(fā)現(xiàn)我對能夠創(chuàng)建自己的程序來解決不同的問題感到非常滿足,這激發(fā)了我在Norwegian Institute of Technology的學習期間去學習計算機科學,我發(fā)現(xiàn)數(shù)據庫和信息檢索特別有趣,因此我決定在該領域攻讀博士學位。我與挪威電信的研究部門取得了聯(lián)系,最終在他們的研究項目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.?
獲得博士學位后,我開始在一家初創(chuàng)公司工作,該公司旨在將ClustRa數(shù)據庫系統(tǒng)商業(yè)化。ClustRa是針對電信運營的高可用數(shù)據庫系統(tǒng)。Clustra的體系結構與MySQL集群非常相似,你們中的許多人可能聽說過。我們的工作重點是事務、分區(qū)、復制、故障容錯和恢復。那是一段有趣的時光,解決了許多有趣的問題。不幸的是,當網絡泡沫破裂時,我們耗盡了資金,但我們很幸運,Sun Microsystems決定收拾殘局。在Sun公司,我繼續(xù)在Clustra上工作了一段時間,然后開始使用Java實現(xiàn)的數(shù)據庫Cloudscape的開源版本。當Sun后來購買MySQL時,我切換到MySQL上工作,并且獲得了在優(yōu)化器團隊中工作的機會。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.?
我發(fā)現(xiàn)從事查詢優(yōu)化和處理真的很有趣。我最喜歡的部分是研究如何讓查詢運行得更快。PolarDB基于MySQL代碼,因此我可以運用已有的優(yōu)化器的經驗來使PolarDB成為更好的產品。我覺得為PolarDB團隊工作特別有意義的是,阿里巴巴愿意為PolarDB投入大量資源。我們有一大群人在改進產品,我認為我在這里工作的這段時間,我們能做的事情是令人驚嘆的。我大部分時間都花在支持并行查詢處理項目上; 而MySQL只能使用一個線程來執(zhí)行查詢,PolarDB可以將查詢執(zhí)行劃分為多個線程并行執(zhí)行。
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.?
我會被問到是否可以給其他研發(fā)人員提供一些建議,指導和幫助他們實現(xiàn)成為資深技術架構師的職業(yè)目標。
我認為有許多不同的成功之路,有些人可能會認為,一部分可能是因為幸運地在正確的時間出現(xiàn)在正確的地點。但是,根據我的經驗,我想討論一些我認為對于軟件架構師的角色至關重要的方面。
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
我認為學習一個軟件系統(tǒng)是如何工作的唯一方法就是深入代碼進行研究。不要假設你理解代碼是如何工作的,而是要通過跟蹤執(zhí)行過程或使用調試逐步執(zhí)行代碼來驗證它。
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.?
我遇到了很多開發(fā)人員,當遇到錯誤時,不去對代碼的工作原理有很好的了解,而是嘗試不斷反復試錯來走捷徑。他們可能會成功地修復這個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
每個人是不同的。我發(fā)現(xiàn)通過執(zhí)行一些特定示例來學習新代碼更容易,然后推廣這種方法。有些人可能僅通過閱讀就成功地理解了代碼,但是我想我的心智還沒有達到這個水平。
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的第一個任務之一是讓事務回滾成功。這個任務的大部分代碼已經完成了,但是仍然有一小部分缺失了。通過仔細跟蹤事務的執(zhí)行情況,我花了很長時間才發(fā)現(xiàn)缺失的部分并使其正常工作。我認為,如果我僅通過閱讀代碼來識別缺少的部分,那將花費我更長的時間。
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
當你偶然被一個問題絆住時,不要害怕問你的同事。分享你對問題的理解,并征求他們的意見。大多數(shù)開發(fā)人員非常樂意分享他們所知道的。但是,在提出問題之前,請確保你已經付出了一些努力來理解問題。否則,你的同事可能會覺得你只是想讓他們做你的工作。
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
我發(fā)現(xiàn)許多開發(fā)人員在理解用戶需求方面投入的努力太少了。通常開發(fā)人員更喜歡要么快速直接的解決方案,要么在技術上更 “有趣”,而不是解決實際問題。問問自己:“這將如何使用?”,“選擇的交互對用戶實用嗎?”,等等。
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查詢優(yōu)化器的專家。雖然擁有豐富的經驗當然很好,但我認為如果你經常換工作或技術,你將錯過獲得深刻見解的機會,而這是自己成為專家的必要之路。換句話說,要有耐心,并為自己設定長期目標!
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 輕松拯救誤刪數(shù)據的你
阿里13篇論文入選數(shù)據庫頂會 PolarDB創(chuàng)新技術架構獲認可
上海ACE同城會演講實錄|云原生分布式數(shù)據庫PolarDB-X
PolarDB-X 是如何用15M內存跑1G的TPCH
頂會點贊!PolarDB Serverless實現(xiàn)了哪些突破?
云原生分布式數(shù)據庫PolarDB技術深度解密
原文鏈接:https://developer.aliyun.com/article/789290?
版權聲明:本文內容由阿里云實名注冊用戶自發(fā)貢獻,版權歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權,亦不承擔相應法律責任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務協(xié)議》和《阿里云開發(fā)者社區(qū)知識產權保護指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區(qū)將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的这位挪威博士是如何成为阿里云PolarDB资深架构师的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 报告!钉钉宜搭的8月总结,请查收~
- 下一篇: 智能搜索推荐一体化营收增长解决方案