我是一個(gè)NoSQLer,一個(gè)搞大數(shù)據(jù)的家伙。這是一個(gè)很好的巧合,因?yàn)槟憧赡芤呀?jīng)聽說,數(shù)據(jù)增長在失控。
舊習(xí)難改。關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)仍然居于主導(dǎo)地位。但是,即使你是一個(gè)Oracle的鐵桿愛好者,RAC與PL/SQL的忠實(shí)信徒,執(zhí)行以下任務(wù),使用你心愛的技術(shù)之前,需要三思而后行:
1、搜索:即使是最敬業(yè)的Oracle店鋪也不傾向于使用Oracle Text的,甲骨文為其數(shù)據(jù)庫收購這個(gè)擴(kuò)展,但似乎并沒有非常積極的發(fā)展。相反,你會(huì)看到很多人使用復(fù)雜的查詢,沉重得像運(yùn)營商。這些結(jié)果是粗糙的,能力是薄弱的 - 獲取這些數(shù)據(jù),Oracle的方式需要的過程是艱難的。除了甲骨文,許多其他的RDBMS產(chǎn)品并沒有真正的搜索擴(kuò)展。
使用像Hibernate Search,Apache Solr,甚至Autonomy。這樣做可以有更好的擬合指數(shù)的性能,以及全文搜索的能力。
2、推薦:這是我曾經(jīng)使用過的ATG Comerce及其他商業(yè)產(chǎn)品最糟糕的一部分。它們捕獲大量的用戶數(shù)據(jù),從它們?cè)噲D提出建議的用戶中。在我曾經(jīng)的工作,推薦的功能幾乎總是關(guān)閉的,因?yàn)榭蓴U(kuò)展性的原因。
考慮到社交網(wǎng)絡(luò)。如果我想推薦給你襪子,因?yàn)槟愕呐笥鸦蚺笥训呐笥奄I了襪子,RDBMS變得很糟糕。我們談?wù)摰淖赃B接的表和多層次的查詢。這簡(jiǎn)直是圖形數(shù)據(jù)庫像Neo4j的兩行代碼。圍繞RDBMS您可以通過平坦的社交網(wǎng)絡(luò)和打零工操作的數(shù)據(jù)來解決,但你將會(huì)失去它的實(shí)時(shí)性。
3、高頻交易(HFT,High-frequency trading):你可能會(huì)認(rèn)為,交易系統(tǒng)會(huì)喜歡RDBMS,因?yàn)閿?shù)據(jù)至少是部分事務(wù)性的,對(duì)不對(duì)?這是錯(cuò)誤的。在某些情況下,高頻交易商是采用和創(chuàng)建NoSQL方法中的第一人。在HFT以低時(shí)延為王。當(dāng)然,如果你陷入了嚴(yán)重的泥濘,你可以在你的RDBMS實(shí)現(xiàn)低延遲,但它確實(shí)沒有為HFT而設(shè)計(jì)。
甲骨文試圖通過收購TimesTen回答這個(gè)問題,后者試圖將一個(gè)內(nèi)存數(shù)據(jù)庫和一個(gè)RDBMS相結(jié)合,但如果你為卡車配上一只鵝,你沒有可能得到一架飛機(jī)。相反,我們看到HFT人群使用key-value存儲(chǔ)如Riak,或更復(fù)雜的解決方案如GemFire等。
4、產(chǎn)品編目:這不是你聽說過的令人興奮的東西,SQL查詢的最大噩夢(mèng)之一,是我為映射產(chǎn)品數(shù)據(jù)而寫過的。當(dāng)時(shí)我與一家移動(dòng)電話制造商合作,這是為呼叫手機(jī)(Callphone) - 除了“標(biāo)準(zhǔn)XYZ”可能意味著幾個(gè)不同的實(shí)際電話,其中任意一個(gè)在不同的市場(chǎng)有不同的名稱。同樣的模式可能有完全不同的組件。管理這些“類”的設(shè)備沒有扁平化得非常好。這種場(chǎng)景下,可以使用一個(gè)圖形數(shù)據(jù)庫正是非常之需,如Neo4j。
我曾在一家化工企業(yè)遇到一個(gè)非常類似的問題。我們做了一些非常愚蠢的字符串映射,這是很費(fèi)力的。如果我們保持這些產(chǎn)品信息在圖形數(shù)據(jù)庫中,那將是非常容易映射的。即使像CouchBase 2.0或MongoDB這樣的文檔數(shù)據(jù)庫也可以做得更好。
5、用戶/用戶組和ACL:在一定程度上,LDAP是NoSQL數(shù)據(jù)庫的前身。 LDAP被設(shè)計(jì)于用戶、組和ACL,它可以像手套一樣適合這類問題。可悲的是,很多人都以LDAP為廢棄品,當(dāng)技術(shù)更新,并且有公司以它做了一些可怕的荒誕的事情。一些企業(yè)也建立這樣一個(gè)官僚機(jī)構(gòu),許多開發(fā)人員只好欺騙性地創(chuàng)建數(shù)據(jù)庫表。這違背了集中的用戶訪問控制的目的。 “用戶”和“角色”表應(yīng)該從任何企業(yè)環(huán)境走開。