專訪視覺中國技術(shù)總監(jiān)潘凡:適合的就是最好的
原創(chuàng)【51CTO獨家專訪】隨著非關(guān)系型數(shù)據(jù)庫的發(fā)展,很多企業(yè)由于自身的考慮,一直在關(guān)系型與非關(guān)系型的選擇之間徘徊。51CTO的記者在2011年的QCon大會北京會場上有幸請到了視覺中國的技術(shù)總監(jiān)潘凡先生,為我們談一談視覺中國的數(shù)據(jù)庫選擇之路,潘凡先生說:“適合的就是***的。”以下是根據(jù)訪談內(nèi)容整理而成的文字記錄,以方便大家閱讀。
關(guān)于被訪者
潘凡
未受過正式高等教育,一名普通的財務(wù)會計,出于對編程的熱愛和沖動,97年起轉(zhuǎn)行投入軟件開發(fā)行業(yè),從事過若干年的.Net和Java開發(fā),也曾是一名Perl/PHP程序員和Linux狂熱推動者。
2000年前曾先后供職于賽迪網(wǎng)和賽迪數(shù)據(jù),從事電子商務(wù)相關(guān)研究工作。2001年起創(chuàng)業(yè),致力于將互聯(lián)網(wǎng)應(yīng)用架構(gòu)引入傳統(tǒng)零售行業(yè),構(gòu)建了基于web服務(wù)的零售商業(yè)應(yīng)用,實現(xiàn)了PDA移動終端/POS/PC基于互聯(lián)網(wǎng)整合成功案例,先后在部分500強企業(yè)成功實施運行至今。在創(chuàng)業(yè)期間又和朋友一起創(chuàng)建了視覺中國網(wǎng)站。
目前供職于視覺中國網(wǎng)站,擔(dān)任技術(shù)總監(jiān)和架構(gòu)師,關(guān)注領(lǐng)域包括可伸縮的網(wǎng)站架構(gòu),NoSQL應(yīng)用實踐以及后現(xiàn)代的Perl編程。
左為潘凡先生,右為51CTO記者
對數(shù)據(jù)庫的選擇——09年是一個轉(zhuǎn)折點
潘凡:在視覺中國成立之初,我們選用的數(shù)據(jù)庫是MySQL,09年之后我們才選用了MongoDB作為我們的支撐數(shù)據(jù)庫。
51CTO:您在放棄MySQL的時候,沒有考慮過使用Oracle或者SQL Server?
潘凡:視覺中國是根據(jù)業(yè)務(wù)的需要來進行的選擇,初始時,我們并不是想去放棄MySQL,實際上當(dāng)時我們選擇MongoDB的一個初衷是希望選擇一個NoSQL的產(chǎn)品做一個輔助的方案。但是在實際的項目實施中,我們發(fā)現(xiàn)MongoDB這種NoSQL數(shù)據(jù)庫的很多功能可以代替MySQL,因此我們決定使用MongoDB。
我們選擇替換,不是說MySQL這種數(shù)據(jù)庫產(chǎn)品不好,而使用Oracle或者SQL Server,實際上我們不是選擇一個普通的數(shù)據(jù)產(chǎn)品來代替另一個數(shù)據(jù)庫產(chǎn)品。我們本身的出發(fā)點是尋找一個可以支持MySQL的輔助產(chǎn)品。只是碰巧讓我們找到了可以替代MySQL原有工作的一種數(shù)據(jù)庫。
51CTO:也就是說這種“放棄”不是必然,只是一種巧合。
潘凡:是的,我們最開始就是想把MongoDB作為MySQL的一個輔助,現(xiàn)在有一種方案叫做SQL+NoSQL,這也是我們的選擇。只是后來我們發(fā)現(xiàn)這種方法可以簡化,就只用了MongoDB。
51CTO:視覺中國的這種選擇,也相當(dāng)于在學(xué)習(xí)中前行,有沒有遇到很多困難?
潘凡:困難是肯定有的,而且還有很多。困難的來源一方面來源于MongoDB的年輕。雖說它的發(fā)展很快,但是畢竟是年輕的產(chǎn)品,技術(shù)不是特別的成熟,所以會出現(xiàn)很多很多的問題。但是他們有一個好的技術(shù)團隊,對產(chǎn)品的版本更新速度很快,對問題的響應(yīng)速度很快,這對我們解決問題是很大的支撐。一方面是我們的技術(shù),遇到困難,解決困難,在這個過程中,我們得到了很多經(jīng)驗,為后續(xù)的工作做了很好的準(zhǔn)備;總結(jié)了很多教訓(xùn),引以為戒吧。
MongoDB的穩(wěn)定性——單機vs auto-sharding
51CTO:視覺中國的數(shù)據(jù)量能達到多少呢?
潘凡:視覺中國的數(shù)據(jù)量并不太大,我們將數(shù)據(jù)進行分組,大概分為四組,每組的平均數(shù)據(jù)量大概是幾百萬到七、八千萬。
51CTO:在這種數(shù)量級,MongoDB的穩(wěn)定性如何呢?
潘凡:基本上沒有出現(xiàn)大的問題。正常情況下,不會出現(xiàn)莫名其妙的宕機。
只有在極其異常的情況下,比如:機房整體斷電、全部機柜的電源突然全部跳了,在這種情況下,曾經(jīng)出現(xiàn)過數(shù)據(jù)的丟失。
但是現(xiàn)在1.8以后的版本,這種情況基本就沒有了。
51CTO:MongoDB在處理大規(guī)模的數(shù)據(jù)是的穩(wěn)定性又是如何的呢?
潘凡:視覺中國的數(shù)據(jù)量是有限的,只能到***別;但是,根據(jù)國外的案例來看,數(shù)據(jù)量已經(jīng)達到十億、百億的級別,MongoDB的使用基本沒有出現(xiàn)過太大的問題。如果現(xiàn)在我們不通過auto-sharding,自己手動刪片,也是很不錯的。
51CTO:現(xiàn)在版本的MongoDB本身是否有什么不足或者不穩(wěn)定因素?
潘凡:MongoDB的單機版,也就是非sharding版本目前來說還是很穩(wěn)定的。
但是,sharding版本的問題主要集中在mongos即它的路由處理(路由器),很多朋友也和我討論過類似的問題。對于這個問題,我們現(xiàn)在處于觀望的態(tài)度,因為對原有數(shù)據(jù)的遷移畢竟是一個很漫長的過程,不過我們會在新的項目中嘗試使用這種auto-sharding的技術(shù)。
MongoDB的優(yōu)化——索引的優(yōu)化
51CTO:在對數(shù)據(jù)維護時,有什么值得注意的嗎?
潘凡:硬件上,我們要把空間留的足夠了,內(nèi)存也要稍微多給一些。對于MongoDB的優(yōu)化主要是圍繞索引,對于索引的優(yōu)化。索引的使用如果要講究一點技巧的話,剩余的運維動作還是很簡單的。
值得一提的是,與MySQL相比,這是MongoDB的優(yōu)點,也是缺點,就是可選擇的優(yōu)化途徑是有限的,但是能把有限的幾種做好,基本也夠用了。
下一頁有相關(guān)專訪視頻
#p#
筆者在茶歇時間,與參會的一下用戶進行了簡單的溝通,以后是溝通內(nèi)容:
- 51CTO:您公司使用的是什么數(shù)據(jù)庫呢?
- 途牛網(wǎng):我們使用的是MySQL的數(shù)據(jù)庫。
- 51CTO:您公司想過使用非關(guān)系型數(shù)據(jù)庫嗎?
- 途牛網(wǎng):我們對這種技術(shù)正在研究,但是考慮成本,短期內(nèi)不會使用吧。
- 51CTO:您關(guān)注什么數(shù)據(jù)庫呢?
- 大學(xué)生:我們學(xué)校教的是SQL Server,所以我們在外面做兼職基本也是選用SQL Server。
- 51CTO:您聽說過非關(guān)系型數(shù)據(jù)庫嗎?
- 大學(xué)生:這方面我們不太關(guān)注。
編者語:
無論選用哪種數(shù)據(jù)庫,都要根據(jù)公司的情況來判斷,畢竟這種轉(zhuǎn)移是十分耗費成本的。SQL+NoSQL的方法,十分值得關(guān)注。另外優(yōu)化是十分重要的,但是優(yōu)化是有技巧的,萬不可胡亂優(yōu)化。
【編輯推薦】
- 走進MongoDB的世界 展開MongoDB的學(xué)習(xí)之旅
- 微軟研究人員:NoSQL需要標(biāo)準(zhǔn)化
- 視覺中國的NoSQL之路:從MySQL到MongoDB
- MongoDB1.8發(fā)布,分布式文檔數(shù)據(jù)庫






