我是1965年生人,在做分布式系统和数据库的研发之前,跟着老师王选,做了十多年的激光照排,亲身经历了北大方正激光照排系统从无到有,从小到大的过程,也看到了王选老师的创新对媒体出版产业、对亿万大众的信息消费产生了多么巨大的影响。王选老师的一句话让我铭记至今:“高科技产业应实现‘顶天立地’模式。‘顶天’就是不断追求技术上的新突破;‘立地’就是把技术商品化,并大量推广应用。”这让我清楚地知道,如果要做一个好的创新,不仅要技术上牛,更要真正应用到生产和生活的实际场景中去。就像CPU的国产自主研发,我们十几年前就能做出来“狗剩”(Godson),如今更有寒武纪,但都还没有机会得到大规模商用化,这是让人扼腕叹息的事情。

所以当我们2010年前后开始做分布式数据库,也就是设计OceanBase架构的时候,一开始瞄准的目标,就是要把它做成一个通用的关系数据库产品,而不是一个仅仅在公司内部使用的产品。2017年,让我们团队最高兴的是,通过8年研发抗战,我们不仅做到了承担蚂蚁金服“双十一”全部核心业务的重压,还在6家商业银行落地,成为他们互联网金融类新业务系统的数据核心。

站在这样一个有纪念意义的时间点上顾盼今昔,我发现,虽然数据库已是一个看起来不那么性感的研发领域,但当我们看看,在企业级系统里,和数据库分不开的服务器和操作系统的演进后,就会知道,分布式数据库引发的创新变革,尤其是金融服务领域的变革,或许才刚刚开始。

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

当年研究分布式系统的时候,对一篇2005年Google首席工程师Luiz André Barroso发表在美国计算机学会学报上的论文印象颇深,那篇文章就叫做《The Price of Performance》,所以我这篇文章的标题也是向他致敬。在该文里,Luiz的主要观点就是表达了,Google作为当时全球最大规模计算基础架构的技术平台,需要在设计基础架构的时候,更好地平衡性能和价格,而他作为首席工程师,首先必须回答的问题就是:对于业务部门所需要的计算能力,在经济上是否能够承受?他开发出一套思路,能深入理解计算的总体成本,并且不断地寻找合适的硬件/软件设计来优化每个成本单位的性能。Luiz将Google计算基础设施的TCO(总体拥有成本)分解为四个组件:硬件成本、能源消耗、数据中心的建设及运营成本,以及软件成本。在云还没有诞生的年代,最昂贵的TCO组件是软件,Luiz将TPC-C测试中使用的系统价格进行粗略分解后发现,平均到每个CPU,操作系统和数据库引擎的成本约为4000~20000美元,如果再算上其他操作系统组件、应用和管理软件的授权费用,成本还得增加许多。性能第二大的代价是能源消耗,根据Luiz测算,Google自行组装的贴牌PC服务器,TCO的40%来自电能消耗,即使他明明知道有70%以上的CPU时间是被浪费掉的。至于硬件采购成本和IDC的运营成本,相比前两个单项,只占到10%不到的比例,都可以忽略。

所以,当我们一开始想做OceanBase,这个从架构上就和Oracle、DB2完全不一样的“分布式”数据库的时候,首先想实现的也是帮助业务部门降低TCO,尤其是在更加便宜的分布式硬件+操作系统上,用最低的代价,实现最高级别金融级数据库的性能和可用性。

这个想法在当时,被许多同行看成是异想天开,因为这和我们在大学里学过的数据库基本常识违背,分布式系统怎么可能实现CAP的要求呢?而且那个时候,大多数金融机构,包括阿里自己用的都是IOE架构,虽然当时IOE架构的并发交易处理能力已经不能满足“双十一”的需求,但胜在稳健;虽然IOE架构临时扩容收费的都是天文数字,但胜在阿里挣得更多,支付得起。所以我们要干这件事情,先不说成功的概率有多大,而是它重不重要,紧不紧急?

为了回答这些问题,我们不仅和业务部门做了两周的紧急调研,确认了这件事情的重要性,也看到了一些行业的大趋势——从2004年开始,全球每年约450-500亿美元规模的服务器市场,已经从x86+Windows/Linux与RISC&大型机+AIX/HP-UX/Solaris/Mainframe各占一半销售额,快速变换为2010年的x86占据80%以上份额,出货量更是相差两个数量级;而早在2006年,就已经有建设银行这样的国有大银行,已经在尝试“总行用主机+省行用小机”的尝试,而且表示不排斥在关键业务系统里用Linux,前提是得有成熟的、兼容性好的应用。作为互联网公司,我们更不应该落后于传统金融行业的老大哥。

所以,不管是内部要求,还是外部环境,在当时都发生了一些微妙的变化,这也给了我们一些信心,能够做出一个先满足内部业务需求,进而满足金融行业需求的数据库产品。

基于应用场景,挑战不可能

光有信心没用,还得撸起袖子加油干。正如李国杰院士所说:Database之所以难,不只是难在Data上,而是难在后面的Base上。OceanBase能做成金融级数据库,主要是做了五个关键创新。

第一点,我们做到了CAP的最佳平衡。单机数据库要做到既满足事务ACID特性,又可扩展已经非常困难了,而OceanBase则是在做三个库或者五个库的时候,要多台机器同时来做,在具备高可用、高可扩展的同时,追求数据强一致,保证事务ACID,这个是OceanBase系统里面最复杂的部分之一,也是今天其他人很难在这块领域出彩的原因。

第二点,我们重新设计了数据存储模式。数据库有两种性能,一种读,一种写,读可以缓存而写是无法缓存的,即使是固态硬盘,随机写的能力也是受到限制的。所以OceanBase在关系数据库领域首创了把写操作放到内存中,改几个字节就记录几个字节,再把日志放到硬盘上,如果出现类似电脑掉电重启的情况,只需要回放日志做恢复就可以了。因为日志在硬盘上是顺序写入,所以性能不是问题。因为不需要在硬盘上随机写,用能够随机读的廉价硬盘就可以,最终结果就是把性能提高一半以上,同时把成本又降一半。但有人会问,内存那么贵,你用来做数据库是不是太奢侈,还谈什么降低一半成本?的确,受制于内存成本和IDC机架的功耗限制,我们没有把全部写操作都放到内存里,而是采用内存与硬盘都用的折中方案,只把一些最常用的数据和最近的修改数据保存在内存里面,这样既维持了一个适当的成本,又得到一个很好的性能。

原文链接

阳振坤:当我们在谈论金融级分布式数据库的时候,其实是在说性能的代价相关推荐

  1. 巨杉数据库完成数亿元D轮融资,引领金融级分布式数据库发展

    金融级分布式数据库领导者巨杉数据库,于近期完成数亿元人民币D轮融资,本轮融资由中金资本领投,元禾重元与越秀产业基金跟投. 巨杉数据库是国内最早布局分布式数据库产品的公司,自2011年成立起,9年来一直 ...

  2. TDSQL:腾讯金融级分布式数据库解决方案

    TDSQL:腾讯金融级分布式数据库解决方案 本博主是腾讯云的使用者与爱好者,前后分别试用了腾讯云服务器.云开发.微搭低代码开发平台,可以说算是见证腾讯的云上历程 本博文将从基础概念.TDSQL介绍.发 ...

  3. 助力金融业数字化转型,巨杉数据库获评金融级分布式数据库用户首选品牌

    日前,由国家工业信息安全发展研究中心指导,北京赛昇计世资讯科技有限公司主办,赛昇控股(北京)集团有限公司.产业互联网发展联盟和软件融合应用与测试验证工业和信息化部重点实验室等单位支持的"20 ...

  4. 国内首个,京东云金融级分布式数据库StarDB通过这项权威认证

    2021年5月18日,中国信通院分布式事务型数据库产品能力评测结果评审会圆满结束.凭借在复杂金融场景中应对生产环境极端故障突出表现,京东云StarDB恒星数据库以优异的成绩一次性通过分布式事务型数据库 ...

  5. 蚂蚁金服高级研究员阳振坤:为什么我们要选择自研数据库这条艰难之路

    本文原出处为infoQ微信公众号,文章有改动和删节. "如果大家当时能看见原来十年后OceanBase能长成这样,可能十年前OceanBase得到的支持会好很多.但是这种如果是不存在的,很多 ...

  6. 金融级分布式数据库架构设计要点

    行业背景 银行业从最初的手工记账到会计电算化,到金融电子化,再到现在的金融科技,可以看到金融与科技的结合越来越紧密,人工智能.大数据.物联网.区块链等新兴技术改变了金融的交易方式,为金融行业的创新前行 ...

  7. TDSQL是什么:腾讯如何打造一款金融级分布式数据库

    我们先初步了解TDSQL产品,以及它的适用场景. 首先,TDSQL是腾讯推出的一款兼容MySQL的自主可控.高一致性分布式数据库产品.这里我们强调一点,高度兼容MySQL--TDSQL完全兼容MySQ ...

  8. 腾讯金融级分布式数据库TDSQL的前世今生

    TDSQL(Tencent Distributed MySQL,腾讯分布式MySQL)是由腾讯技术工程事业群计费平台部针对金融联机交易场景开发的高一致性数据库集群产品.该产品第一个版本诞生于2012年 ...

  9. 不做工程等于纸上谈兵——对话OceanBase创始人阳振坤

    [CSDN 编者按]谁能想到,一个本科和硕士都在钻研数学的人,会在后来做出世界上第一款原生分布式数据库?在2010年以前,阳振坤自己也想不到会有一天和数据库建立如此密切的关系,更想不到,往后十年是他职 ...

最新文章

  1. PHP executable not found. Install PHP 7 and add it to your PATH or set the php.executablePath settin
  2. C#TreeView控件
  3. sdn体系的三个平面_十张图看懂SDN与NFV的区别与联系?
  4. Yii CDBCriteria常用方法
  5. sql server cvs 导入
  6. java 内存快照怎么看_jvm内存快照dump文件太大,怎么分析
  7. bmp文件头_图像算法原理与实践——图像文件存储
  8. python抓取gb2312/gbk编码网页乱码问题
  9. node开发命令行脚本
  10. 【STL】算法 — partial_sort
  11. 如何识别SQL Server中运行缓慢的查询
  12. 五款可以取代 Slack 的开源工具
  13. css table布局大法,解决你大部分居中、多列等高、左右布局的问题
  14. kmp 学习【字符串-kmp学习】
  15. Mybatis插件之自动生成不使用默认的驼峰式
  16. dorado7.x关闭子页面,刷新父页面
  17. 江城子 . 程序员之歌
  18. 池化层(pooling layer) 感受野(Receptive Field) 神经网络的基本组成
  19. AUTOSAR CanNm Nm Configuration
  20. uni-app 初始化项目

热门文章

  1. 【日语】日语常见寒暄语(一)
  2. 如何使用定时器捕获一路PWM波信号的频率和占空比
  3. SAS learning_4: 统计报表制作(1)——PROC TABULATE
  4. 股指期权最新消息 股指期权怎么交易?
  5. JAVA 笔记 09 代理
  6. Matlab材料科学基础——作出特定晶面指数在简单体心立方中所表示的面
  7. AMBA:AXI/AHB/APB学习笔记
  8. java项目管理系统_基于SSM框架的JAVA科研项目管理系统
  9. 个人家庭宽带搭建多域名web网站服务器配置
  10. 超有效谷歌开发客户方法