技术开发 频道

腾讯李海翔:数据库并发控制技术的探索

  【IT168 评论】李海翔是一个不折不扣的技术老炮儿,有着近20年数据库相关经验,先后在人大金仓、Oracle、MySQL全球开发组等企业工作过,目前任职于腾讯技术工程事业群,主要负责腾讯金融级分布式数据库TDSQL的内核研发工作。如果让我用一句话形容他,我会说他是“一个乐于分享的技术狂热者”。

腾讯李海翔:数据库并发控制技术的探索
腾讯李海翔

  李海翔的乐于分享体现在各个方面,由于多年的从业经验,李海翔熟悉MySQL、PostgreSQL、Informix等数据库内核,同时也熟悉Oracle等商业数据库。他以“那海蓝蓝”的网名活跃在网易博客、新浪微博等众多网站和论坛,至今已发表了数百篇数据库博客并撰写了《数据库查询优化器的艺术:原理解析与SQL性能优化》一书广受赞誉,而今年将出版的《数据库事物处理的艺术 事务管理与并发控制》一书将深度挖掘事务处理技术和并发控制技术,而他聊起数据库那滔滔不绝的架势,绝对是一个技术狂热者。

  开源数据库与商业数据库之战,谁更胜一筹?

  开源数据库与商业数据库这一战似乎不死不休,然而,无论是从市场份额来看,还是从搜索及讨论热度来看,开源数据库的表现似乎越来越强,坊间开始流传起“商业数据库已死”的说法,李海翔并不认可“商业数据库已死”的说法。李海翔认为,数据库产品本身开源与否只是一种商业模式的选择。如果仅从传统或比较敏感的行业来看,例如金融、通信、政务等领域,依然是传统商业数据库,如Oracle、DB2的天下。而很多新兴行业,如互联网,电商等领域,开源数据库占据了较大份额,而这两块市场在人员及组织架构上有很大区别。传统商业数据库生态完善,仅需投入少量维护人员,剩下的交给第三方或数据库厂商即可,而互联网等领域,虽然使用开源数据库,但需要投入大量数据库研发人员,对数据库做深入研究。所以开源与否,不同行业的客户有不同的选择。

  另外,李海翔也提醒广大企业,开源不一定就是最好的,成熟的商业数据库往往对质量要求更高。

  腾讯选用了哪些数据库?又分别针对什么样的业务场景呢?

腾讯李海翔:数据库并发控制技术的探索

  李海翔表示,腾讯的OLTP场景主要是两大思路:

  1、基于MySQL的深度定制。

  这一类产品通常是在兼容MySQL接口协议的基础上,针对具体业务场景做定制化,例如腾讯针对金融场景,定制出TDSQL,强调数据强一致性、零丢失、高可用、高性能等特性;游戏运营平台则基于游戏场景变化频繁的特点,定制出TMySQL,强调二进制字段压缩、在线DDL、快速回档(Binlog并行恢复)等特性;此外还有CDB for MySQL、CDB for TDSQL、CDB for PostgreSQL等,实现多租户管理,将DB云化,为公司私有云以及腾讯云提供数据库的PaaS服务。

  定制不仅要满足不同的场景,还要求有极高的性能,TDSQL就是这样一款既满足事务处理的高一致性需求,又能在性能上有非常良好表现的深度定制产品。

  2、自研KV存储

  这一类产品更加特性化,与业务场景结合更紧,最初出发点往往是性能与服务器成本的平衡。例如常见的Feeds流,通常都会做磁盘读写优化、冷热数据自动分离;而腾讯也针对支付营销场景,开发了高性能的,全内存的金融级分布式存储系统(HOLD),在保证跨IDC强一致性的情况下,单机性能达到60万TPS。

  此外,也有业务使用MongoDB等数据库,这类文档型数据库胜在灵活,适合产品原型或发展初期,对于大规模的在线服务,不推荐使用。

  在OLAP场景下,基本上被TDW垄断。TDW(腾讯分布式数据仓库)是腾讯大数据平台的核心部件,基于开源软件HIVE和Hadoop进行的深度定制,目前该项目已经开源。

  云数据库是未来不可逆转的趋势?

  云数据库近年来甚嚣尘上,大有鼎沸之势,笔者就云数据库的安全及发展询问了李海翔的看法,李海翔认为云数据库是未来不可逆转的技术趋势。(目前腾讯团队的数据库产品TDSQL在金融领域提供公有云与私有云两种解决方案。)

  对于云数据库的安全,李海翔表示,就单一客户而言,使用云数据库肯定比自主运营数据库集群安全。因为云数据库厂商,通常都有一个专业的安全团队,来构建一套完整的安全体系,如事前从物理、网络、系统、应用、数据、业务等多方面构建安全环境;事中及时发现风险,并实时拦截隔断;事后做审计等。如果一家企业自主构建一套类似体系,并持续跟进风险,维护成本相当高。当然云产品也有风险,毕竟鸡蛋都放在一个篮子里,篮子虽然不轻易坏,但一旦坏了,坏的可能就是一篮子鸡蛋,同理,云产品一旦出现安全问题,可能会造成比较大的影响。

  从数据层面看如何把控企业级数据安全?

  近年,有关数据安全的事件频频发生,除了要选择合适的数据库之外,李海翔从数据层面对企业如何保证数据安全提出了自己的看法。首先,在可靠性和可用性上,众多企业都会设置数据备份,异地同步备份等机制确保数据的可靠及可用,但千里之堤可能溃于蚁穴,各种备份机制需要不断的模拟演练来确保机制可用。比如,对于TDSQL云上的冷备系统,腾讯每周都会对每套数据库进行回档操作,避免冷备数据不可用。

  在数据的完整性、保密性以及防篡改上,应该设置严格的权限控制机制。以腾讯为例,TDSQL目前仅开放普通用户常用权限,敏感权限只能通过管理台开启;root用户收回;管理权限与使用权限分离等。其次数据库的每一个操作,都有详细的日志记录,并通过数据库防火墙实时分析,对高危操作实时拦截,这些日志也会一并进入审计系统进行审计监控。

  写在最后

  不知不觉,DTCC大会今年已经是第八届了,而李海翔也是第三次参与了,这一次他分享的主题是《数据库的并发控制技术深度探索》,这也是数据库内核中事务处理的核心技术。

  李海翔会从九种数据异常现象讲起(没错,确实是九种),从原理出发剖析各种数据异常现象,并深入对比多种并发控制技术,探究每种技术的本质。通过对Oracle、MySQL、PostgreSQL、Informix等数据库并发控制技术的对比,用实例说明并发控制技术是如何实现的,透视背后的技术原理和设计思想。李海翔说,数据库内核深度是每名内核技术工程师都在追求的,而设计思想则是每位工程师都极其关注的。

  至于为什么选择这个主题,除了话题本身的挑战性让李海翔饶有兴趣,腾讯开源的心态也对李海翔有着深深的影响,李海翔所在部门设计、定制开发的金融级分布式数据库TDSQL,在事务处理方面有着极高的技术追求,这次分享也是腾讯多年来的技术积累,用李海翔的话说,腾讯有着一颗技术公益之心。DTCC也本着这样一颗技术公益之心,网罗了各种技术大咖,5月11日期待你的到来!

0
相关文章