【CDAS 2016】黄东旭:分布式数据库模式与反模式

网友投稿 506 2016-09-04

内容来源:http://mp.weixin.qq.com/s?__biz=MzI3NDIxNTQyOQ==&mid=2247483994&idx=1&sn=f4bd1f805a536f8dd31e0321204bd1f5&chksm=eb162530dc61ac26e00cd443388140176db1b32b80fad486f74177def426d296178638538e0d#rd


今日,PingCAP 联合创始人兼 CTO 黄东旭,受邀参加「2016中国数据分析师行业峰会」,作为“数据库与技术实战”分论坛主持人与大家就数据库的最新进展进行现场交流,并做了《分布式数据库与反模式》的主题演讲。


近年来随着移动互联网的兴起,数据量和并发量不断的膨胀,存储层的单点常常会成为系统的瓶颈,面对这个现状很多业务已经在核心的存储系统使用分布式数据库。

在本次分享中,黄东旭从常见的分布式数据库架构方案出发,探索各个模型的优劣,总结了一些常见的模式及各自的问题,展望目前业界的一些前沿工作,以期帮助架构师做出更好的存储层设计。


日前,黄东旭还接受了大会主办方——CDA数据分析师的专访,详细分析了 TiDB 与其他数据库模型的本质区别,并进一步解释了 PingCAP 的开源精神。以下为专访内容实录。

Q
&
A

CDA:当时为什么要创办 PingCAP?

黄东旭:我在豌豆荚认识了刘奇和崔秋。当时在豌豆荚做另外一个开源软件叫 Codis,也是分布式缓存的开源数据库。我们一直觉得的关系型数据库这块没有一个好的解决方案。

一直以来,大家正在用的数据库没有弹性扩展功能,在海量数据的体量下还能保持像 SQL ACID Transaction 事务模型这样的比较理想的数据库。当时也很苦恼,整个大数据的软件栈就缺这个东西。现在整个开源社区也好,还是商业的方案,都没有太好的。

后来我们看到 Google 的两篇论文 Spanner /F1,这两篇论文描述了 Google 内部使用的一个海量关系型数据库。可以说,Google 算是第一个解决了关系型数据库、弹性扩展加上全球分布的问题,并在生产中大规模使用,开创了整个 NewSQL 领域。我们看到这个论文很激动,终于有人做出了这个模型,我们觉得自己也能搞定。

这个东西门槛非常高,很困难,但如果能做出来,能颠覆现有的关系型数据库市场。但我们也不畏惧这样的复杂问题,决定去专注做一个面向未来的新型数据库,而且是完全开放源代码,所有东西都开放。

我们比较重视分享,我们的核心技术,包括 Milestone、Roadmap、Document 都是开放在 Github 上。现在公司涉及了两个项目,TiDB 和 TiKV 两个加起来在 Github 上共有 5000 多个Star,应该是这个领域里世界最顶级的项目了。

我们的项目在国外比在国内还更有名一些,它是从最底层的设计上就颠覆了原来所有的模型,代表了很前沿的东西。我们希望把我们的理念和源代码以及设计都让大家看见,什么才是代表未来的方向,这也是我们为什么要选择开源。

现在国内大部分厂商还处在听、看、用这样的阶段,还没有办法根据自己的需求和想法去引领一个社区。很多数据分析师习惯去找现成的产品,很少自己或者 drive 一拨人去立一个项目,写出一个东西在社区内推广。但这个趋势在慢慢变好,在北上广这些 IT 公司技术能力越来越强,对于基础软件的想法和掌控能力越来越好,硅谷和中国的差距在慢慢缩小,中国也开始产生一些世界顶级的开源商。

最近几年中国出来的顶级项目背后基本上都有一个我们这样真正以开源项目为核心产品的团队。这种公司在美国很多,比如 Docker、MAsource、OpenStack 等等,在美国已经不是稀奇事。


CDA:与其他数据库模型相比,PingCAP 要做的东西有什么本质上的区别?

黄东旭:上世纪 70 年代,IBM 发明了关系型数据库,大家都在用。但是随着现在移动互联网的发展,接入设备越来越多,数据量越来越大,业务量越来越复杂。单机型的数据库的问题在于,同类业务数据的存储量就是一台机器,相当于一个杯子不停灌水,迟早会溢出来,数据就存不下了。这个问题是最近 10 年才出现。

后来就有一些比较笨的办法——多弄几个水杯。但业务其实是一种业务,这就需要有很复杂的逻辑去控制请求一部分数据存这里,一部分数据存那里,错了就不行。再去扩展的时候,还需要把一部分数据从原来的机器挪到新的机器,这个过程非常复杂,劳民伤财。一般大公司都会有一个专门 DBA 团队专门做这个,特别像是在双十一 、6·18 这种大促的时候,数据库的压力非常大,可能要提前两三个月做数据库容量的扩展。

理想的情况是什么呢?可能还是一个杯子,这个大杯子由许多小杯子组成,我不停地往里灌水,但杯子自己会变大。相当于一个小孩子,你喂他吃东西,他自己会长大,这叫弹性扩展

关系型数据库的弹性扩展是很难做的,原始的关系模型在 70 年代就发表了,他可能压根就没想到数据库会跑到这么多台机器上。直到 2010 年左右,Google 终于搞出了一个新的模型,在内部推行。Google 可以说世界上数据量最大的公司,一直在与这个问题做斗争。Google 在全球有这么多业务,但它只有一个数据库叫 Spanner,上千条业务线只用访问这一个数据库。全球五大洲都有他的数据中心,这些数据分布在全球各个数据中心,大概有上 10 万台的物理节点。

这个数据库的设计是第一个将关系型数据库的理论与弹性扩展的逻辑结合在一起的模型,它在 2012 年底到 2013 年初发布的两篇论文。但是 Google 没有办法真正开源,因为太庞大了,而且 Google 做的东西都是叠罗汉式的开发,如果要开放自己的数据库,就必须把基础设施都开放出来。

但 Google 作为一个希望能够引领行业的公司,还是决定把这个模型 share 出来。这种事情Google 也不是第一次干,比如 Hadoop 其实就是 Google 在 2003-2006 年间 3 篇论文的实现。我们认为 2012、2013 年的这两篇论文跟当年的 Hadoop 同样重要,甚至意义更大。

这个系统有什么好处呢?现在大多数已有的方案都是在小水杯上插管,水满了之后通过管子流向其它的杯子,或者是在业务层做划分,A 业务访问这儿,B 业务访问那儿,但都没有真正直面问题解决问题。现在很多人把数据库和数据仓库的概念割裂开来,也就是说大数据平台是大数据平台,业务数据库是业务数据库,它们之间需要离线倒腾数据,然后再做分析,那为什么不能变成一个巨大的 Database 呢?

我们与传统的方案最大的区别就在于,看上去与单机数据库一样,但它可以弹性扩展,容量不够了,可以直接往集群里启动一台新的机器更进去。我们也不对硬件做任何假设,不管是什么机器,只管往集群里丢。

还有一个比较核心的功能是,刚刚提到 Google 的数据库是遍布在全球各个数据中心的,这个好处是什么呢?你从来没听过 Google 因为某个机房光纤被挖断就停止工作了,异地多活,砍掉一个,其他的也不会受影响,仍然正常运转。而且,过一段时间它会发现数据中心的小伙伴不见了,会再去跟其他的数据中心或者部署了这个数据节点的机器修复数据,重新长出来。

目前我们应该是唯一一个能够做到异地多活的数据库。它的内部就像是细胞,它会做有丝分裂,一个分裂成两个,两个分裂成四个,细胞是这个系统的最小单位,它会均匀地分布在各个机器上。你可以感觉到这个系统是活着的,我们作为数据库的开发者,并不清楚数据在数据库中怎样流动、分布、分裂,这由这个数据库自己决定,好像有一个大脑指挥。


CDA开源和商业化之间矛盾吗?怎么解决这个问题?

黄东旭:开源不等于不做商业化,开源不分国界,技术也不分国界,我们的理想并不是只做一个中国的开源项目。其实,如果不知道我们公司在北京,多数人不会认为这是个中国的项目,社区内参与的人来自多个国家各种行业,所以这更像一个国际化的项目,我们只想做全球最顶尖的技术。

至于商业路径,我们的想法是不能说只做中国市场,而是反过来,要世界上打出名气,确实能让大家知道这个东西的质量非常高,代表未来,大家都在 follow 你,再回过头来进入中国,这个路径可能会更顺畅一些。毕竟我们现在 IT 行业的水平跟硅谷还是有点距离,大家还处于学习的阶段。

另一方面,开源不等于免费,我们的数据库内核是开源的,但商业公司并不会因为开源而不付费,那他可能就得不到 support。对开源项目来说,用的人越多,就越能够成为事实标准,比如说你有 100 个用户,其中三五个大客户愿意为你付费,就很牛了。

我们也设计了一些商业选件,比如监控工具、管理工具、安全插件等。数据库的问题是很多企业的痛点,尤其是在传统行业中,他没有互联网公司那么强大的架构能力和扩展能力。所以他们一直在跟互联网取经,但目前很多方案都非常复杂,很难一下子吸收,所以我们是直接把最先进的东西打包在一起,与原来的操作没有多大区别,但可以直接获得最先进的大数据扩展能力

所以商业的问题,首先要真正有两把刷子,第二真正解决了用户的痛点,这就够了。这是最朴素也最有效的商业模式。


CDA您一直强调开源精神,那么什么才是真正的开源精神?

黄东旭:Open Source 最核心的精神就是分享和沟通。沟通很重要。现在很多国内的开源项目只是开放源代码而已,其实源代码只是整个 Open Source 精神内涵中很小的一部分。开源不仅仅是码代码,而是大家自发地聚集在一起做一件有意义有意思的事情,这个过程中各种各样的问题都是需要沟通的,但现在国内很少有人在认真地做这件事情。在我看来社区比源代码更重要。

第二,我们是希望能够在国内树立一个做开源项目的标杆,让大家知道世界级的开源项目该怎么做。现在国内已经有很多人和大公司已经在扭转观念,不能再闭门造车,特别是基础软件,闭门造车是很困难的,你需要大量的用户做测试、反馈,所以开源是一种更好的软件分发的方式。不能藏着掖着,心态开放,得有自信去引领整个社区,大家齐心协力把这个东西做好。开源社区里有一条不成文的规则就是,当一个问题得到完美解决的时候,不会再有第二个人尝试,所以先发者是有优势的。所以我并不太担心这个东西开源出去之后就被人拿走了,我们最宝贵的资源不是那些代码,而是这些社区的管理者以及我们之间的沟通配合。


CDA你想给想要进入这个领域的人什么建议?

黄东旭:我们这个领域算是大数据中的一个细分,属于基础设施,分布式系统的开发更偏向于编程相关的工程能力。其实我们公司很多人刚加入的时候,相关的经验也不多,只不过他们都非常热爱这项工作。

在我看来编程能力反而不是什么硬的门槛,只要智商正常,大家都能搞。兴趣和激情是更重要的东西,不害怕接受挑战。很多人还没开始做,就有一种畏惧心理。你要对这项工作有兴趣和决心。我和我们的 CEO 很热爱这项工作,也长期关注这个领域,可以带着大家一起做。

在这个行业里面,工业界是走在学术界前面很多的,如果你是一个在校大学生,眼界要放开阔一点,开源社区中做出来的东西或者像 Google 这类大公司发布的论文远比你在实验室里做的东西先进的多。如果有志于这个行业,可以尽早地让自己在大公司里实现,接触当下真正在用的思想和理念。对于从业者来说,如果有兴趣,不要畏惧困难,真正参与到社区里来





分布式 NewSQL 数据库
www.pingcap.com
微信ID:pingcap
长按左侧二维码关注



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:PingCAP 创始人刘奇:开源分布式数据库如何搞定 OLTP
下一篇:【CDAS 演讲实录】黄东旭:分布式数据库模式与反模式
相关文章