常見(jiàn)的四種非關(guān)系型數(shù)據(jù)庫(kù)都適合什么業(yè)務(wù)場(chǎng)景?
大多數(shù)NoSQL數(shù)據(jù)庫(kù)的基本理念是面向任務(wù)(task-oriented)的數(shù)據(jù)庫(kù)管理系統(tǒng)。如同老生常談:如果你唯一的工具是錘子,那么一切看起來(lái)都像釘子(If all you have is ahammer, everything looks like a nail.)。

現(xiàn)在我們有不同種類的錘子、起子、鑿子、鏟子,還有更多的工具來(lái)解決數(shù)據(jù)管理問(wèn)題。當(dāng)然,最好的方法是選擇合適的工具來(lái)完成不同的工作,如果只用關(guān)系數(shù)據(jù)庫(kù)事實(shí)上可能會(huì)適得其反。除SQL數(shù)據(jù)庫(kù)外,其他的可以分成四類:
- 鍵值存儲(chǔ)(key-value stores)
- 列式存儲(chǔ)(column-family stores)
- 文檔存儲(chǔ)(document stores)
- 圖數(shù)據(jù)庫(kù)(graph databases)
鍵值存儲(chǔ)可能是最簡(jiǎn)單的面向任務(wù)的NoSQL數(shù)據(jù)庫(kù)。其最初的數(shù)據(jù)模型并不復(fù)雜:主要基于亞馬遜在兩年一度的ACM操作系統(tǒng)研討會(huì)(ACM Symposium on Operating SystemsPrinciples)上發(fā)布的白皮書,一篇叫Dynamo的論文。在此討論的數(shù)據(jù)模型就是亞馬遜的購(gòu)物車系統(tǒng)(Amazon's shopping cart system),該系統(tǒng)要求高可用和高負(fù)載。因此,鍵值存儲(chǔ)數(shù)據(jù)庫(kù)的底層數(shù)據(jù)模型的確很簡(jiǎn)單:鍵和值存儲(chǔ)為無(wú)模式(schema-less)數(shù)據(jù)模型。事實(shí)上,該系統(tǒng)采用大量的商業(yè)硬件搭建成集群,可擴(kuò)展性非常高,并承載了多個(gè)高端應(yīng)用,比如Amazon等。鍵值存儲(chǔ)的產(chǎn)品還有DynamoDB、Riak、Project Voldemort、Redis、Aerospike等。

列式存儲(chǔ)是另一個(gè)面向任務(wù)的數(shù)據(jù)庫(kù)解決方案。其數(shù)據(jù)模型比鍵值存儲(chǔ)稍復(fù)雜,包含一個(gè)大而稀疏的表結(jié)構(gòu),其中包括存儲(chǔ)鍵的多個(gè)列。與Dynamo系統(tǒng)類似,列式存儲(chǔ)也是源于一個(gè)特定公司的特殊需求,即Google公司提出的解決方案,發(fā)表在2006年OSDI會(huì)議(Operating SystemsDesign and Implementation symposium,操作系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)研討會(huì))上的BigTable論文中。除谷歌的產(chǎn)品外,還涌現(xiàn)出一批有趣的開(kāi)源實(shí)現(xiàn),如Apache Cassandra和HBase。大多數(shù)情況下,這些系統(tǒng)可結(jié)合Map/Reduce批處理來(lái)處理高級(jí)查詢。
文件存儲(chǔ):隨著網(wǎng)頁(yè)和應(yīng)用的爆炸式增長(zhǎng),文檔存儲(chǔ)可能是最有名、最常用的NoSQL數(shù)據(jù)庫(kù)類型。顧名思義,文檔存儲(chǔ)中的關(guān)鍵概念——文檔,是一個(gè)半結(jié)構(gòu)化的信息單元,可以是XML、JSON、YAML、OpenOffice、MS Office,或者其他任何可用的文檔。其存儲(chǔ)和檢索為簡(jiǎn)單的無(wú)模式方式。文檔存儲(chǔ)產(chǎn)品包括廣受歡迎的MongoDB、Apache CouchDB、MarkLogic和Virtuoso等。

圖數(shù)據(jù)庫(kù)與其他三類有著本質(zhì)上的差異。圖數(shù)據(jù)庫(kù)所要解決的問(wèn)題與圖和圖論相關(guān)。圖數(shù)據(jù)庫(kù),例如Neo4j,其目的是為用戶提供一種更好的方法用于管理結(jié)構(gòu)復(fù)雜、呈網(wǎng)狀分布的數(shù)據(jù)。當(dāng)然,基于圖模型實(shí)現(xiàn)的解決方案并不僅有Neo4j,有的產(chǎn)品成熟度不同,有的開(kāi)源或閉源,例如AllegroGraph、Dex、FlockDB、InfiniteGraph、OrientDB和Sones等。























