写点什么

阿里日照:做关系型数据库比做 key-value 挑战更大

  • 2013-09-23
  • 本文字数:3129 字

    阅读完需:约 10 分钟

OceanBase 是一个分布式的关系型数据库,是阿里巴巴自主研发的开源项目之一。根据其Github 页面上的介绍,OceanBase 实现了跨行跨表的事务,支持数千亿条记录、数百TB 数据上的SQL 操作,截止到2012 年8 月为止,OceanBase 数据库支持了阿里巴巴集团下多个重要业务的数据存储,支持业务包括收藏夹、直通车报表、天猫评价等,截止2013 年4 月份,OceanBase 线上业务的数据量已经超过一千亿条。

在2013 年4 月支付宝官方博客上的一篇访谈中,阿里正祥介绍了OceanBase 的一些设计思路和技术进展。2013 年7 月的阿里技术嘉年华上,阿里高级技术专家日照带来了一场分享,介绍OceanBase 4.0,即OceanBase SQL 版本的整体架构,质量保证和运维。会议期间,InfoQ 编辑与日照进行了一些沟通,了解一些OceanBase 的应用状态和团队情况。

嘉宾简介:杨传辉,花名日照,阿里高级技术专家,热于分享底层技术并从分享中学习。负责OceanBase 开发,关注云计算和分布式数据库,之前在百度从事大规模分布式存储、计算系统等底层基础设施构建工作。

InfoQ:先介绍一下你个人在数据库、存储系统开发方面的经历吧。在这个过程中,感觉做数据库开发这个工作本身经历了哪些变化?

日照:我之前在百度做了两年半左右的云存储、云计算系统的开发。到阿里以后三年多的时间一直做 OceanBase。以前是做纯粹的分布式系统,现在做的 OceanBase 则是融合了分布式系统和传统的关系数据库这两块东西。

我自己的经历,一直都是比较专的,基本上是一直做一件事情。

InfoQ:从做数据库的角度,做这种 Key-value 和做关系数据库有什么区别?

日照:关系数据库的复杂度比普通的 Key-Value 系统要大一个数量级。从技术的角度看,关系数据库内部的 SQL 执行、事务、多版本并发控制、数据一致性都非常复杂。另外一点,那就是大家对你的看法。只要你说要做关系数据库,用户就会将你做的系统和 Oracle、MySQL 这样的通用数据库做对比,要求支持各种业务场景、易于运维,等等。相反,如果做 Key-Value 系统的话,只需要在某种业务场景下有优势就可以了。

InfoQ:听你这么说,重头做一个关系数据库会比较吃亏,还不如在 MySQL 的基础上进行改进?

日照:MySQL 发展了这么多年,有很多值得借鉴的地方,同时也面临一些问题。关系数据库设计之初假设都是基于传统的机械磁盘,而现在 SSD 这样的新硬件发展很快,大有取代机械磁盘之势。另外,虽然 MySQL 在单机层面做了大量的工作,但是在主备同步和可扩展性上存在很大的问题。基于 MySQL 做改进的好处是可以很快应用到生产上,阿里也有这样的团队。OceanBase 则是希望从根本上解决这些问题,技术挑战要比直接改进 MySQL 大一个数量级,不过从阿里数据库的规模上看,这样的投入是值得的。

InfoQ:OceanBase 0.4 版本主要的改动在哪些方面?这些方面的开发优先级是如何确立的?

日照:OceanBase 0.4 出来之前只支持 API 接口,0.4 版本最大的一个改动就是支持 SQL。支持 SQL 以后,底层的实现机制也做了很大的改变,例如支持查询计划执行、行锁、多版本并发控制,等等,另外,二级索引功能也在开发中。另外的改进就是性能优化,0.4 之前我们的主要精力在开发功能,没有精力优化,0.4 专门成立了一个性能优化小组,整体性能上提升了一个数量级。对于查询简单且数据量较大的业务场景,OceanBase 的性能是比 MySQL 要好的。

OceanBase 开发的需求有两个来源:一个是开发版本计划的功能,另外一个是业务方提出的需求。OceanBase 大体上按照预定的计划开发新功能,不过也会根据业务方的需求调整优先级。

InfoQ:OceanBase 现在主要的客户有哪些?

日照:OceanBase 有 40 几个业务方,这些业务方来自淘宝、天猫、支付宝等各个集团子公司。

我们能够感受到的有淘宝收藏夹,底层存储全部采用 OceanBase;也有天猫评价,双十一大促的时候用得很多;另外,所有广告主的报表信息都存放在 OceanBase。支付宝也有一些业务,比如余额包的部分数据存放在 OceanBase。

InfoQ:所以,现在在量大的业务场景,数据库运维团队都会推荐 OceanBase 吗?

日照:这是我所希望的,但也不完全是这样子,对于不需要事务的场景,运维团队也会考虑 HBase。现在很多是一个混合的方案,因为没有任何一个系统有百分之百的优势。我觉得再过一两年左右,在量大的场景里,OceanBase 会有更大的优势。OceanBase 的一个特点就是,我们进步非常快,比如从 0.3 到 0.4 也就一年多点时间,这段时间 SQL 功能从无到有,性能也提升了一个数量级,而其他系统基本上变化不大。

InfoQ:OceanBase 团队有多少人?分别是什么角色?

日照:我们这个团队基本上三年时间都只做了 OceanBase 这么一个事情。最开始的时候没有那么多人,大概十几个开发。到现在为止,整个 OceanBase 团队是三十几个开发,五个左右测试,五个左右专职运维。另外,运维这里也有一些变化。以前是由 OceanBase 专职运维负责所有线上业务接入和运维,但是随着业务线越来越多,整个数据库的运维团队都会来运维 OceanBase,和现在集团 MySQL 运维的做法类似。

InfoQ:从开发 OceanBase 的角度来说,参与到这个项目的开发者需要具备哪些方面的技能,或者背景?目前,你们是如何招揽到这种技能和背景的人才的?

日照:我们团队有一套成熟的人才培养机制,主要靠培养素质好的应届生。优秀的应届生放到我们这儿,有理论学习,也有实践工作,分布式数据库开发能力提升得很快。社招我们也做,不过做得比较少,国内做类似工作的人太少了。

InfoQ:素质比较好的人怎么来评估呢?

日照:我们公司有一套统一的招聘标准,我们自己还会在统一的招聘标准上加一些东西。对于应届生,我们会看他的实践能力,他学习成绩,包括是不是足够的踏实,是不是足够的聪明,动手能力,写代码的能力,有没有花时间专门静下心来做某一类型的项目。

InfoQ:没有对特定的语言的要求?

日照:没有什么特定语言的要求。我们更关注的是基础知识和潜质,语言只是可以很快学到的一项技能。

InfoQ:进来之后大家喜欢做这个吗?

日照:应届生里面有很多愿意做底层的,因为他们觉得很有技术含量,呵呵。我们整个项目组三年以来一直都在忙新版本、支持业务,从来没停过。新同学加入后不断会有新的技术挑战,所以,大家做得还是蛮开心的。

InfoQ:中文项目的发展有很多局限性。OceanBase 是否有国际化的打算?

日照:中文项目发展的局限性是有的。OceanBase 如果一直用中文,是会有一些人来去看代码,但是很少人会去给这个代码做贡献。同时,OceanBase 现在还是一个快速发展的时期,这个时候外部的 committer 要参与进来是比较难的,因为变化是比较大的。再过一两年的时间,相对稳定一些,到那个时候,我们还是希望吸收国际上一些英语国家的 committer。之前 OceanBase 开源的消息在 Twitter 里面放出来的时候,已经引起了很多的关注,有一些 HBase 的 committer 都知道我们这个项目。

InfoQ:OceanBase 目前主要针对阿里集团内部的业务提供服务。未来是否计划通过某种途径提供对第三方企业、个人的服务支持,比如像 TAE 那样?

日照:现在已经有一些银行在跟我们进行一些非正式的合作。比如说交行,他会有一些非核心的分析型业务,放到 OceanBase 里面来搞,我们也安排了一个专职同学花大约 20% 的时间回答他们的问题。

另外,阿里云也有一些 RDS 客户的业务更适合 OceanBase,他希望能够接入 OceanBase。对他来说,OceanBase 和 MySQL 用起来是一样的,都是兼容的。虽然 OceanBase 的功能不如 MySQL 多,但是他并没有用到那些复杂的功能,他就管哪个东西更便宜。

目前这个阶段,我们还没有把阿里集团内部的业务完全支持好,因此,这个时候我们 90% 以上的精力都放在集团内部,只花少量精力了解外部需求。等到 OceanBase 足够成熟了,我们会提供外部服务,大概在一两年之后。

2013-09-23 00:046508

评论

发布
暂无评论
发现更多内容

easyrecovery2024永久免费版数据恢复软件

茶色酒

EasyRecovery15 easyrecovery2023

Verilog 表达式

芯动大师

Verilog Verilog语法 Verilog操作符

2022年中国期货行业年度发展观察分析

易观分析

金融 期贷

面试官问对分布式锁进行高并发优化,这样答,成功斩获大厂offer

钟奕礼

Java 程序员 java面试 java编程

三年Crud,一周学会MySQL,助我拿到阿里研发Offer

钟奕礼

程序员 java面试 java编程 #java

移动端防抓包实践

杨充

天天刷 B站,了解他们的评论系统是如何设计的吗?

小小怪下士

Java 程序员 系统设计

CleanMyMac2024值不值的下载安装?

茶色酒

CleanMyMac X CleanMyMac X2023

【工具安装】logstash的安装

No8g攻城狮

elastic Logstash ES ELK Stack Elastic Search

阿里巴巴最新推出王者笔记:“Spring MVC源码与实践”

钟奕礼

Java 程序员 java面试 java编程

线性表→顺序表→链表 逐个击破

C++后台开发

数据结构 linux开发 Linux服务器开发 顺序表 C++开发

Mysql大合集,你要内容的这里全都有

钟奕礼

Java 程序员 java面试 java编程

FLStudio水果2024中文免费版下载

茶色酒

FL Studio FL Studio21

四种主流的大数据技术

穿过生命散发芬芳

大数据技术 12月月更

CleanMyMacX软件免费版本在哪里下载?

茶色酒

CleanMyMacX

SSM框架之Mybatis整合

@下一站

实践 mybatis配置 11月日更 mybatis入门 11月月更

极客时间运维进阶训练营第七周作业

独钓寒江

深入浅出学习透析 Nginx 服务器的基本原理和配置指南「运维操作实战篇」

码界西柚

nginx web服务器 运维开发 12月日更 12 月 PK 榜

前辈给的Spring Cloud与Docker微服务实战,挽救了要被辞退的我

钟奕礼

Java 程序员 java面试 java编程

浅谈网络营销从业者如何突破瓶颈期

石头IT视角

Seata分布式事务你懂吗?学习了大佬的笔记,公司说要给我涨薪8K

钟奕礼

Java 程序员 java面试 java编程

在 Istio 服务网格中使用 Argo Rollouts 实现智能的渐进式发布

Se7en

云原生

CleanMyMac2023mac电脑清理磁盘软件

茶色酒

CleanMyMac CleanMyMacX CleanMyMac X

同事跳槽拿下阿里P6Offer,程序员:会点基础还真不行

钟奕礼

Java 程序员 java面试 java编程

曲面屏墨水屏显示器!墨水屏手机显示器!北京大上科技发布多款新概念产品

硬科技星球

Discourse 本地开发环境时候出现代理错误

HoneyMoose

内卷这么严重!学会这些java核心资料,再也不怕行业内卷了

钟奕礼

Java 程序员 java面试 java编程

鸿蒙开发实例|构建轻量级智能穿戴设备用户界面

TiAmo

华为云 鸿蒙开发 12月月更

爱了!阿里巴巴JAVA岗发布,最新内部面试题(含P5-P7)

钟奕礼

Java 程序员 java面试 java编程

阿里日照:做关系型数据库比做key-value挑战更大_阿里巴巴_sai_InfoQ精选文章