朱赟的技术管理课
朱赟
计算机博士,前Airbnb技术经理
立即订阅
11176 人已学习
课程目录
已完结 39 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 | 从工程师到管理者,我的思考与实践
免费
01 | 职场分身术:从给答案到做引导
02 | Bug引发事故,该不该追究责任?
03 | 每个工程师都应该了解的:A/B测试
04 | 如何帮助团队成员成长
05 | 当我们给别人提意见时,要注意些什么?
06 | 每个工程师都应该了解的:聊聊幂等
07 | 当别人给我们提意见时,该如何应对?
08 | 说说硅谷公司中的一对一沟通
09 | 每个工程师都应该了解的:大数据时代的算法
10 | 项目延期了,作为负责人该怎么办?
11 | 管理和被管理:期望值差异
12 | 每个工程师都应该了解的:数据库知识
13 | 管理者在进行工作分配时,会考虑哪些问题?
14 | 硅谷人到底忙不忙?
15 | 每个工程师都应该了解的:系统拆分
16 | 技术人如何建立个人影响力?
17 | 管理者不用亲力亲为:关键是什么?
18 | 每个工程师都应该了解的:API 的设计和实现
19 | 硅谷面试:那些你应该知道的事儿
20 | 项目管理中的三个技巧
21 | 每个工程师都应该了解的:中美在支付技术和大环境下的差异
22 | 不要做微观的管理者
23 | 如何处理工作中的人际关系?
24 | 编程语言漫谈
25 | 兼容并包的领导方式
26 | 如何做自己的职场规划?
27 | 小议Java语言
28 | 如何激发团队人员的责任心
29 | 说说硅谷互联网公司的开发流程
30 | 编程马拉松
31 | 工程师、产品经理、数据工程师是如何一起工作的?
32 | 硅谷人如何做 Code Review
33 | 技术人的犯错成本
34 | 如何从错误中成长?
35 | 理解并建立自己的工作弹性
36 | 如何对更多的工作说“不”
尾声:成长不是顿悟,而是练习
新书 |《跃迁:从技术到管理的硅谷路径》
朱赟的技术管理课
登录|注册

12 | 每个工程师都应该了解的:数据库知识

朱赟 2017-12-08
数据库和编程语言一样,同样是软件工程师们的必争之地。今天我就和大家聊一些数据库相关的知识。
去年 Uber 发表了一篇文章,宣布他们从 PostgreSQL 转到 MySQL 了。文章的内容很好,同时还科普了一些数据库索引和复制的基本常识。当时,我转给了一个朋友,朋友看了之后说:“哦,他们 2013 年才发了一篇文章说他们从 MySQL 转到 PostgreSQL 。”
我找来朋友提到的那篇旧文,读过之后,大概理解了两篇转型文章背后的原因。
作为两大主流开源数据库,MySQL 和 PostgreSQL 的 “战争” 从未停止,虽然硝烟不如编程语言那么浓烈,但也是你来我往,剑影刀光。
如果去 Quora 或者 Stack Overflow 上搜索 MySQL V.S. PostgreSQL 这样的关键字,会出现一大堆帖子,大家各执一词众说纷纭,我的感觉则是:两者各有各的优势和使用场景,并不存在一种数据库对另一种压倒性优势。
对于大部分程序员来说,公司用哪个数据库,基本无需你去决定。加入一个公司的时候,除非是创业公司,或者你是 CTO、VP、总监级别的,否则大部分的技术选型早已应该尘埃落定。
尤其是数据库,一旦选择,再迁移的代价非常大。因此,除非有颠覆性的优势或者难以克服的问题,很少有公司会去费时费力做这种大的迁移。
不论是技术选型还是技术转型,其中不可忽略的因素是:你的工程师更容易驾驭哪一种技术,或者有话语权的决策者们倾向于哪一种技术。这一点其实和程序语言的选型有异曲同工之处。
类似 Uber 两次高调转型的事情,在我曾经工作过的 Square 公司也发生过。
Square 最早使用的是 MySQL,到了 2012 年,由于 PostgreSQL 的各种优势越来越突出 —— 比如对地理空间(Geospatial)数据和搜索的支持,当时几位资深工程师也开始大力倡导,很多新的服务就尝试性地使用 PostgreSQL。
那时候,公司的架构是 MySQL 和 PostgreSQL 并存的。对于我而言,这就有机会学习、掌握和比较两种不同的技术。
在我来看,两者各有特点,有些技术实现在 MySQL 里更方便一点,另一些则反之。无论哪种数据存储方式,总有方案可以解决问题,并没有觉得非要哪一种才行。
一个公司如果数据库从来不出问题,那一定是因为没有业务量或者流量。所有技术的选型和设计,都有它的应用场景,除去那些让人开心的案例,剩下的毫无疑问就是坑。
如何尽可能地避开这些坑,如何在出现问题的时候可以用最快的速度去修复,这些都是至关重要的因素。
大部分工程师并不是数据库专家,在 Square 公司两种数据库并存的期间,PostgreSQL 的牛人寥寥无几,但是 MySQL 却有几个专家是极为靠谱的。对我们而言 ,PostgreSQL 和 MySQL 的相对优势,都比不过出问题的时候有人救火和解惑来的重要。
另外,一个公司维系两套同类的数据库系统本身就是个负担,因为这些原因,那些使用 PostgreSQL 的服务慢慢就转成了 MySQL 。
我们支付类的技术工作需要强事务和一致性的支持,所以 NoSQL 类型的数据库用得比较少,主要使用的是 MySQL 或者 PostgreSQL。由于在工作中常常与数据库打交道,我也逐渐了解到不少相关的知识和技术,但是线上真的出了问题,我还是没有把握自己去搞定。
好在,每个公司都会有一些专攻数据库的大牛,这种专门的职位便是 DBA,有的中小创业公司没有专职 DBA,数据库便由做运维的人维护。我和几位这样的牛人私交甚好,加之平时自己处理起系统中出现的相关问题,也会常常请教他们,一来二去就知道了很多有趣的数据库知识。
对数据库专家我一向是敬佩的态度,他们的价值不可小觑。公司只要稍具规模,如果数据库这块做不好,基本也就没什么可玩的了。数据库可以说是互联网公司最宝贵的资产,这块不出问题也罢,一出问题,即是见血封喉,服务直接宕机。

关于数据库,最常见的问题都有哪些呢?

取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《朱赟的技术管理课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(13)

  • 一路向北
    用过数据库,但是没有怎么去理解过。读过之后,醍醐灌顶
    2017-12-09
    6
  • 公剑|Gong Jian
    安姐,在线修改大表的表结构,MySQL会lock住,有什么好的解决方案吗?
    2017-12-14
    5
  • shibo
    非常干货!!!!安姐以后是不是可以在billing搞个tech talk呀 lol
    2017-12-08
    5
  • Geek_c8eb71
    数据库的初级原理
    2018-08-03
    2
  • RAY
    适合初级科普
    2018-04-11
    2
  • kimi
    安姐什么时候说一下分布式事务,以及你曾工作过的两个公司在支付环节如何实现分布式事务
    2017-12-16
    1
  • Silence
    安姐的这篇文章很实用,Mark了!
    2017-12-08
    1
  • AlphaZero
    嗯,就在刚刚上线一个核心存储过程的变更。此存储过程所以请求都会涉及到。然后性能与原先的有所变差,导致API请求积压并超时😢。Rollback后,写了个Incident Report。现在在BART等车回家…
    2017-12-08
    1
  • mikejiang
    数据库的迁移成本很大,所以基本上不会迁移。另外数据库建议小公司使用云数据库,这样会省下来很多成本。
    2019-11-05
  • 熙文
    受教了,非常有意义
    2019-10-30
  • 请问安姐,支付业务依赖数据库的事务特性么?大公司的做法都是什么?我们公司是不允许用数据库事务的,还望解疑,谢谢
    2018-11-14
  • Dylan
    前两天就刚刚在生产的数据库上直接进行操作~由两个资深的数据库工程师一起再三核对脚本,才敢最后运行~真的是后怕
    2017-12-29
  • 产品助理
    刚参加工作时,公司就流传一个大神误操作删库的传说。
    2017-12-08
收起评论
13
返回
顶部