【編者按】在“MongoDB成為首位10億美元初創(chuàng)”一文中,我們?cè)榻B過(guò)這個(gè)千禧年的寵兒――NoSQL領(lǐng)域的人氣王,只通過(guò)6年時(shí)間就將公司市值發(fā)展到12億美元,其成果相當(dāng)于著名開(kāi)源公司Red Hat 20年的發(fā)展。
總結(jié)MongoDB的成功之路,一大部分歸功于Web開(kāi)發(fā)者,因?yàn)樽鳛橐粋€(gè)文檔數(shù)據(jù)庫(kù),在許多場(chǎng)景下它都優(yōu)于RDBMS,同時(shí)還可以獲得非常高的讀性能。此外,動(dòng)態(tài)、靈活的模式更可以讓用戶(hù)在商用服務(wù)器上輕松的進(jìn)行橫向擴(kuò)展。
然而還是有很多潛在用戶(hù)抱有這樣的擔(dān)心――MongoDB的成功是否建立在過(guò)度的炒作之下。同時(shí),有些則是擔(dān)心MongoDB還不夠成熟,認(rèn)為其只適合某些Web應(yīng)用,并且在事務(wù)上存在很大的風(fēng)險(xiǎn)。為了弄清這些問(wèn)題,近日,InfoWorld的Eric Knorr走訪(fǎng)了MongoDB CTO兼聯(lián)合創(chuàng)始人Eliot Horowitz。
下為采訪(fǎng)譯文
Eric:對(duì)于MongoDB,業(yè)內(nèi)通常會(huì)有這樣一個(gè)說(shuō)法,MongoDB只適合初創(chuàng)公司,可以用它很方便的進(jìn)行擴(kuò)展。但是對(duì)于變化較少的企業(yè)級(jí)應(yīng)用程序來(lái)說(shuō),這點(diǎn)似乎并不需要?
Eliot:我在與許多企業(yè)CIO交流的過(guò)程發(fā)現(xiàn)他們受許多問(wèn)題困擾,其中之一就是一個(gè)項(xiàng)目究竟需要多少個(gè)開(kāi)發(fā)者。另一個(gè)問(wèn)題就是,有些想做的項(xiàng)目無(wú)法完成,可能是資源不足,也能使花費(fèi)時(shí)間太長(zhǎng)。
但有一點(diǎn)是肯定的,在使用MongoDB之后,這些問(wèn)題出現(xiàn)的頻率減少,他們可以更快的完成一個(gè)事情。企業(yè)往往獲益于將系統(tǒng)拆分為多個(gè)可以交互的小型系統(tǒng),而這些更小的系統(tǒng)完全可以看成是“初創(chuàng)公司” 。
Eric:你口中的他們從事的項(xiàng)目類(lèi)型是?
Eliot:通常情況是獲得某個(gè)方面的single view,比如用戶(hù)。他們期望對(duì)大量不同的數(shù)據(jù)源進(jìn)行抓取,然后清洗轉(zhuǎn)換成一個(gè)易于觀察的single view。
Eric:如果這么來(lái)看的話(huà),這似乎是CRM的主要應(yīng)用場(chǎng)景?
Eliot:這和CRM有很多區(qū)別,主要的不同在于,如果用戶(hù)擁有72個(gè)不同的CRM系統(tǒng),那么將這些系統(tǒng)整合將難于登天。另外,還會(huì)存在風(fēng)險(xiǎn)問(wèn)題,如果你擁有20個(gè)不同風(fēng)險(xiǎn)需求的系統(tǒng),也期望采用不同的通信方式,這樣的話(huà)你就需要一個(gè)可以連接不同系統(tǒng)的服務(wù)。
Eric:即使發(fā)展至今,NoSQL的事務(wù)處理上仍然存在疑問(wèn),對(duì)于這一點(diǎn)你怎么看?
Eliot:為了更好的實(shí)現(xiàn)事務(wù)功能,MongoDB加入了越來(lái)越多的特性。同時(shí),因?yàn)镸ongoDB本質(zhì)上是一個(gè)分布式系統(tǒng),所以你不需要擔(dān)心因?yàn)閱我淮疟P(pán)故障所造成的系統(tǒng)崩潰。
實(shí)際情況中,可能會(huì)使用兩個(gè)獨(dú)立的數(shù)據(jù)中心,對(duì)比只在一個(gè)物理硬盤(pán)上操作,用戶(hù)將獲得更強(qiáng)的可靠性,這些都是新型分布式環(huán)境所帶來(lái)的便利。但無(wú)可否認(rèn)是模式發(fā)生了整體的變化,然而只要人們真正的了解了這個(gè)環(huán)境,肯定會(huì)更加偏向于分布式系統(tǒng)。
對(duì)于成熟。MongoDB已投入市場(chǎng)5年之久,當(dāng)Oracle 5歲時(shí),它肯定也沒(méi)有現(xiàn)在這么成熟。數(shù)據(jù)庫(kù)是個(gè)長(zhǎng)期的工作,這個(gè)領(lǐng)域的產(chǎn)品需要更長(zhǎng)時(shí)間能打磨,但是因?yàn)樾枨髥?wèn)題,我們已經(jīng)成熟的非常快了,永遠(yuǎn)比我們想象的快。MongoDB的企業(yè)應(yīng)用流程一般是這樣的,在一個(gè)用例中測(cè)試==》投入生產(chǎn)環(huán)境==》任務(wù)關(guān)鍵型應(yīng)用上使用,這個(gè)是1到2兩年后了。經(jīng)過(guò)5年的發(fā)展后,我們已經(jīng)看到MongoDB支撐著許多企業(yè)的任務(wù)關(guān)鍵性應(yīng)用程序。
Eric:什么樣的任務(wù)關(guān)鍵型應(yīng)用?
Eliot:其中一個(gè)情景就是user-facing數(shù)據(jù)。在Adobe的中,當(dāng)人們使用Photoshop時(shí),所有的數(shù)據(jù)都會(huì)保存在Adobe中,如果服務(wù)發(fā)生故障,將會(huì)產(chǎn)生非常麻煩的事情。同樣,在銀行和風(fēng)險(xiǎn)系統(tǒng)中也是如此。
Eric:MongoDB有在銀行系統(tǒng)中投入使用?
Eliot:如果你著眼銀行這個(gè)領(lǐng)域,許多事情變化都非常快,比如業(yè)務(wù)操作時(shí)的管理需求、業(yè)務(wù)操作方式等等。MongoDB可以快速的適應(yīng)并跟隨變化,這點(diǎn)是其他系統(tǒng)做不到的。MongoDB能進(jìn)入這個(gè)領(lǐng)域主要就是基于這個(gè)原因,即使它不像Oracle那樣成熟。同時(shí),這也是開(kāi)源技術(shù)背后需要公司來(lái)支撐的原因,開(kāi)源道企業(yè)級(jí)應(yīng)用有很大一部要走。
Eric:你好像一直在說(shuō)新系統(tǒng)的打造,這是否意味著很少有遺留的企業(yè)系統(tǒng)遷至MongoDB?
Eliot:如果遺留的系統(tǒng)可以工作,那么為什么要遷移?這是完全沒(méi)意義的。我們看到許多新的應(yīng)用程序基于MongoDB建立,可以說(shuō)每時(shí)每刻都在發(fā)生。同時(shí),如果遺留系統(tǒng)崩潰,那么通常情況下它會(huì)被重構(gòu)和重新建立。但是如果遺留系統(tǒng)可以正常的工作,基于成本問(wèn)題,相信不會(huì)有任何人做這種無(wú)意義的遷移。
因此,只有在重建時(shí)你才會(huì)看到遺留應(yīng)用程序的遷移。如果你有接觸這種情況,你可能就會(huì)聽(tīng)到工程師的抱怨:“因?yàn)椴荒芸焖傺葸M(jìn),我們已遠(yuǎn)落后產(chǎn)品路線(xiàn)圖了,因此在接下來(lái)的6個(gè)月內(nèi),我們必須要緊牙關(guān)完成這個(gè)遷移。”
Eric:都有哪些機(jī)構(gòu)的工作者在推動(dòng)MongoDB采用的前行?
Eliot:毫無(wú)疑問(wèn),開(kāi)發(fā)者是最大的推動(dòng)者。架構(gòu)師因?yàn)橐恍┘軜?gòu)上的問(wèn)題使用MongoDB,有些情況下運(yùn)營(yíng)團(tuán)隊(duì)使用MongoDB來(lái)減少運(yùn)維復(fù)雜度,有些時(shí)候類(lèi)似VP及CIO也期望使用它來(lái)創(chuàng)新。但是,我認(rèn)為這些都只是基礎(chǔ),重點(diǎn)在于使用并喜歡它的人們,他們可能會(huì)對(duì)CIO上報(bào):瞧,我正在使用這個(gè)產(chǎn)品,我認(rèn)為它可以在更廣泛的項(xiàng)目中投入使用,它肯定會(huì)運(yùn)行的很好。
Eric:從運(yùn)營(yíng)的角度上看,我聽(tīng)到反饋說(shuō)MongoDB擴(kuò)展并不像宣傳的那么容易,這些人的問(wèn)題是出在了什么地方?你們是怎么回答的?
Eliot:我認(rèn)為最大的問(wèn)題在于MongoDB的底層系統(tǒng)設(shè)計(jì)是針對(duì)最大橫向擴(kuò)展性及許多常見(jiàn)的運(yùn)維操作,而當(dāng)下這些最常見(jiàn)的運(yùn)維操作可能還不是最簡(jiǎn)單的。我們盡力讓MongoDB由一堆很小的獨(dú)立組件組成,讓用戶(hù)基于需求選擇來(lái)解決擴(kuò)展難問(wèn)題。
那么問(wèn)題就發(fā)生了,使用這種新型的集群,你可能需要管理許多小的部分。從運(yùn)維的角度來(lái)說(shuō),這確實(shí)令人煩惱。這個(gè)部分會(huì)在今年搞定,將會(huì)推出一套自動(dòng)化系統(tǒng),只需簡(jiǎn)單的點(diǎn)擊就可以完成工作。同時(shí),我們還將推出管理大型分布系統(tǒng)的工具,徹底解放運(yùn)維人員。
Eric:在MongoDB中,一些最常見(jiàn)的錯(cuò)誤是什么?
Elito:或許也不能稱(chēng)之錯(cuò)誤吧,MongoDB面臨最大的挑戰(zhàn)就是正確的數(shù)據(jù)模型。因?yàn)镸ongoDB非常靈活,所以用戶(hù)經(jīng)常不考慮花時(shí)間去設(shè)計(jì)比較合適的模型,最終這將演變成搬著石頭砸自己的腳。
對(duì)于傳統(tǒng)的RDBMS來(lái)說(shuō),它們只提供簡(jiǎn)單的模型和選項(xiàng),而基于太多的硬性規(guī)則,用戶(hù)一般也不容易陷入困境,這點(diǎn)在MongoDB中就很可能發(fā)生。因此,用戶(hù)需要閱讀一些相關(guān)的書(shū)籍和文檔,避免誤區(qū)。
使用關(guān)系型數(shù)據(jù)庫(kù)的思維管理MongoDB,把MongoDB當(dāng)做關(guān)系型數(shù)據(jù)庫(kù)來(lái)使用,這樣無(wú)疑會(huì)帶來(lái)困境而不是好處。
Eric:什么會(huì)讓你夜不能寐?
Eliot:對(duì)于我們來(lái)說(shuō),最大的挑戰(zhàn)就是讓產(chǎn)品運(yùn)行良好,讓用戶(hù)喜歡MongoDB。毫無(wú)疑問(wèn)的是,對(duì)比5年后的產(chǎn)品,當(dāng)下在技術(shù)方面還存在很大的差距。坦率的說(shuō),在產(chǎn)品的這個(gè)生命周期,我們擁有了太多的用戶(hù)。
如果你對(duì)比MongoDB和其他數(shù)據(jù)庫(kù)的同個(gè)生命周期,MongoDB無(wú)疑擁有更多的用例,這點(diǎn)同樣表現(xiàn)在企業(yè)級(jí)應(yīng)用上。因此我們必須要做好迭代速度與謹(jǐn)慎方面的考量,平衡好速度與可靠性,因?yàn)樵S多應(yīng)用場(chǎng)景都是任務(wù)關(guān)鍵性應(yīng)用。
原文鏈接:11 questions for MongoDB's CTO(編譯/仲浩 審校/魏偉)
免費(fèi)訂閱“CSDN大數(shù)據(jù)”微信公眾號(hào),實(shí)時(shí)了解最新的大數(shù)據(jù)進(jìn)展!
CSDN大數(shù)據(jù),專(zhuān)注大數(shù)據(jù)資訊、技術(shù)和經(jīng)驗(yàn)的分享和討論,提供Hadoop、Spark、Imapala、Storm、HBase、MongoDB、Solr、機(jī)器學(xué)習(xí)、智能算法等相關(guān)大數(shù)據(jù)觀點(diǎn),大數(shù)據(jù)技術(shù),大數(shù)據(jù)平臺(tái),大數(shù)據(jù)實(shí)踐,大數(shù)據(jù)產(chǎn)業(yè)資訊等服務(wù)。