当前位置: 首页 > 科技观察

数据库十年巅峰对决,谁才是真正的王者?

时间:2023-03-18 21:41:53 科技观察

年底了,让我们来看看大家关心的一些数据吧。今天,我们就来看看各大数据库在过去一年的表现吧!图片来自Pexels,让我们来看看数据库流行的整体趋势:数据请查看视频。所有数据均来自一个数据库热门趋势统计网站:https://db-engines.com/方法1先来看看获取数据的方法。首先,我们可以在以下地址看到一个包含所有数据库信息的表格:https://db-engines.com/en/ranking然后进入每个数据库详情页面,该数据库历年的流行度数据将包含在JavaScript中页面加载后的变量:https://db-engines.com/en/ranking_trend/system/Oracle,这样我们就可以解析JavaScript代码来获取各个数据库的历史数据,为了加快速度爬取速度,采用异步请求。首先抓取所有的数据库名称信息,使用Pandas的read_html方法轻松读取HTML中的Table数据:importpandasaspdmystr='Detailedvendor-providedinformationavailable'defset_column3(column3):ifmystrincolumn3:column3=column3.split(mystr)[0]returncolumn3url='https://db-engines.com/en/ranking'tb=pd.read_html(url)db_tb=tb[3].drop(index=[0,1,2])[[0,1,2,3,4,5,6,7]]#处理数据db_tb[3]=db_tb[3].apply(set_column3)#保存数据db_tb.to_csv('db_tb.csv')异步抓取数据库详情:asyncdeffetch(session,url):asyncwithsession.get(url)asresponse:returnawaitresponse.text()asyncdefget_db_data(db_name):url='https://db-engines.com/en/ranking_trend/system/%s'%db_nameasyncwithaiohttp.ClientSession()assession:res=awaitfetch(session,url)content=BeautifulSoup(res,"html.parser")content.find_all("script")db_data=content.find_all("script")[2].stringsrc_text=js2xml。解析(db_data)src_tree=js2xml.pretty_print(src_text)data_tree=BeautifulSoup(src_tree,'html.parser')data_tree.find_all('number')data=[]foriindata_tree.find_all('number'):data.append(i['value'])date_list=gen_time('%s-%s'%(data[0],str(int(data[1])+1)))date_value=list(zip(date_list,data[3:]))d_data=zip([db_nameforiinrange(len(date_value))],date_value)awaitssave_data(d_data)defgen_time(datestart,dateend=None):ifdateendisNone:dateend=time.strftime('%Y-%m',time.localtime(time.time()))datestart=datetime.datetime.strptime(datestart,'%Y-%m')dateend=datetime.datetime.strptime(dateend,'%Y-%m')date_list=list(OrderedDict(((datestart+timedelta(_)).strftime(r"%Y-%m"),None)for_inrange((dateend-datestart).days)).keys())date_list.append('2019-12')returndate_listif__name__=='__main__':db_tb=pd.read_csv('db_tb.csv')db_name=db_tb['3'].values.tolist()循环=asyncio.get_event_loop()tasks=[get_db_data(name)fornameindb_name]loop.run_until_complete(asyncio.wait(tasks))loop.close()方法2下面介绍第二种方法。方法比较简单,但是抓取的地方比较多的时候需要处理我们可以直接访问以下地址。同样,页面加载完成后,会返回所有数据库的历史数据信息:https://db-engines.com/en/ranking_trend那么我们可以直接解析这里的JavaScript信息,获取对应数据库的数据.但由于部分数据库缺少历史数据,需要特殊处理:foriindata_tree.find_all('object'):date_list=gen_time('%s-%s'%(year_list[0],str(int(year_list[1])+1)))data=[]tmp_list=[]db_name=i.find('string')ifi.find('null'):null_num=len(i.find_all('null'))tmp_list=list(zip(date_list[:null_num],['0'foriinrange(null_num+1)]))date_list=date_list[null_num:]forjini.find_all('number'):data.append(j['value'])两种方法各有优缺点,大家可以选择适合自己的方法。拿到数据后,我们就可以做统计分析了。从数据库的整体榜单可以看出,关系型数据库在今天依然是王者,流行度前四名都被它们占据。甲骨文虽然表现不佳,饱受诟病,但凭借多年积累,依然稳坐榜单头把交椅。地点。MySQL似乎从不让用户失望,牢牢占据着二哥的位置。而唯一挤进前五名的非关系型数据库是MongoDB。在文档数据库领域,绝对是老大哥!下面用一张散点图来感受下不同数据库之间的差距:我这里是针对主流数据库的榜单选取了总榜单的前五名,再加上代表key-value数据库的Redis和代表搜索数据库的ES作为对比对象.再来看看他们2019年的整体走势:可以看出他们在2019年的整体表现还是比较稳定的,其中前三名在年末都出现了不同程度的下滑,而对应的PG库则有所增长.我们来看看这七种数据库今年的增长率:可以看到MySQL是增长率最高的数据库,而Redis在2019年表现不佳,呈负增长趋势。再把时间拉长,看看2012年至今各大数据库的表现:Oracle和MSServer整体确实呈现下降趋势,而MySQL略有上升。同时,PostgreSQL的增长也比较明显,尤其是从2017年开始,其热度已经超过了MongoDB。相应的,这段时间也是前三名数据库的下滑期。接下来,我们将根据不同的数据库类型,盘点各类数据库的流行趋势。关系型数据库对于关系型数据库来说,前四太强了:我们去掉这四个数据库,看看其他关系型数据库的历史趋势:可以看出IBM的DB2和微软的Access这几年有下降的趋势,而MariaDB,开源版MySQL,呈现出强劲的上升趋势。看来大家拥抱开源的信念没有减退啊!Key-Value数据库我们来看一下K-V数据库。毫无疑问,Redis近年来非常流行,占据大部分市场份额。然而,曾经的王者Memcached,由于种种原因,人气一直在下滑:可见2016年是起点。随着云计算的风起云涌,亚马逊和微软的K-V数据库增长迅速,而Memcached则逐渐没落。然而,Redis凭借其良好的表现,依然一路高歌猛进!文档数据库现??在进入文档数据库时代,毫无疑问MongoDB的地位是不可动摇的:而亚马逊的AmazonDynamoDB数据库也随着云服务的兴起成功占据了一席之地!从历年流行趋势图可以看出,MongoDB走在持续增长的道路上,而且是最好的。另一方面,AmazonDynamoDB从2017年开始慢慢获得市场份额,拉大了与其他文档数据库的差距。时序数据库时序数据库中也有一个霸主,那就是InfluxDB,但是总体来说,各方的力量是平衡的!Kdb、Prometheus、OpenTSDB都在各自的专业领域发挥着不可替代的作用。当然,InfluxDB数据库是最耀眼的明星,其迅猛的发展趋势使其成功突围。不过,RRDtool数据库或多或少都有高开低走的味道。不知道什么时候才能看到它的王者归来!图数据库我们来看看图数据库。是知识图谱领域首选的数据库类型,尤其是Neo4j。就算没用过,为什么听说过它的名字呢?让我们来看看近几年的流行趋势:Neo4j和MicrosoftAzureCosmosDB正在迅速流行。看来在知识图谱兴起的时代,图数据库也需要是二分法。搜索数据库最后再来看看搜索数据库:毫无疑问,大热的ES已经成功占据榜首,其次是Splunk和Solr。这三者基本上占据了搜索数据库市场的绝大部分。从这些年的趋势可以看出,Solr是有些担心的。随着ES和Splunk的强势崛起,Solr似乎也在慢慢平静下来。不过,无论是ES的耀眼光芒,还是Splunk的新贵,可以预见,在未来很长一段时间内,搜索数据库领域仍将是他们的三大支柱!最后,通过一段视频,让我们来看看不同类型数据库的流行程度。度数变化:视频完整代码请看这里:https://github.com/zhouwei713/data_analysis/tree/master/Annual_Ceremony/DB作者:周洛波简介:Python学习者。喜欢爬虫,数据分析和可视化等,个人公众号《萝卜大杂烩》,期待与你相遇!