看着评论拿靠着摩尔定律来说事的真是笑了。
这些人是不是觉得软件开发出来,靠着摩尔定律,跟着硬件18个月性能就可以翻一翻了?连摩尔定律是什么都没搞清楚,就急着拿出来当自己下跪的理由。
以下是对于那些拿摩尔定律来跪的人的反驳理由,以及简单解释数据库的难点在哪,篇幅比较长,不想看可直接拉到最后看结论。
摩尔定律不过是对硬件发展趋势的一个预测,他不是什么自然定律!
在计算机刚出来的前几十年也确实符合这个规律在不断发展的。但随着集成密度越来越接近当前材料的物理极限,摩尔定律早在十年前已经开始放缓。以桌面cpu为例子,11年上市的第一代i7-980单核主频便可睿频到3.6GHz。如今最强的i9-9900k,单核主频最高也仅能达到5.0GHz。CPU的单核处理能力可以简单的理解为ipc*主频,而第九代的酷睿相对第一代的ipc大概也只有不到两倍提升。综合下来单核处理能力大概是3倍的提升,怎么就有32倍了?
硬件我不是专业人士,以上只是简单的举例,反驳哪些那摩尔定律来冷嘲热讽的可笑言论。上面没有说多核和超线程,是因为这里针对摩尔定律说的单位面积可容纳的晶体管数目这点。单核频率之所以增长缓慢,一个原因是晶体管密度接近当前使用材料的物理极限。增加主频,会导致发热太高散不出去。
日常使用软件的很多场景下,靠的还是单核性能,很多玩游戏的人应该理解这点。单核频率发展到一定程度之后,开始另辟蹊径,发展多核处理器。而一个应用能不能在多线程、多核、多CPU甚至多机器集群下发挥他们的性能,这就是软件的功劳了。特别像数据库这种有强事务要求的软件。在成千上万的分布式机器集群下,既要处理速度也要保证事务正确。
再来说说软件是不是能随着硬件性能增长,处理能力也能等比提升?
在一定数据量范围内,是可以的。基本也仅限于单机的场景下,基本上机器的性能越好,软件的处理能力也越强。这里说的单机,就是一台完整的计算机,包含了CPU、内存、存储、网卡等等。这些,除了CPU前几十年符合摩尔定律发展,其他硬件都没有CPU发展的这么快。单机的硬件性能也是有上限的。
我们以数据库为例,他要处理数据,中间经过哪些硬件。这里只是作为例子,简化了处理过程。首先业务应用是通过网络将数据处理请求发给数据库服务器,要经过网卡。然后数据库收到消息后,查找对应需要处理的数据,可能缓存在内存中,如果缓存里没有,可能要在硬盘里找。找到数据后,交由CPU处理。CPU处理完成,先暂存到内存,再要持久化到硬盘。这才是一个数据库处理事务的完结。最后再将处理完成的消息经过网卡返回到业务应用机器上。这里根据木桶效应,任何一个硬件达到瓶颈,就达到了整台机器的瓶颈。
早期数据库软件也一直是在单机上发展,软件上通过缓存策略、多线程、更优的存储策略、更优的算法等等来提升。硬件层面不断的提升单机性能,还有更快更可靠的存储能力。可能一台数据库服务器的价格,需要上千万,甚至整个集群价格要上亿。而这些大型软件和大型服务器,基本都被ORACLE和IMB垄断。不管软件还是硬件出问题,都只能这些公司的人来给处理。而且人家工程师来一趟,是从出门开始按小时计费,每小时价格,可能顶得上很多很多人的月薪了。所以阿里当年最早提出去IOE(IBM,ORACLE,EMC)的理念。
那么单机达到瓶颈,是否可以通过更多的机器来并行实现呢?是可以,但有很多难题需要解决。
比如不通数据存在不同机器的硬盘上,那一笔数据处理请求,如何找到他对应的机器?
如果我做一个统计类的查询,而这些数据都在不通机器上,要怎么计算?
要保证数据的安全,数据不止存一份。数据会同一个机房两台机器各存一份,同城两个机房各存一份,异地两个机房相互备份,这样一笔交易处理涉及的网络延迟怎么解决?
比如支付这种动作,涉及了付款人和收款人两个人的数据。他们两个人数据可能在不同机器,甚至不同机房不同城市。每次支付交易,都涉及从全量数据里面找到相关的两个人,那这个处理的复杂度,就是数据量的两倍复杂度。
实际场景中,有更多更复杂的计算,处理复杂度甚至是和数据量是指数级的关系。当处数据量达到一定程度后,再往上增长100%、甚至50%都可能都是很难的事。
写在最后,对这事怎么看
Oracle可能今天能拿出更好的成绩,他们能9年不再去上这个榜单刷新自己的记录,因为没有对手啊。这是人家作为曾经数据库领域垄断者的体面,我没有任何否认ORACLE的水平。但今天保持了9年的记录被OceanBase打败了,如果ORACLE再上去打出更好的成绩我也很高兴。至少在数据库这个市场里我们中国能有一家企业的产品可以让ORACLE感到威胁。据我所知,现在蚂蚁金服也在向银行输出OceanBase的方案。当有银行使用OceanBase来替代Oracle的时候,不管这个榜单成绩如何,ORACLE未来降价是必然的。就像很多传统领域一样,当中国打破西方垄断后,整个市场的价格就是断崖式下跌。OceanBase能有今天能成绩,我觉得对国内所有人来说都是件好事。不知道楼上各位酸什么?
另外就算Oracle再次刷新记录到榜首,我相信OceanBase也会跟进。或者其他国内数据库也会跟进,很多互联网公司都在去IOE,都在自研数据库。有竞争才会变得更好。性能要多强,最终还是要落到实际场景中。中国的互联网人数规模摆在这,实际的需求摆在这,总会有公司来突破。
这个榜单就像手机或电脑跑分,他不能完全代表实际使用体验。而OceanBase他是实实在在支撑双十一这种每秒近50万笔的交易处理,实际涉及到数据库的事务处理,每秒是上千万。请楼上几位跪Oracle的,说说Oracle提供解决方案的哪家公司,有这样数据并发量的实际场景?
最后的最后
用社区好多年,很少发言,因为很多领域自己并不清楚,只能做好一位读者。今天碰到和自己从事行业相关的话题下,发现原来会有这么多人并不懂,却能这么无脑黑国产的当一个慕洋犬。甚至有自我介绍写着是程序员、开发者的人,不知道这些人是蠢还是坏。忍不住来答,社区首答,文章可能写的不够好,各位多多包涵。
|