StackOverflow《技术调查》中,PostgreSQL超越MySQL成为了最受欢迎的数据库。专业的开发者更倾向于使用PostgreSQL(有50%的人选择使用),而那些正在学习编程的人则更喜欢使用MySQL(有54%的人选择使用)。
PostgreSQL现在是全世界最流行的数据库!PostgreSQL是开发者最喜爱欣赏的数据库!PostgreSQL是用户需求最为强烈的数据库!
这个结论可谓一石激起千层浪,在数据库社区引起了大量的争论。那么这个结论正确吗?让我们一步步来分析。2成功的定义在讨论哪个数据库是世界上最成功的之前,首先要明确“成功”的定义。“成功”可以基于流行度、技术特点、应用领域、受欢迎度等多种因素来定义。如果我们以流行度来看,那无疑DB-Engines排名更权威,为什么这样说呢?一个是DB-Engines聚焦于数据库领域,更为专业。另外,DB-Engines排名的计算方法更全面、更科学。我们看下它的计算方式:
DB-Engines排名是按其当前受欢迎程度对数据库管理系统进行排名的一个列表。我们如何衡量一个系统的受欢迎程度呢?在网站上的提及次数:我们查看在搜索引擎(目前我们使用的是Google和Bing)中这个系统的提及次数。为了只计算相关结果,我们搜索系统名称和“数据库”这个词,例如“Oracle”和“数据库”。
系统的普遍兴趣:我们使用GoogleTrends来查看系统的搜索频率。
关于系统的技术讨论频率:我们根据著名的IT相关问答网站StackOverflow和DBAStackExchange上的相关问题和感兴趣的用户数量来衡量。提及系统的工作机会数量:我们查看主要的工作搜索引擎Indeed和SimplyHired上提及该系统的工作机会数量。在专业网络上的个人资料数量:我们查看在最受欢迎的国际专业网络LinkedIn上提及该系统的个人资料数量。
在社交网络中的相关性:我们计算提及该系统的Twitter推文数量。
我们通过标准化和平均各个参数来计算系统的受欢迎程度。这些数学变换是为了保持各个系统之间的差距。也就是说,当系统A在DB-Engines排名中的值是系统B的两倍时,那么在平均评价标准上,它的受欢迎程度也是系统B的两倍。为了消除数据源数量变化所引起的影响,受欢迎分数总是一个相对值,只应与其他系统进行比较。
DB-Engines排名并不衡量系统的安装次数或其在IT系统中的使用情况。可以预期,系统受欢迎程度的增加(如在讨论或工作机会中)会在系统广泛使用之前预先出现。因此,DB-Engines排名可以作为一个早期指标。
可以看到上面的计算方法里面已经包括了StackOverflow上的相关问题和感兴趣的用户数量指标,同时还包括搜索引擘、招聘网站、社交网站的指标,非常全面,且用户覆盖面也是千万到亿级用户。对比之下,参与StackOverflow《技术调查》数据库部分的只有不到8万人,用这个数据来说明谁是最流行的数据库太偏颇了。
我们看下DB-Engines最新的数据库排名,可以看到前4名都是关系型数据库,其中Oracle是第1名,但它是收费的,随着国产数据库替代的潮流趋势,其在中国的市场份额将会持续缩小。第2名就是MySQL,是第4名PostgreSQL分数的2倍,可见当前MySQL才是最流行的数据库。
分布式数据库是不是伪需求有同学说分布式数据库的核心权衡是“以质换量”:牺牲功能、性能、复杂度、可靠性,换取更大的数据容量与请求吞吐量。但分久必合,硬件变革让集中式数据库的容量与吞吐达到一个全新高度,使分布式(TP)数据库失去了存在意义。以NVMeSSD为代表的硬件遵循摩尔定律以指数速度演进,十年间性能翻了几十倍,价格降了几十倍,性价比提高了三个数量级。单卡2TB+,4K随机读写IOPS可达K/K,延时70μs/10μs,价格不到¥/TB·年。跑集中式数据库单机能有一两百万的点写/点查QPS。真正需要分布式数据库的场景屈指可数,典型的中型互联网公司/银行请求数量级在几万到几十万QPS,不重复TP数据在百TB上下量级。真实世界中99%以上的场景用不上分布式数据库,剩下1%也大概率可以通过经典的水平/垂直拆分等工程手段解决。
上面的观点非常片面,我举一个例子,