日前,我司 CEO 刘奇接受了“爱分析 ifenxi”的采访,分析了目前数据库市场的发展趋势、TiDB 的特性及应用场景,并透露了公司将来发展布局。如下为爱分析报道及访谈实录,信息量很大,enjoy :)前端
调研 | 李喆 王琦程序员
撰写 | 李喆算法
即便将范围从大数据缩小到数据库这个细分领域,PingCAP 依然是家很是特殊的公司,其产品 TiDB 是市面上为数很少面向 HTAP 场景的数据库。数据库
传统意义上,数据库分红事务性数据库(TP)和分析性数据库(AP)。编程
近几年兴起的 NoSQL 数据库、如 MongoDB、基于 Hadoop 的 Hbase,更多都是分析性数据库,经过分布式架构解决大规模的数据查询、分析问题。缓存
然而,承载生产系统的事务性数据库却始终被传统数据库厂商所把持,Oracle、IBM 等占据传统大型企业市场,中小企业及互联网公司则大多数采用开源技术 MySQL,鲜有新技术、新公司可以进入这个市场。安全
2012 年,Google 的 Spanner 横空出世,这是一款基于分布式架构的事务性数据库。受到 Google 的启发,国外出现了 CockroachDB(蟑螂数据库)等一系列解决 TP 问题的新兴数据库厂商,但国内市场几乎仍是空白,找不到研发这类数据库的创业公司。架构
2015 年,PingCAP 成立,填补了国内的空白。并发
与市面上其余数据库厂商不一样的是,PingCAP 创始团队大多数来自大型互联网公司,如豌豆荚、京东等,几乎没有来自传统IT或者数据库厂商。框架
互联网的背景,创始团队每名成员都经历过数据指数级增加的时期,具有处理海量数据的经验,作数据库产品会优先考虑扩展性。
同时,由于互联网公司大多会采起 MySQL 技术,所以 TiDB 最早兼容的是 MySQL 协议,这使得 PingCAP 更容易获取客户。
互联网还有个特色是开源为先,PingCAP 从第一天就确立了用开源方式作数据库的打法。但与其余团队不一样的是,PingCAP 的创始人刘奇等人,曾经是分布式缓存项目 Codis 的做者,具有开源社区运营的能力,懂得如何借助社区力量发展产品。
开源社区一方面会扩大 PingCAP 产品的覆盖面,带来潜在的客户;另外一方面,经过开源社区的运营,PingCAP 将更多精力放在核心产品 TiDB 的研发,其余功能能够一部分由开源社区用户来实现。
此外,经过用户反馈,PingCAP 能够了解用户的潜在需求,做为 TiDB 研发的一个参考。
最初,TiDB 只是解决 TP 问题,但在实际应用过程当中,直接让客户用新数据库替代原先的 MySQL 数据库难度很大,尤为当数据库厂商是一家名不见经传的初创公司。
多数企业客户的作法是前端仍然保留传统 MySQL 数据库,将 TiDB 数据库做为背后的数据集市,与前端数据库相连,但这个数据集市的实时性要远好于 Hadoop 架构的数据集市,能够运行在实际生产系统。
当按照这种方式运行一段时间,客户承认 PingCAP 的产品后,会逐步替换掉 MySQL 数据库,将 TiDB 做为前端数据库。
当客户将 TiDB 数据库做为数据集市来使用时,由于前端数据库要从这个数据集市中查询数据,所以,对 TiDB 数据库的查询功能提出更高要求。TiDB 调整了本身的数据库执行器,进行 AP 功能的拓展。
这样一来,TiDB 同时支持 TP 和 AP 功能,成为分布式 HTAP(Hybrid Transactional/Analytical Processing)数据库产品。
TP 场景下,TiDB 具有强一致性的特色,能够承载金融等对数据一致性敏感度很高的行业。与传统数据库相比,TiDB 可扩展性是最大优点。TiDB 能够经过不断增长机器来提高性能。
AP 场景下,与 Hbase 等相比,PingCAP 的实时性更好,处理数据的速度更快。
与传统企业相比,互联网公司更加容易尝试新技术,互联网背景出身的团队也更加可以清楚互联网公司的业务特色。
同时,互联网公司的发展速度大多远超传统企业,数据量增加速度极快,对改善底层技术架构、提高数据库性能的需求更增强烈,特别是在游戏行业、互联网金融行业。
这些因素促使 PingCAP 早期客户大多数来自互联网企业,同程旅游、360 金融、摩拜单车等都陆续成为 PingCAP 的客户。
截至 2017 年末,PingCAP 总体团队规模达到 100 人左右,其中超过 80% 是研发,只有一名全职销售。
一名销售的获客能力很是有限,PingCAP 主要仍是经过开源社区的方式获客,销售人员只负责跟进有意向的企业。2017 年,应用在实际生产环境的用户达到 200 家,最终产生十几家付费客户。
现阶段,PingCAP 重点仍然放在产品打磨和社区运营上,还没有进入到产品大范围推广阶段,所以,2018 年 PingCAP 会考虑进入金融、医疗、物流等传统行业,但不会大范围增长销售团队,仍然会采起较为谨慎的市场策略。
近期,爱分析对 PingCAP 创始人刘奇进行访谈,他对 PingCAP 的业务模式、将来战略,以及数据库行业将来发展趋势等方面,进行阐述,现将部分访谈内容分享。
爱分析:您创立 PingCAP 的初衷是什么?
刘奇:我在京东工做的时候就已经有这个想法,当时没有一个能够很好实现扩展的数据库,最广泛的作法是分库分表。但这种方式存在缺点,第一它的弹性扩展能力比较差,第二是易用性比较差,第三是编程的心智负担比较大,第四是表达力比较弱。
当时我在作一个项目,也须要分布式数据库,可是市面上没有使人满意的产品。
因此,最开始的定位是想解决本身的问题,中间咱们还开发了一个分布式缓存,以后咱们开始着手解决数据库扩展性的问题,就出来创业了。
爱分析:数据库做为底层技术,客户选择供应商会很是谨慎,最初是如何获取客户的?
刘奇:2016 年,咱们拿到了云启资本的 A 轮融资以后,开始考虑怎么去获取第一批用户。的确,用户将一个新的数据库应用到线上是存在风险的,谁愿意拿本身线上的业务去冒险尝试一个全新的数据库?
盖娅互娱是咱们第一个用户。那个时候,他们的 MySQL 数据库出现了问题,线上查询速度特别慢,整个系统已经卡顿到没法使用,不尝试使用新的技术已经很难开展业务。咱们当时的产品还在测试阶段,他们就开始推进这个数据库上线。
由于采用新的数据库到线上确实是存在风险的,所以不少用户采用另外一个方式来作。线上有一堆 MySQL 在运行,他们在后面搭建一个大的数据集群,把全部的数据所有汇到这里,看起来有点像数仓。由于咱们自己是兼容协议的,咱们能够把数据复制过来,他们来进行实时查询。
在游戏行业或者是实时性要求比较高的风控管理,他们就急须要这种技术来解决问题。
咱们目前披露了不少金融案例,有至关一部分都是用在实时风控这个场景。好处是不直接针对线上业务,风险相比线上 MySQL 要小,而又恰好解决了他们的痛点。
这个阶段以后,客户若是以为技术足够稳定,他会把线上撤下来,再把咱们的产品推到最前面去,来支撑全部业务。
当客户把咱们的数据库看成数仓的时候,其实查询的复杂程度很高,咱们的数据库能帮助客户作一些之前不敢作的事情,一个 SQL 查询语句甚至好几页纸那么长。
那么问题来了,咱们的设计自己并非为了 AP 业务,而查询这个功能是侧重 AP 的,所以咱们在优化执行器的时候,也作了相应的调整,作了 AP 功能的拓展。
这样一来,咱们的产品能同时支持线上 TP 和 AP 业务,咱们的产品就变成 HTAP。
当把这个产品作好以后,咱们发现产品的特色十分明显,在这个领域没有一个强有力的竞争对手,并且这个产品是知足用户需求的。不少时候用户的需求并不能简单的分为 TP 仍是 AP,其实是没有明肯定义的,甚至客户并不关心这些,只但愿可以解决自身的问题。
爱分析:从数据写入和查询上看,存在行与列的差异,TiDB 如何在一个表里实现的?
刘奇:行列只是一个存储的形式,从技术角度来说仍是能够作行列变化的。
好比说把冷数据慢慢的后台转成列存,而后最新写入的数据仍然使用行存。前台仍是一个标准的行存,根据数据的冷热,转换成行存仍是列存。
其实,最新的论文已经提出了新的观点,数据的存储并不纯粹的是行存或者列存,而是根据访问频率,常常访问的数据使用行存,并不须要扫整个表,实现的方式仍是不少样的。
爱分析:谷歌在作 Spanner 的时候强调其扩展性,在算力上要求是否是比较低?
刘奇:这是之前谷歌的一个理念,但这样的话,若是去作一些相对比较复杂的运算的时候,数据库的反应时间会比较长,这是存储格式决定的。
不过,谷歌 2017 年的论文当中,已经把存储格式改为了偏混存的形式。咱们跟谷歌的迭代路线是同样的,并且咱们的存储格式改的更早,由于咱们更早的遇到了用户的实际需求。
爱分析:算法和扩展性是否存在必定的矛盾,复杂的算法会不会影响其扩展性能?
刘奇:算法和扩展性没有什么关系,算法主要影响执行的效率。
好比,若是是列存的话,执行效率更高,好比说银行对全部帐户的金额进行求和,若是是列存的话会很简单,可是行存的话要扫描每一行中的金额数据,执行效率很低,但在下层的计算层面并不会有太大的差异。
爱分析:在推到前台的时候,数据库要作哪方面的调整?
刘奇:要根据整个系统的负载,来决定使用多少并发度,会作一些优化。
假设有 100 台机器,有这样一个数据集群,均匀地推到每一台机器上计算,并发度很高的状况下,每台机器人可能都很忙,这个时候再给它增长任务是没有用的,机器会崩溃的。
但若是有一个“聪明”的调度器,对指令进行控制,在保持高并发的状态下,调度不一样的机器进行不一样运算,这样机器不至于很忙,不过带来的问题是,会带来比较长的延迟。
固然,一样的数据可能不必定要运用 CPU 来运算,能够用 GPU 或者 FPGA,这对调度器的要求就更高了,按照发展趋势来看,调度器的能力是衡量一个数据库性能的重要指标。
爱分析:TiDB 是如何实现实时性的?
刘奇:由于他自己就是一个分布式的结构,性能是能够继续扩展的,前面有多少数据的输入都无所谓。若是如今以为算的不够快,经过加机器就能够实现计算。
速度的快慢还跟计算有关系,有的计算是推不到全部的节点上去的。好比,我要把全部的数据拿回来作排序,这就没有办法让全部节点来作。
这种状况,优化器的做用比较重要,它会识别哪些计算须要推到下面作并行运算,哪些只要作出决定就能够。
爱分析:MySQL 构架,数据迁移到 TiDB 可否作到无感迁移?
刘奇:咱们从一开始设计的时候就考虑到了这个问题,针对 MySQL 能够作到无感迁移,若是是 Oracle 或者 DB2 的其它协议的话,可能涉及到改代码的问题。
爱分析:面向其它协议,迁移的周期有多长?
刘奇:这个还要考虑业务的复杂度,好比,原来的业务有 10 万条 SQL,只要都要验证一遍,若是自己业务比较复杂,那就会比较快。MySQL 协议这边,咱们很快就能够作 POC。
爱分析:下一步有没有考虑去支持 Oracle 或 DB2 的快速迁移?
刘奇:咱们没有这方面的打算,由于新的业务已经不用这些技术了。若是考虑这些的话,目的就是切入老项目。在切入老项目时兼容性存在一个问题,用户须要知道新技术的兼容性究竟是多少?我能不能放心的使用新技术替换?
兼容性不只是功能的兼容,Bug 也要兼容,真正作到 100% 兼容是很难的,企业原来的程序员可能也离职了,若是去替换老的业务,工做量、风险都会很大。
爱分析:产品主要针对哪些行业的客户?
刘奇:咱们在商业化的过程当中,最重要的是把产品作出来,而后根据客户的需求去完善它的功能。
另外,咱们的产品是开源的。开源的好处是当用户在使用过程当中会及时反馈他们的使用体验和遇到的问题,在这个过程当中会发现咱们的潜在用户是谁。
咱们的第一个用户是游戏公司,这实际上是超出了咱们的预计的,咱们认为多是互联网优先,由于互联网对新技术比较激进。
游戏行业也有其特色,游戏公司最赚钱的确定是爆款游戏的运营,一天的流水可能就有几千万。他们但愿本身的基础设施是足够稳定、强大的,一旦遇到瓶颈再去停机改造,那形成的损失就会很大,所以,他们也但愿经过新的技术来解决问题。
再一个就是互联网以及传统行业,互联网企业在使用咱们的新产品的时候,表现得仍是很保守的 ,由于前面已经有那么多的 MySQL 在使用,忽然换新的技术他们会以为风险很高。
不过,像互联网金融这类企业对实时性要求仍是很高的,要经过实时的信息进行风控管理,之前的方案是没法知足的,因此会选择使用咱们的产品。
爱分析:TiDB 的应用场景有哪些?
刘奇:咱们的数据库通用性比较强,通常是面向新的业务需求,咱们自身并无将数据库设计成面向某一行业的产品。
说到咱们产品的优点,客户的数据量必须达到亿级别以上,若是数据量比较小,就没有必要上分布式数据库;另外,就是业务的复杂性要比较高,这样咱们的优点更加明显。
爱分析:下一步会重点侧重哪几个行业?
刘奇:从营收的角度来说,金融应该会是咱们重点布局的一个行业,像物流、医疗等其余领域数据增速也比较快。
爱分析:2017 年 PingCAP 的用户推广进展?
刘奇:咱们在 2017 年运行在生产环境的用户达到 200 个,产品客单价比较高,付费用户要少一些。
爱分析:TiDB 是一个开源技术,在提供企业级产品时会作哪些强化?
刘奇:虽然咱们提供一个开源技术,但仍是有部分是闭源的,好比监控运维组件,备份工具,安全性工具等。
对于企业应用来讲,它必须具有很漂亮的用户界面、很方面的操做工具,这是咱们企业版提供的方式。
还有一部分,咱们叫作 Database & Service,咱们提供的不只是一个数据库,而是一个数据库平台,企业用户能够申请 TiDB 数据集群。若是没有这个东西,可能就须要管理员手动处理,使用体验差异是很大的。
爱分析:TiDB 是如何收费的?
刘奇:咱们如今有两方面考虑:一方面能够利用云部署,咱们能够看到腾讯云的数据库入口,这个商业模式比较简单,与云上的其它产品同样,按照租赁的方式进行收费。
另外一方面,能够买咱们的 subscription,也能够买咱们的 license,按照节点数来计算。
爱分析:公司的团队规模?
刘奇:如今公司大概 100 我的,研发占比比较高,有 82 个。销售人员只有 1 个,销售比较少是由于用户都是本身找过来的,咱们在这方面没有太大的投入。
咱们对研发的要求仍是很高的,包括研发人员对外面的支持、响应的速度等。虽然看上去不会像 Oracle 那么夸张,但有不少外部公司在给咱们作贡献。
好比,调度器方面的代码不少是摩拜贡献的,不少场景下的优化是今日头条贡献的,包括韩国三星研究院等,还有不少人在帮咱们作测试,这也体现了开源技术的一个好处。
爱分析:研发人员会承担一部分售前的工做吗?
刘奇:在 17 年的时候还存在一些研发人员作售前工做的状况,但 18 年咱们会作出一些调整,这也是咱们一个很重要的任务。
人员结构的建设要造成一个完整的体系,售前、实施、研发各司其职,根据不一样阶段的问题安排不一样的人去解决。
爱分析:销售人员比较少的状况下,是否是对社区的运营提出更高的要求?
刘奇:我认为研发人员比较多,跟社区的交流就会比较快。社区中最主要的用户是开发者,与开发者的交流确定是研发人员更加顺畅,销售人员无法替代这个角色。好比,用户提出有部分代码存在问题,研发的响应速度会很快。
像今日头条、摩拜、同程这些规模比较大的用户,都是由于存在痛点主动联系到咱们,不须要销售去作额外的工做。
固然,社区中还存在许多规模比较小的用户,小的用户虽然没有那么大的付费能力,但对社区来讲也是有直接做用的。
他们会用本身的场景进行测试,发现不少咱们历来没有碰见过的问题,他们所提供的这些信息对咱们来讲也是十分重要的,所以咱们会花费比较大的力气来运营社区。
爱分析:PingCAP 的团队背景以互联网居多?
刘奇:对,互联网出身的多一些,都是规模比较大的互联网公司,都体会过数据量大了以后带来的痛苦。
另外,还有来自传统行业的,售前有来自金融行业的,他对金融行业的使用场景更加清楚一些。
爱分析:切入传统行业的话,是否是对人员结构的要求有变化?
刘奇:目前咱们还不是这么想的,咱们但愿经过产品就可以直接拿下客户,可以体现咱们产品的优点。若是是用谁的数据库都同样的客户,咱们是不会去争取的,这也不是咱们的强项。
爱分析:产品的研发和社区的维护,精力如何平衡?
刘奇:咱们确定会先作好一个基础版,才会在社区中推广,当遇到 Bug 的时候必定要去修复,否则会影响到不少人的使用,二者共同推动,并不冲突。
内部研发方面,咱们会快速的开发不少新的功能,这些不会立刻就应用到稳定版本,而是先在社区发布一个 Beta 版本,经过用户测试发现 Bug,咱们来进行修复,在不断的沟通以后,咱们才会发布稳定版。
在这个过程中,咱们须要经过社区让用户不断的进行测试来跟咱们反馈。由于产品行不行并非咱们本身说了算的,而是用户来判断的。
爱分析:CAP 原理中的一致性和可用性存在必定的矛盾,怎么进行优化?
刘奇:咱们在将来会提供一个选项,用户能够根据本身的需求本身选择,高一致性或者高可用性。好比银行的数据就要求高一致性,而互联网应用就更侧重高可用性,咱们会都提供给用户,让用户来选。
爱分析:NewSQL 技术与以前的技术有什么不一样?
刘奇:历史上最开始应用的是 SQL,后来为何会出现 NoSQL,是由于 SQL 不能扩展,虽然 NoSQL 具有了扩展的能力,但表达力比较差,可能还不支持事务处理,不具有 SQL 的传统优点。
NewSQL 就至关于同时具有了两个优点,既能很好的扩展,又能具有 SQL 的事务处理能力和表达力。
爱分析:下一步 TP 和 AP 是有融合的趋势吗?
刘奇:咱们认为是这样的,用户是不关心是 TP 仍是 AP 的,解决问题就是硬道理,也无论是线上仍是线下,能实时实现我确定不肯意等一天。
TP 和 AP 分开这是历史缘由形成的,在数据库刚诞生的时候并无去区分。如今技术能作获得,确定仍是但愿融合在一块。数据分析比较复杂的状况可能还会存在单独的 AP,但咱们的产品还在快速的迭代,最后仍是要看谁的性能更胜一筹。
爱分析:分布式数据库平台领域未来会不会产生另外一个 Oracle?
刘奇:由于历史缘由,短期内 Oracle 的地位是不可替代的,但新的数据库构架兴起的也很快,如今 Oracle 遇到了史无前例的挑战,我认为在将来两年,将会有 20% 的传统数据库被新的数据库取代。
看如今咱们的用户增速,这个趋势仍是至关明显的。
爱分析:将来市场的格局会发生哪些变化?
刘奇:我以为市场会变得更加多样化。
首先,如今的需求很是碎片化,传统数据库不能很好的表达,例如对 Streaming 要求愈来愈高。
关系型数据库的优点是通用性比较强,也比较均衡。但有些场景用如今的数据库框架是很难适应的,确定不会比专门的设计的数据库用起来顺畅,如图数据库等。
从发展趋势来看,当 NoSQL 出来的时候,你们会考虑它能替代什么样的场景,后来发现 NoSQL 仍是存在不少约束的。NewSQL 的出现确实会改变市场格局,应该之后会有两三家比较大致量的公司吃掉大部分市场,但小公司依然存在。
爱分析:开源技术的发展会不会影响到数据库公司的业务?
刘奇:其实开源技术已经存在很长时间了,像 MySQL 已经有二十几年的历史,但企业级应用毕竟不是那么简单,还存在不少问题须要团队去解决。
将来不会有彻底免费的数据库,就算是开源的也是要收费的。
爱分析:互联网公司通常会本身开发基础设施,会不会对 PingCAP 形成影响?
刘奇:这个事情要分国内和国外来看,国内的公司喜欢建设私有云,国外差异就比较大,不少国外公司都把本身的私有云给拆掉了,缘由也很简单,本身部署私有云的效率并不如直接使用成熟的公有云。
如今不少互联网公司不想再像过去那样被 Oracle 这样的公司 Lock in,我既要用你的数据库,又必须具有必定的掌控力。由于互联网公司成长是很快的,需求的变化也更加明显,他们但愿对数据库具备必定的理解力和掌控力,以方便互联网企业修改数据代码,知足自身定制化的需求。
爱分析:云厂商最后会不会成为数据库企业的竞争对手?
刘奇:数据库跟云的关系,有点像 APP 和 APP Store 的关系。云厂商可能也会作数据库,但更多的应该是一种合做关系。