1. 程式人生 > 資料庫 >MongoDB憑什麼躋身資料庫排行前五

MongoDB憑什麼躋身資料庫排行前五

DB-Engines資料庫流行度排行榜釋出了5月份的資料,前六名的排名“千年不變”,分別是:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB和IBM Db2。而其中,MongoDB以比去年同期超出65.96分的成績繼續雄踞榜單前五,這個增幅在全榜僅次於PostgreSQL的77.99,而其相對於4月份的6.10分的增長也是僅次於微軟SQL Server排名全榜第二。

作為排名前二十中唯一被標註為文件型資料庫的MongoDB,能夠取得這樣的成績實屬不易。2007年,Dwight Merriman,Eliot Horowitz和Kevin Ryan成立了MongoDB的前身10gen軟體公司,在成立之初,這家的公司目標是為企業提供雲端計算服務。在開發雲端計算產品時,他們準備開發一個類似於資料庫的元件,為雲端計算產品提供儲存服務。當時是關係型資料庫一統天下的時代,但他們覺得傳統的關係型資料庫無法滿足他們的要求,他們想要一款程式設計師不懂SQL語言也可以使用的資料儲存產品。在網路上找了一圈,不管是開源的還是閉源的產品,都沒找到讓他們滿意的東西,於是他們就決定自己開發資料庫。

10gen公司不使用關係型資料庫是有一定的原因的,實際上,10gen的創始人都來自谷歌,他們曾經建立了一家叫做DoubleClick的廣告公司,後來該公司被谷歌收購。當時他們還在DoubleClick公司的時候,就吃過關係型資料庫的苦頭。DoubleClick是一家網路廣告公司,服務美國眾多的知名公司,該公司每秒提供40萬個廣告,但在可伸縮性和敏捷性方面經常遇到困難,因此他們不得不經常自己開發和使用許多自定義資料儲存來解決現有關係型資料庫的不足,這讓他們很是苦惱。因此他們決定開發一款資料庫產品解決他們在DoubleClick時遇到的問題,併為自己的雲端計算產品提供儲存服務。

2009年,經過將近2年的開發,10gen開發出了MongoDB的雛形並將它開源並正式命名為MongoDB,同時成立開源社群,通過社群運營MongoDB。MongoDB並不是“芒果資料庫”,Mongo取自單詞humongous的中間部分,意味巨大無比的資料庫,能夠儲存海量的資料庫。10gen將MongoDB定義為面向集合、模式自由、自由擴充套件、使用程式語言和API訪問的文件資料庫。

MongoDB有別於當時其他的資料庫產品,使用和安裝都非常方便,在程式碼中通過API就可以操作資料,在當時引起不小的轟動,加上NoSQL非關係型資料庫概念開始火起來以及大資料的需求,天時地利人和,MongoDB逐漸流行起來。現在,MongoDB股價已經突破百元大關,市值達到90億美元。

縱觀MongoDB將近12年的發展史,我們可以清晰的看到一個數據庫廠商的成長軌跡,以及它之所以能夠取得成功的幾個原因,即產品定位、技術創新、運營模式、目標願景。

產品定位:領先的現代通用資料庫

雖然以文件資料庫起家,但時至今日,MongoDB已經遠遠不是一個文件資料庫的概念所可以囊括的,更多的,MongoDB應該被稱作是一款現代通用資料庫平臺。按照MongoDB全球高階工程副總裁Richard Kreuter的解釋,MongoDB不是一款僅僅只能在單一或某類特定場景應用的資料庫平臺,它能夠廣泛的應用於各種應用場景中,譬如搜尋、網站實時資料、資料快取、大尺寸、歷史資料儲存、高伸縮性場景、物件或JSON資料儲存等。另外,MongoDB具有非常好的靈活性,可以隨使用者的需求快速開發。MongoDB文件型資料庫的特點與傳統關係型的表列相比更具有彈性,同時還能做事務性交易,而且,MongoDB可以直接在記憶體中對資料進行運算,具有很高的速度和效率。因此,現在版本的MongoDB可以支撐各種各樣的應用場景的開發需求。

但Richard強調,雖然MongoDB致力於滿足80%的使用者的需要,但在各個版本當中,MongoDB也會針對普遍的特殊需求推出新的功能,例如,在最新的4.0版本,MongoDB就推出了多文件ACID事務(multi-document ACID transactions)。這也是為什麼到現在為止,MongoDB已經擁有超過1萬多個企業版正式付費使用者的原因。實際上,目前,MongoDB在各行各業、各個地區和國家之間擁有很廣泛的使用者。在世界“財富一百強”企業中,一半以上的使用者都在使用MongoDB,而在一些重點行業,如金融、電信、製造業、電子商務、電商遊戲等領域的關鍵應用中,MongoDB正在被廣泛應用,這也從另一個側面證明了MongoDB產品定位的成功。

MongoDB全

球高階工程副總裁Richard Kreuter

技術創新:最好的資料建模資料庫

而在技術層面,MongoDB是“最好的資料建模資料庫”,Richard對此解釋道,傳統關聯性資料庫最早都是用表、列方式來建模,但按此方法完成資料建模後,各個表的關聯非常複雜,在這種情況下,想要保持資料庫的彈性是非常困難的,譬如,想要為資料庫增加一個欄位,通常就需要通過分表、分庫以及停機等很多複雜的操作才能實現。而MongoDB從設計之初就認識到了彈性對於資料庫的重要性,因此,MongoDB的資料建模方式就是要保持這種彈性,能夠依據需求很容易更改,而資料庫本身的執行不受影響。

MongoDB之所以稱作文件型資料庫,是因為其將所有的資料都儲存在了一個文件中,由於採用了BSON的方式儲存資料,故而對JSON格式資料具有非常好的支援性以及友好的表結構修改性,文件式的儲存方式,資料友好可見。相比於傳統資料庫需相對複雜的表、庫進行操作以及多次存取資料,MongoDB開發人員不用去記那些表、庫之間的各種複雜關係、只需一次存取,就可拿到想要的資料,因此,對開發而言是更容易使用而且是效果更高的。

此外,MongoDB的執行環境非常廣泛,這也是MongoDB之所以受到眾多使用者青睞的一個重要原因,它可以執行在本地的機器上,執行在任何一家雲上,可以執行在伺服器上,筆記本上,甚至還可以在手機上很流暢的使用,而這可以被稱作是MongoDB的“殺手鐗”,因為除了MongoDB之外,沒有任何資料庫可以實現跨越所有的端來執行。這也是當時開發MongoDB的一個宗旨,即開源,不受任何約制,任何人在任何時間任何地點都可以執行MongoDB。Richard強調,MongoDB同時也有一個叫做Atlas的雲服務,目前已經在AWS、Google、Azure上提供MongoDB資料庫雲服務。

Richard總結了MongoDB的最大優勢,他認為,所謂最優首先就是要看在各種情況之下對使用者有價值,這才叫最優。MongoDB的文件就是一個JSON格式,這是最廣泛應用於交換或是處理資料的一種基本格式。各種網頁、移動應用,或者很多商業應用都是用JSON處理資料。MongoDB在處理資料和儲存時直接使用JSON格式的資料,是原生的JSON儲存,不管是處理、聚合,還是更新,都直接通過JSON來做處理,這就和其他所有的資料庫是完全不一樣的處理方式。其次,MongoDB的核心是一個原生的分散式的資料庫,它有非常豐富的功能支援複製資料,同時可以快速的水平擴充套件,隨需而用。同時,MongoDB還具有傳統資料庫的優點,比如能夠很快的去區隔,能夠保持資料的強一致性等等。而且目前,MongoDB最新的4.0版本已經可以支援以前傳統關係型資料庫才能支援的多文件事務性的交易,並且在應對傳統大規模分散式資料庫中最大的挑戰——資料均衡方面,4.0版本的速度提高了40%,就使用者體驗方面而言,這又是一個非常重要、也非常吸引人的功能提升。

運營模式:堅定不移的開放和開源

不過,一個產品的成功,並不僅僅是依靠明晰的產品定位和不斷創新的技術,商業模式也非常重要。而MongoDB的成功當然也離不開成功的運營模式,而這個運營模式就是開放和開源。

實際上,早在2009年,MongoDB剛剛開發出資料庫的雛形時就同時成立了MongoDB的開源社群,堅持通過社群運營MongoDB。MongoDB一直通過開源社群擴大MongoDB的影響力,吸引程式設計師入住社群,在社群按照不同地區成立不同的使用者組,MongoDB剛推向市場的時候,BUG不少,但是MongoDB的開發人員解決問題很及時,態度非常友好,程式設計師是一個很實在的群裡,當他發現你的產品好用時,並且能夠及時幫你解決問題時,就會向同行推薦你的產品,這使得MongoDB迅速贏得了眾多開發者的好感。

Richard當然也非常清楚這一點,因此,他是MongoDB開源的堅定支持者。Richard表示,MongoDB堅持一定要有社群版的資料庫,一方面是因為開發者比較傾向於使用開源的技術,另一方面,是因為開發MongoDB的初衷就是為了讓開發者能夠更簡單和容易的使用資料庫,而開源是實現這個初衷的最好方法。而且,MongoDB並不反對開發者對開源版本的MongoDB進行修改。當然,這種修改必須反饋回社群,這就是所謂的Copyleft License。MongoDB自始至終就有Copyleft License。而在去年,針對社群版,MongoDB還提出了SSPL License,即將MongoDB作為雲服務提供時,雲服務提供者要把所有相關修改的內容和操作平臺開源出來,而這也是為了將開源的成果更好的分享給所有的使用者。

Richard強調,MongoDB完全由自己開發,擁有該產品所有的IP,之所以決定將MongoDB開放出來作開源,就是希望能夠構建一個開源資料庫健康發展的環境,鼓勵更多的軟體開發商來做開源這件事,而MongoDB以後也會一如既往的持續保持開源的狀態。

而另一個對於MongoDB非常重要的運營就是一年一度的MongoDB大會。MongoDB非常重視MongoDB大會,在全球主要城市/地區每年都會舉辦一次MongoDB大會,在MongoDB大會上,會邀請技術大牛做一些專案上使用MongoDB的乾貨分享,並與與會觀眾進行面對面的技術交流。而就在前些天,MongoDB在上海浦東星河灣大酒店成功舉辦了“2019 MongoDB中國使用者大會”。在這場乾貨滿滿的資料庫技術盛會中,來自全國各地近千名行業客戶、合作伙伴和開發者聆聽了MongoDB高層、技術大咖、行業使用者的主題演講和互動演示,共同回顧了MongoDB過去一年的發展歷程和所取得的不凡成績,瞭解了MongoDB資料庫最新的特性和功能。而類似這樣的活動,無疑極大地推動了MongoDB在市場上的影響力。

沒有人使用的技術沒有生命力

Richard最後表示,從1960年資料庫誕生至今,資料庫已經迅速轉變為應用當中舉足輕重的部分,資料庫的設計也隨著應用需求的設計不斷成長。過去,開發應用可能只是公司企業內部的應用,產生的資料量不大,變化也不多,所以當時資料庫儘量做的精簡,因為儲存太過昂貴。90年代,網際網路開始流行起來,網上應用層出不窮,應用開發需求發生了巨大改變,使用者的數量也是大幅提升。而在移動互聯時代,應用變成了隨時隨地,從而顛覆了應用開發的生態和需求,也驅動了資料庫的變革。所以不太可能再按照傳統資料庫的方式去設計資料庫產品。因此,未來的資料庫應該是能夠更加快速和敏捷的進行資料的收集和處理,並具有靈活的彈性擴充套件能力,而這也是MongoDB未來的發展方向,同時也是支撐MongoDB前進的動力。

“我認為資料庫技術前進的阻力,並不是資料庫技術本身的挑戰,而是在各方面幫助企業適應瞬息萬變的業務需求的挑戰。軟體不是自己去執行,而是要人去用。因此,事實上,最大的挑戰是人。資料庫永遠有新的技術瓶頸,技術沒有窮盡,但更重要的是變化,是怎麼樣花更多的精力和時間來推動這些技術能夠被用起來。沒有人使用的技術是沒有生命的。”Richard說。

“技術以人為本”,這是老孫在聽了Richard的話之後第一時間想到的一句話。嗯,老孫想,這或許也是MongoDB能夠取得成功的一個重要原因吧。

總結

以上所述是小編給大家介紹的MongoDB憑什麼躋身資料庫排行前五,希望對大家有所幫助,如果大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回覆大家的!