10gen CEO訪談:為何MongoDB是當之無愧NoSQL王者
譯文【51CTO獨家譯文】時至今日,我們已經不可能把NoSQL的發展趨勢與10gen公司的MongoDB割裂開來。當然,NoSQL數據庫家族可謂百花齊放,Andrew Oliver還在他的經典文章《我到底該用哪種數據庫》中進行了系統整理。眾所周知,MongoDB與其它同類開源競爭對手Couchbase及Cassandra的具體市場占有率也很難說得清楚。然而相信沒有人會否認,MongoDB已經成為新一代開發者眼中的至寶。在發展過程中,它很早就將簡化Web應用創建與數據庫擴展能力放在第一位,也正是憑借這一特色MongoDB才得以從英杰輩出的傳統關系類數據庫中殺出個黎明。
10gen公司CEO Dwight Merriman于2007年與伙伴合作創辦了這家企業——就在不久之前他才剛剛把自己建立的第一家公司DoubleClick賣給谷歌,交易金額達到31億美元。Merriman擁有令人艷羨的強悍技術背景:1995年至2005年任DoubleClick公司CTO,主持設計了DART(即動態、廣告、報告及定位)初始技術——這項技術如今已經成為網絡廣告投放的主要基礎。據他自己介紹,當初啟動MongoDB開源項目的原因在于“我們感覺有必要推出一種新的數據技術類型,而當時也正好是最合適的時間點。”在10gen公司的創建過程中,MongoDB逐漸轉型為商業開源項目,能夠為用戶提供包括技術支持及特殊認購版本在內的多層次產品供應。
為了進一步了解MongoDB的成長軌跡與影響力,Doug Dineley和我上周一同采訪了Merriman。我們開門見山,從開創文檔類數據庫的靈感開始向Merriman展開了探索之旅。
問: 您是怎樣在經營DobleClick公司的過程中意識到市場對新型數據庫的需求?
Dwight Merriman:之前的經驗確實很有幫助。從某種角度上看,MongoDB正是我希望自己能擁有的數據庫產品。當時我們需要自來遍布世界的十二數據中心以及其中成千上萬臺服務器,還得確保每臺設備都處于正常運行狀態,這可相當困難。當然,上世紀九十年代的計算機在運算速度上完全無法與如今相提并論,這要感謝摩爾定律的一貫正確。在工作中我們需要一遍又一遍地對原有方案進行重新開發,這種枯燥而毫無價值的任務讓我們希望創造出一種適合現代化軟件、數據且能夠與新時代工作規模相吻合的處理方式——同時還要與公共及私有云結構順利接軌。但那時候市場上實在沒有這種產品,于是大約五年前我們建立了10gen公司,并從零開始打造MongoDB。
問: 要說傳統數據庫技術的兩大主要瓶頸,可能關系類數據庫的擴展性與控制性缺失最令人頭痛。這個問題您怎么看?這兩點是困擾您的主要原因嗎?
Dwight Merriman:我贊同擴展位列其中,另一個嘛……我認為是數據模型。大家知道,關系類數據庫可能是軟件歷史中出現過的最成功的技術,很多人都沒意識到我們今天還在使用的技術已經有三十到四十歲的高齡。但如果將目光轉向軟件開發的另一大重點——編程語言,我們會驚奇地發現語言的更迭周期明顯要快得多。軟件開發方法本身已經發生改變,我們不再遵循瀑布式開發原則。如今,大家更青睞敏捷開發與多版本機制。編程語言不再局限于面向對象這一種,很多新語言都專為云計算而生,這種高度靈活性非常值得肯定。我們認為這種趨勢也將給數據層帶來重大變革,其影響之深遠在過去25年的數據庫發展歷史中無人能出其右。
問: 您建立了第一款獲得廣泛成功的NoSQL文檔類數據庫。這樣的成就源自哪些重要積累?
Dwight Merriman:其實沒什么特別的積累;我覺得整個職業生涯教給我的寶貴經驗就是哪些可行而哪些不可行。我們研究過云計算——因為我們要根據擴展性需求決定如何編寫代碼——但卻找不到理想中的工具。核心難題主要分兩個方面,其中之一在于:我們該如何向外擴展?擴展技術在理念上存在幾道難以攻克的障礙,分配連接就是這樣一道門檻。如果要向容納有一千臺服務器的集群進行負載分配,其難度可想而知。
針對這個問題,我們的態度是:好吧,既然沒有明確的解決思路,那就不要再為此浪費時間了。相反,我們嘗試選擇其它數據模型,希望在達到理想效果的同時回避上述難題。面向文檔的數據模型由此誕生,從開發者的角度看我們對這一成果非常滿意。盡管不太謙虛,但我們真的認為這套方案非常適合現在的代碼開發者。
這有點像一種催化劑,指引著我們向正確的方向做出努力。我認為如今NoSQL家族中大家所看到的各類次世代、可擴展的非關系類數據庫基本都具備這些特性。我真的很喜歡面向文檔這一概念,因為它非常符合我們編寫代碼的方式。文檔類數據庫令信息變得可讀,尤其是在開發者及數據庫管理員眼中。在開發MongoDB的過程中,最令人印象深刻的點子就是把數據從代碼中分離出來。我們應該有能力在不損壞程序的前提下查看數據庫內容。關系類數據庫在這方面表現不錯,而我們應該繼承這一優勢。
作為文檔的基礎,我對JSON(即JavaScript對象表示法)也很喜愛。JSON賦予我們一套用于處理對象類數據的標準化獨立語言,而且對于人類而言,它的可讀性要比XML更高。據我所知有幾款NoSQL產品屬于JSON風格的面向文檔型數據庫。我認為作為這一領域的標準化數據模型范例,JSON給大家帶來了非常理想的切入點。
問: 為什么要讓MongoDB走開源道路?您是不是在項目啟動之初就構思好了未來的商業模式?
Dwight Merriman:這么做也是出于多種因素的考量。首先,作為開發者我們很喜歡開源的概念,甚至可以被稱為開源粉絲。當然,我們在堅持開源路線的同時,也相信自己有能力在開源這一領域創造出不斷發展但又極具商業價值的免費項目。紅帽公司是一家了不起的企業,規模也相當之大,所以開源并不會成為業務道路上的絆腳石。
問: 您的第一位客戶是誰?
Dwight Merriman:我們的第一批客戶來自Web 2.0與startup world網站。這要回溯到2009年,那時候Shutterfly、Craigslist及Foursquare等企業開始嘗試MongoDB。而一年之后,我們的產品迎來了更多規模更大的客戶,例如Intellisponse、O2、迪士尼乃至eBay。時至今日,即使在企業層面我們也早已跨過了早期試用這個階段。2012年,MongoDB的普及趨勢開始向金融服務業界擴展,目前銀行及其它金融機構開始廣泛采用MongDB及NoSQL類產品——至少會在新項目中采用。甚至有不少企業表示:這是我們開發應用的默認方式。
問: 他們指的是Web應用,對嗎?
Dwight Merriman:哦,不是,因為MongoDB中不包含任何針對Web應用的特殊設計。從概念上說,這是一款通用型數據庫。雖然剛剛接觸MongoDB的客戶會通過Web應用進行試水,但我認為人們應該把它推廣到各個方面:內容管理系統、個性化系統以及移動流媒體等等。MongoDB被用在Web開發中,但也同樣被用于賬目管理及離線分析等方面,這些都是歷史數據存儲量巨大的領域。總而言之,MongoDB的適用范圍非常廣闊。
答:客戶所開發的企業應用之間存在共通點嗎?因為在您的介紹中,我們會有種缺乏特色的雜燴感。
Dwight Merriman:使用范圍的確很廣很雜,而且你的問題比較寬泛,有點像:甲骨文關系類數據庫包含哪些使用實例?我當然能夠回答,但這既復雜又耗時。文檔類數據庫在數據對象符合面向文檔的數據模型時表現出色,無論是從編程語言、分類效果還是數據合集角度看都是如此。
舉例來說,某家電信公司自主開發了一套產品目錄應用。由于公司規模極為龐大,產品數量也達到上萬種,其中包括電話、延保產品以及其它一些服務計劃。每種產品都擁有獨特的屬性,而由于MongoDB的數據模型非常適合這種工作,企業開發者會發現整個工作流程都變得更加簡便。這算是個很好的使用實例。
我認為MongoDB的出色之處還不僅如此。內容管理應用后端、使用量巨大的移動應用、需要實時進行操作數據存儲的在線應用等任務每秒鐘需要處理數萬次讀寫操作,而這也是文檔類數據庫的長項。
當然MongoDB也存在局限性,復雜度極高的工作或者對SQL及UVC的遺留請求進行處理就不太適合它。
問: 從CIO的角度分析,我們認為大家的普遍看法是NoSQL類產品不太適合進行交易處理。您對這種觀念有什么見解?
Dwight Merriman:這要看具體的產品類型,不同產品所使用的處理模式也有所不同。MongoDB的實力就要比人們的普遍看法強一些。通過MongoDB,用戶可以對個人JSON文檔進行原子操作,而且支持的文檔處理量也相當理想,這當然也是交易處理的一種表現。而在同一文檔的條件下,如果我們想從A處借記款項并以信貸形式交付給B,這樣的交易活動完全能夠順利進行。只是我們無法在不同文檔之間進行這樣的操作。
我們很希望能滿足用戶的需求,但問題在于要讓分布式交易在上千臺服務器規模的集群中快速完成實在是非常、非常、非常困難。所以我們的做法是……在保證速度的前提下為大家提供解決方案,盡管還存在一定缺陷。事實證明這樣的思維方式能夠讓產品走得更遠,特別是在設計過程中考慮到無法完成的任務。我發現在75%的使用實例中,都有很多其它方法處理這一看似難以完成的任務。不過仍然有少數客戶對產品的表現不太滿意,這一點我并不否認。
如果某個項目擁有二十項要求,典型數據庫會優先分配交易要求,但這就會使其在其它一些方面表現乏力——例如數據映射、處理速度以及擴展性等。用戶需要從綜合角度進行審視,評估哪款產品最適合自己的實際需求。
問: 前一陣子,我們網站的一位撰稿人Andrew Oliver刊發了一篇名為《糊涂的極端分子死咬MongoDB》的文章。在他看來,很多用戶面對日益普及的MongoDB提出了一些不切實際的期望。您對這樣的觀點有何看法?
Dwight Merriman:我們確實發現了此類情況,尤其是在一年前。但隨著產品的逐步完善,目前這種爭議已經越來越少。我認為在廠商不斷改進產品的同時,開發者們的經驗積累與知識儲備也在與日俱增,這樣的組合非常科學。所有有利于MongoDB發展的最佳實踐與設計模式乃至設計方案都不會憑空出現。作為項目開發者,我認為MongoDB易于上手的特性非常有吸引力,用戶應該在輕松入門后進一步學習并發掘。遺憾的是就目前來看,這種健康的生態系統還未完全建立起來。
本著這樣的思路,我們在去年秋季推出了MongoDB免費在線教育課程。這是一種大規模網絡公開課,與Coursera或者斯坦福講堂類似,而且收到了不錯的成效。僅在項目啟動的兩周之后,我們就迎來了兩個班共計三萬名學員。這兩個班分別是開發者班與數據庫管理員班,全部受到廣泛響應與熱烈參與。目前我們的課程剛剛步入第二學期,并有計劃再開設一個Java開發者班。把信息分享給大家確實能夠幫助他們取得成功。
問: 你會聘用班上成績優異的學生嗎?
Dwight Merriman:當然,我們很樂意這么做。
問: Couchbase所提供的文檔數據庫版本也具備相當的競爭實力。您對于市場競爭打算采取什么樣的應對策略?畢竟這塊新興市場還處于混亂且快速增長的趨勢之中。
Dwight Merriman:其實這跟早期面對關系類數據庫的壓力沒什么區別,那時候甲骨文和Sybase同樣實力強勁。
問: 沒錯,您肯定不想成為下一個Sybase。
Dwight Merriman:是啊,但那都是過去的事了。如今具備競爭力、項目規模龐大的企業不少,增長也都非常迅速。但在MongoDB這邊,我們的擴展性與開發者效率方面擁有獨特的優勢。我認為在同等條件下MongoDB堪稱獨一無二。
問: 您覺得自己的主要競爭對手是誰?
Dwight Merriman:Cassandra、Couchbase和HBase是我首先能想象到的MongoDB三大競爭對手。
問: 你對甲骨文NoSQL有什么看法?
Dwight Merriman:沒有什么看法。
問: 最后一個問題,10gen公司在2013年有何打算?作為用戶我們又該做出哪些期待?
Dwight Merriman:作為MongoDB的供應商,每次進行大規模更新都會將版本號提升0.2;因此今年大家會迎來2.4和2.6兩個新版本。我們正在全文檢索方面進行一系列研發工作,打算添加一些新的安全功能,并在性能上做出大量調整工作。如果大家使用五百臺規模的服務器集群,MongoDB對于管理員而言非常友好且易于使用。但如果服務器規模超過五百臺,工作量就會有所增加,但我們仍然希望盡可能保持數據庫易用性。總之,在接來的十二個月中,我們將繼續給大家帶來新驚喜。
原文鏈接:http://www.infoworld.com/t/nosql/10gen-ceo-why-were-the-nosql-leader-211201
【編輯推薦】
- MongoDB 2.0 正式版發布
- MongoDB 2.0新功能逐個看之Compact Command
- 主流NoSQL數據庫全方位評測之MongoDB
- 教你如何利用MySQL學習MongoDB
- 在Windows環境下MongoDB搭建和簡單操作