成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

數(shù)據(jù)庫(kù)十年巔峰對(duì)決,誰(shuí)才是真正的王者?

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
在年終歲尾之際,盤一盤大家比較關(guān)心的一些數(shù)據(jù)。今天先來(lái)看看各大數(shù)據(jù)庫(kù)在過(guò)去一年的表現(xiàn)!

 在年終歲尾之際,盤一盤大家比較關(guān)心的一些數(shù)據(jù)。今天先來(lái)看看各大數(shù)據(jù)庫(kù)在過(guò)去一年的表現(xiàn)!

[[285289]]

 

圖片來(lái)自 Pexels

先來(lái)看看數(shù)據(jù)庫(kù)流行度總體走勢(shì):

視頻請(qǐng)查看這里

數(shù)據(jù)獲取

所有的數(shù)據(jù)都來(lái)源自一個(gè)數(shù)據(jù)庫(kù)流行趨勢(shì)統(tǒng)計(jì)網(wǎng)站:

  1. https://db-engines.com/ 

Method 1

我們先來(lái)看獲取數(shù)據(jù)方法,首先我們可以在下面地址中看到一個(gè)包含所有數(shù)據(jù)庫(kù)信息的表格:

  1. https://db-engines.com/en/ranking 

 

然后可以進(jìn)入到每個(gè)數(shù)據(jù)庫(kù)詳情頁(yè)面中,該數(shù)據(jù)庫(kù)歷年流行度數(shù)據(jù)都會(huì)在頁(yè)面加載之后包含在 JavaScript 的變量中:

  1. https://db-engines.com/en/ranking_trend/system/Oracle 

 

所以我們可以通過(guò)解析該 JavaScript 代碼來(lái)獲取每個(gè)數(shù)據(jù)庫(kù)的歷年數(shù)據(jù),同時(shí)為了加快抓取速度,使用了異步請(qǐng)求。

先抓取所有數(shù)據(jù)庫(kù)名稱信息,通過(guò) Pandas 的 read_html 方法可以方便的讀取 HTML 中的 Table 數(shù)據(jù):

  1. import pandas as pd 
  2.  
  3.  
  4. mystr = ' Detailed vendor-provided information available' 
  5.  
  6.  
  7. def set_column3(column3): 
  8.     if mystr in column3: 
  9.         column3 = column3.split(mystr)[0] 
  10.     return column3 
  11.  
  12.  
  13. url = 'https://db-engines.com/en/ranking' 
  14. tb = pd.read_html(url) 
  15. db_tb = tb[3].drop(index=[0, 1, 2])[[0, 1, 2, 3, 4, 5, 6, 7]] 
  16.  
  17. # 處理數(shù)據(jù) 
  18. db_tb[3] = db_tb[3].apply(set_column3) 
  19.  
  20. # 保存數(shù)據(jù) 
  21. db_tb.to_csv('db_tb.csv'

異步抓取數(shù)據(jù)庫(kù)詳細(xì)信息:

  1. async def fetch(session, url): 
  2.     async with session.get(url) as response: 
  3.  
  4.         return await response.text() 
  5.  
  6.  
  7. async def get_db_data(db_name): 
  8.     url = 'https://db-engines.com/en/ranking_trend/system/%s' % db_name 
  9.  
  10.     async with aiohttp.ClientSession() as session: 
  11.         res = await fetch(session, url) 
  12.         content = BeautifulSoup(res, "html.parser"
  13.         content.find_all("script"
  14.         db_data = content.find_all("script")[2].string 
  15.         src_text = js2xml.parse(db_data) 
  16.         src_tree = js2xml.pretty_print(src_text) 
  17.         data_tree = BeautifulSoup(src_tree, 'html.parser'
  18.         data_tree.find_all('number'
  19.         data = [] 
  20.         for i in data_tree.find_all('number'): 
  21.             data.append(i['value']) 
  22.  
  23.         date_list = gen_time('%s-%s' % (data[0], str(int(data[1]) + 1))) 
  24.         date_value = list(zip(date_list, data[3:])) 
  25.         d_data = zip([db_name for i in range(len(date_value))], date_value) 
  26.  
  27.         await save_data(d_data) 
  28.  
  29.  
  30. def gen_time(datestart, dateend=None): 
  31.     if dateend is None: 
  32.         dateend = time.strftime('%Y-%m'time.localtime(time.time())) 
  33.     datestart=datetime.datetime.strptime(datestart, '%Y-%m'
  34.     dateend=datetime.datetime.strptime(dateend, '%Y-%m'
  35.     date_list = list(OrderedDict(((datestart + timedelta(_)).strftime(r"%Y-%m"), None) for _ in range((dateend - datestart).days)).keys()) 
  36.     date_list.append('2019-12'
  37.     return date_list 
  38.  
  39.  
  40. if __name__ == '__main__'
  41.     db_tb = pd.read_csv('db_tb.csv'
  42.     db_name = db_tb['3'].values.tolist() 
  43.     loop = asyncio.get_event_loop() 
  44.     tasks = [get_db_data(namefor name in db_name] 
  45.     loop.run_until_complete(asyncio.wait(tasks)) 
  46.     loop.close() 

Method 2

下面再來(lái)介紹第二種方法,方法更簡(jiǎn)單,但是抓取時(shí)需要處理的地方更多一些。

我們可以直接訪問下面的地址,同樣的,在頁(yè)面加載完成后,會(huì)返回所有數(shù)據(jù)庫(kù)的歷年數(shù)據(jù)信息:

  1. https://db-engines.com/en/ranking_trend 

 

那么我們就可以直接解析此處的 JavaScript 信息,獲取對(duì)應(yīng)數(shù)據(jù)庫(kù)的數(shù)據(jù)即可。

不過(guò)由于有些數(shù)據(jù)庫(kù)的歷史數(shù)據(jù)有缺失,所以需要做特殊處理:

  1. for i in data_tree.find_all('object'): 
  2.       date_list = gen_time('%s-%s' % (year_list[0], str(int(year_list[1]) + 1))) 
  3.       data = [] 
  4.       tmp_list = [] 
  5.       db_name = i.find('string'
  6.       if i.find('null'): 
  7.           null_num = len(i.find_all('null')) 
  8.           tmp_list = list(zip(date_list[:null_num], ['0' for i in range(null_num + 1)])) 
  9.           date_list = date_list[null_num:] 
  10.       for j in i.find_all('number'): 
  11.           data.append(j['value']) 

兩種方法各有優(yōu)缺點(diǎn),小伙伴兒們可以自行選擇適合自己的方式。拿到數(shù)據(jù)之后,我們就可以做統(tǒng)計(jì)分析啦。

數(shù)據(jù)庫(kù)總榜

 

可以看出,關(guān)系型數(shù)據(jù)庫(kù)還是當(dāng)今的王者,流行度前四名都被它們所占據(jù),而 Oracle 雖然連年表現(xiàn)不佳,為人詬病,但是依靠多年的積累,仍然牢牢把持著榜首的位置。

MySQL 似乎從來(lái)沒有令用戶失望,也是穩(wěn)穩(wěn)的占據(jù)二哥的位置。

而唯一擠進(jìn)前五的非關(guān)系型數(shù)據(jù)庫(kù)則是 MongoDB,在文檔數(shù)據(jù)庫(kù)領(lǐng)域,絕對(duì)是大哥大!

我們?cè)偻ㄟ^(guò)一張散點(diǎn)圖來(lái)感受下不同數(shù)據(jù)庫(kù)之間的差距:

 

主流數(shù)據(jù)庫(kù)榜單

我這里又選取了總榜中的前五名,再加上 key-value 數(shù)據(jù)庫(kù)的代表 Redis 和搜索數(shù)據(jù)庫(kù)的代表 ES 來(lái)作為對(duì)比對(duì)象。

先來(lái)看看它們?cè)?2019 年的整體走勢(shì):

 

可以看到它們?cè)?2019 年總體表現(xiàn)還是比較平穩(wěn)的,其中榜首三強(qiáng)都是在年末出現(xiàn)了不同程度的下滑,而與之對(duì)應(yīng)的則是 PG 數(shù)據(jù)庫(kù)的增長(zhǎng)了。

再來(lái)看下這七大數(shù)據(jù)庫(kù)今年的增長(zhǎng)率:

 

可以看到 MySQL 是增長(zhǎng)率最高的數(shù)據(jù)庫(kù),而 Redis 在 2019 年則表現(xiàn)不佳,呈現(xiàn)了負(fù)增長(zhǎng)的趨勢(shì)。

下面我們?cè)侔褧r(shí)間拉長(zhǎng),看看從 2012 年到現(xiàn)在,各大數(shù)據(jù)庫(kù)的表現(xiàn)情況:

 

Oracle 和 MS Server 整體來(lái)看確實(shí)呈現(xiàn)下降的趨勢(shì),而 MySQL 則稍稍有些增長(zhǎng)。

同時(shí) PostgreSQL 增長(zhǎng)比較明顯,尤其是從 2017 年開始,流行度超越 MongoDB,相對(duì)應(yīng)的,這個(gè)時(shí)間段也是榜首三大數(shù)據(jù)庫(kù)的下滑期。

接下來(lái)再根據(jù)不同的數(shù)據(jù)庫(kù)類型,來(lái)分別查看下各種類型數(shù)據(jù)庫(kù)的流行趨勢(shì)。

關(guān)系型數(shù)據(jù)庫(kù)

對(duì)于關(guān)系型數(shù)據(jù)庫(kù),榜首四強(qiáng)實(shí)在太強(qiáng):

我們?nèi)コ暨@四種數(shù)據(jù)庫(kù),來(lái)看看其他關(guān)系型數(shù)據(jù)庫(kù)的歷年走勢(shì):

 

可以看出,IBM 的 DB2 和微軟的 Access 近年都有下滑的趨勢(shì),而作為 MySQL 的開源版 MariaDB,則呈現(xiàn)了很強(qiáng)的上升趨勢(shì),看來(lái)大家擁抱開源的信念不減呢!

Key-Value 數(shù)據(jù)庫(kù)

再來(lái)看看 K-V 數(shù)據(jù)庫(kù),毫無(wú)疑問,近些年 Redis 風(fēng)光無(wú)限,占據(jù)了大部分的市場(chǎng)份額。

而曾經(jīng)的王者 Memcached,則因?yàn)榉N種原因,流行度不斷下滑:

 

可以看到,2016 年為起點(diǎn),隨著云計(jì)算的風(fēng)起云涌,亞馬遜和微軟的 K-V 數(shù)據(jù)庫(kù)增長(zhǎng)迅猛,而 Memcached 則逐漸衰落,但是 Redis 憑借其良好的表現(xiàn),仍然一路高歌!

文檔數(shù)據(jù)庫(kù)

現(xiàn)在進(jìn)入到文檔數(shù)據(jù)庫(kù)時(shí)間,毫無(wú)疑問 MongoDB 的地位無(wú)可動(dòng)搖:

而亞馬遜的 Amazon DynamoDB 數(shù)據(jù)庫(kù)憑借著云服務(wù)的興起,也成功占有一席之地!

 

從歷年流行度走勢(shì)圖中可以看出,MongoDB 在持續(xù)增長(zhǎng)的路上,一騎絕塵了。

而 Amazon DynamoDB 則從 2017 年開始慢慢占據(jù)市場(chǎng)份額,拉開與其他文檔數(shù)據(jù)庫(kù)的差距。

時(shí)序數(shù)據(jù)庫(kù)

時(shí)序數(shù)據(jù)庫(kù)也有一個(gè)霸主,那就是 InfluxDB,不過(guò)整體來(lái)說(shuō),各方勢(shì)力實(shí)力均衡!

Kdb、Prometheus 和 OpenTSDB 等都在各自擅長(zhǎng)的領(lǐng)域發(fā)揮著不可替代的作用。

 

當(dāng)然啦,InfluxDB 數(shù)據(jù)庫(kù)就是那顆最耀眼的星,迅猛的發(fā)展趨勢(shì),讓它成功殺出重圍。

而 RRDtool 數(shù)據(jù)庫(kù)卻多少有些高開低走的味道,不知道什么時(shí)候能夠看到它王者歸來(lái)!

圖數(shù)據(jù)庫(kù)

下面我們?cè)賮?lái)看看圖數(shù)據(jù)庫(kù),它在知識(shí)圖譜領(lǐng)域是當(dāng)仁不讓的首選數(shù)據(jù)庫(kù)類型,尤其是 Neo4j,就算你沒有使用過(guò),怎么也聽說(shuō)過(guò)它的大名吧!

再來(lái)看看近些年的流行度走勢(shì)呢:

 

Neo4j 和 Microsoft Azure Cosmos DB 走勢(shì)迅猛,看來(lái)在知識(shí)圖譜興起的時(shí)代,圖數(shù)據(jù)庫(kù)也要呈現(xiàn)二分天下的態(tài)勢(shì)了。

搜索數(shù)據(jù)庫(kù)

最后我們?cè)賮?lái)看看搜索數(shù)據(jù)庫(kù)的情況:

沒有一絲絲疑問,大火的 ES 成功占據(jù)榜首,之后就是 Splunk 和 Solr,這三位基本占據(jù)了搜索數(shù)據(jù)庫(kù)的大部分市場(chǎng)。

 

從歷年走勢(shì)中看出,Solr 有些扎心了,隨著 ES 和 Splunk 的強(qiáng)勢(shì)崛起,Solr 似乎慢慢歸于平靜了。

不過(guò)無(wú)論是 ES 的耀眼光芒還是 Splunk 的新貴登基,可以預(yù)見的是在未來(lái)的很長(zhǎng)一段時(shí)間里,搜索數(shù)據(jù)庫(kù)領(lǐng)域仍然會(huì)是它們的三足鼎立!

最后再通過(guò)一個(gè)視頻,來(lái)看看不同類型數(shù)據(jù)庫(kù)的流行度變化情況:

視頻請(qǐng)查看這里

完整代碼:

  1. https://github.com/zhouwei713/data_analysis/tree/master/Annual_Ceremony/DB 

作者:周蘿卜

簡(jiǎn)介:Python 學(xué)習(xí)者。愛好爬蟲、數(shù)據(jù)分析及可視化等,個(gè)人公眾號(hào)《蘿卜大雜燴》,期待與你相遇!

 

責(zé)任編輯:武曉燕 來(lái)源: 蘿卜大雜燴
相關(guān)推薦

2021-11-18 09:35:55

SREDevOpsLinux

2024-12-12 08:57:47

2018-11-12 14:00:24

橫評(píng)

2011-07-12 09:12:54

PowerShellPowerCLI

2023-05-15 12:33:47

JavaPython編程語(yǔ)言

2021-10-27 17:20:23

圖數(shù)據(jù)數(shù)據(jù)庫(kù)

2024-12-20 18:38:00

2020-11-02 10:52:05

Python 開發(fā)編程語(yǔ)言

2015-04-07 13:40:00

大數(shù)據(jù)大數(shù)據(jù)安全現(xiàn)狀

2013-02-19 09:23:59

Surface RTiPad辦公

2010-07-14 09:11:33

Chrome OS

2021-07-19 05:58:27

漏洞網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2021-04-25 21:32:37

數(shù)據(jù)庫(kù)架構(gòu)技術(shù)

2023-03-05 15:07:13

Nodejs前端

2021-08-31 22:54:20

手機(jī)OPPO小米

2011-07-01 14:03:17

IE 10

2019-12-13 16:08:57

戴爾

2022-01-05 16:23:16

人工智能AIVR

2013-03-11 09:13:59

2020-06-23 12:12:29

數(shù)據(jù)庫(kù)局域網(wǎng)模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久久久久一区 | 91色视频在线 | 亚洲一区二区三区 | 精品欧美一区二区久久久伦 | 欧美一级欧美三级在线观看 | 男女污网站 | 青青草在线播放 | 91在线视频播放 | 国产黄色精品在线观看 | 黄色在线免费观看视频 | 日韩中文字幕在线不卡 | 精品一区二区三区在线观看 | 中文一级片 | 日韩有码一区 | 久色网 | 亚洲一区精品在线 | 国产精品久久亚洲 | 成人 在线 | 狠狠综合网 | h在线 | 亚洲欧美综合精品久久成人 | 久久激情五月丁香伊人 | 亚洲不卡一 | 中文字幕影院 | 91精品国产一区二区在线观看 | 免费在线观看av网址 | 午夜精品久久久久久不卡欧美一级 | 91视频三区 | 国产精品久久久久久婷婷天堂 | 久久成人av电影 | 久久久久久久国产 | 黑人精品欧美一区二区蜜桃 | 欧美精三区欧美精三区 | 国产精品一区二区三区四区 | 欧美成人免费在线视频 | 成人av免费在线观看 | 久久综合伊人 | 国产一区二区三区四区五区3d | 99热这里都是精品 | 成人午夜免费视频 | 福利视频网站 |