前段时间,我和TiDB的总设计师黄东旭连了个麦,聊了聊数据库的发展趋势,这中间,收获颇多。
下面是的一个总结,希望能给你一些启发。
1、有人问,MySQL和TiDB的区别是什么。简单来说,这不是一个时代的东西,数据库的发展,大概有三个阶段:
-
第一个阶段的的代表是以闭源Oracle、开源MySQL为代表的关系型数据库;
-
第二个阶段是以HBase、MongoDB为代表的NoSQL数据库;
-
第三个阶段是以Google 的F1和Spanner、阿里的OceanBase 和 PingCAP 的 TiDB为代表的NewSQL。
2、NoSQL 只是互联网公司在面对大并发量的新业务时的过度状态。2008年左右吧,互联网公司在数据存储方面有三个挑战:
-
第一,数据量比之前多了很多倍;
-
第二,并发量上来了;
-
第三,非结构化数据开始多起来了。
同时,大家又发现MySQL一些影响性能的特性,他们可能用不上,所以这就催生了NoSQL数据库的诞生。3、但你要知道,NoSQL 基本都不支持跨行事务。比如你要做一个转账的功能,实现难度就很大。这也是为什么NoSQL 并没有在传统公司普及的关键原因之一。但为啥互联网公司能普及呢?因为他们的工程师团队比较强,NoSQL丢掉的特性用某些工具也能搞定。4、倒回去看,在支持事务,以及SQL的前提下,传统关系型数据库的扩展方案基本只有业务层分库分表和中间件等过渡方案。后来以 Google 为代表的互联网公司开始探索将关系型数据库和分布式存储技术结合,发展出一种新型的分布式关系型数据库,代表作品就是 Google F1 和 Google Spanner。也就是NewSQL。5、从性能上说,PostgreSQL肯定比MySQL更好。但是为什么MySQL更火呢?前MySQL的产品经理说,原因之一就是因为MySQL的用户体验更好,比如,MySQL的安装步骤,就是比PostgreSQL少一步。所以,东旭说,很多人觉得我性能比你好,比你快1s,但是你用户体验不好,这样的优势就会被抵消。得用做互联网产品的思维来做开源产品。6、怎么理解CAP定理?CAP中,C代表一致性,A代表可用性,P代表分区容忍,分区容忍翻译的不好,你就直接理解为数据分片就OK了。闭上眼睛,你想想,永远的A不可能实现,A就像永动机一样,理论存在,所以A追求的是HA(高可用)。而我们是可以追求100%的C和P的。CAP定理的发明人Eric Brewe曾经承认CAP是一个容易误导人的而且过于简化的模型。在2000年,CAP的意义在于让大家开始讨论关于分布式系统的取舍。但CAP并不是一个精确的理论,他仅仅用于指方向。7、基于云的企业数据平台Snowflake很值得研究,东旭认为Snowflake才是真正的云原生技术,甚至,他一度觉得,不能被私有部署的技术才是真正的云原生技术(仅仅代表个人观点)。如果你对云技术的未来感兴趣,建议可以研究下硅谷企服新贵Snowflake。8、云的出现,将 IaaS 的基础能力变成了软件可复用的单元,我可以在云上按需租用算力和服务。云原生的数据库就是基于这样的场景设计出来的,所以东旭说“不能被私有化部署”。9、如果说Snowflake是趋势的话,那他基本代表了几个关键词。第一,弹性计算,基于云的能力设计你的软件。第二,存储计算分离。第三,基于实际消耗量的定价方式。10、推荐三本书,《UNIX编程艺术》《克莱因壶》《随机漫步的傻瓜》。
-
第一本是技术书,东旭说现在他做TiDB的时候,更能深切感觉到UNIX的大神们的编程智慧;
-
第二本是本科幻小说,单纯就是很有意思;
-
第三本是帮你辩证性思考,多视角看问题;
如果你对数据库的趋势感兴趣,8月18日(周三)晚上8点,我会连麦字节跳动数据库技术负责人张雷,和他聊聊这些年数据库的技术趋势。点击下方的「预约」按钮,就可以直接预约啦,直播是在微信的视频号。“丘吉尔说,你能看到多远的过去,就能看到多远的未来。”我们会聊到数据库的发展历史,以让你理解数据库这一路的迭代。