【NoSQL數(shù)據(jù)庫四大類型解析】如何選擇列族數(shù)據(jù)庫和圖形數(shù)據(jù)庫
編者注:本文內(nèi)容節(jié)選自作家兼獨立顧問Dan Sullivan的新作《NoSQL for Mere Mortals》第15章。在本章中,Sullivan介紹了NoSQL數(shù)據(jù)庫的主要四種類型,以及分享哪些應(yīng)用適合哪種類型的見解。他還討論了關(guān)系型數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫設(shè)計的區(qū)別,以及這兩種技術(shù)共同存在的必要性。如有興趣購買,可登錄Informit.com,輸入優(yōu)惠碼AWDATA35,即可獲得65折優(yōu)惠。
在前文中,我們已經(jīng)介紹了如何選擇NoSQL數(shù)據(jù)庫的主要兩大類型:鍵值型數(shù)據(jù)庫和文檔型數(shù)據(jù)庫。今天我們繼續(xù)討論如何選擇另外兩大類型:列族數(shù)據(jù)庫(column family database和圖形數(shù)據(jù)庫(graph database)。
如何選擇列族數(shù)據(jù)庫(column family database)?
列族數(shù)據(jù)庫被設(shè)計應(yīng)用于大量數(shù)據(jù)的情況,它保證了讀取和寫入的性能和高可用性。谷歌推出Bigtable來應(yīng)對其服務(wù)需求。Facebook開發(fā)Cassandra 來支持其收件箱搜索服務(wù)。
這些數(shù)據(jù)庫管理系統(tǒng)運行在多個服務(wù)器組成的集群上。如果你的數(shù)據(jù)量小到能運行在一個服務(wù)器上,那么一個列族數(shù)據(jù)庫相對于鍵-值數(shù)據(jù)庫來說,可能更加符合你的需要。
列族數(shù)據(jù)庫廣泛適用于如下情況:
那些對數(shù)據(jù)庫寫操作能力有著特殊要求的應(yīng)用程序
數(shù)據(jù)在地理上分布于多個數(shù)據(jù)中心的應(yīng)用程序
可以容忍副本中存在短期不一致情況的應(yīng)用程序
擁有動態(tài)字段的應(yīng)用程序
擁有潛在大量數(shù)據(jù)的應(yīng)用程序,大到幾百TB的數(shù)據(jù)
谷歌證實了運行在其計算引擎上的Cassandra數(shù)據(jù)庫的優(yōu)秀性能。谷歌工程師部署了:
330個谷歌計算引擎虛擬機
300個1TB硬盤
Debian Linux系統(tǒng)
Datastax Cassandra 2.2 版本
數(shù)據(jù)被寫入到兩個節(jié)點
30個虛擬機生成的30億條記錄,每個記錄170字節(jié)
在這個配置中,Cassandra 集群每秒寫入100萬條,在23毫秒內(nèi)完成了95%。當三分之一的節(jié)點丟失時,100萬寫操作仍在持續(xù)進行,但會有較高的延遲。
一些領(lǐng)域可以使用這種大數(shù)據(jù)處理能力,例如:
用網(wǎng)絡(luò)流量和日志數(shù)據(jù)模式進行安全性分析
大量的科學(xué)計算,例如分析基因和蛋白質(zhì)的生命科學(xué)
使用交易數(shù)據(jù)進行股票市場分析
網(wǎng)絡(luò)應(yīng)用例如搜索引擎等
社交網(wǎng)絡(luò)服務(wù)
鍵值、文檔和列族數(shù)據(jù)庫廣泛適用于各種應(yīng)用。然而,圖形數(shù)據(jù)庫,更適合另一個特定類型的問題。
如何選擇圖形數(shù)據(jù)庫(graph database)?
圖形數(shù)據(jù)庫非常適合表示網(wǎng)絡(luò)實體連接等問題。評估圖形數(shù)據(jù)庫有效性的一種方法是確定實例和實例間是否存在關(guān)系。
例如,一個電子商務(wù)應(yīng)用程序中的兩個訂單可能沒有相互連接。他們來自同一個客戶,但這是一個共享的屬性,而不是一個連接。
同樣,一個游戲玩家的配置和游戲狀態(tài)與其他游戲玩家的配置也沒什么關(guān)系。這樣的實體很容易使用鍵值型、文檔型或者關(guān)系型數(shù)據(jù)庫來進行建模。
現(xiàn)在,考慮討論中提到的圖形數(shù)據(jù)庫應(yīng)用的例子,如城市間的高速公路連接或者蛋白質(zhì)和蛋白質(zhì)相互作用,員工與員工間的工作關(guān)系等。所有這些情況都存在著一些類型的連接或者實體包含的兩個實例之間的關(guān)系等。
這些問題的類型適用于圖形數(shù)據(jù)庫。其他類似問題的例子包括:
網(wǎng)絡(luò)和IT基礎(chǔ)設(shè)施管理
認證與訪問權(quán)限管理
商業(yè)流程管理
產(chǎn)品和服務(wù)推薦
社交網(wǎng)絡(luò)
從這些例子中可以看出,當需要模型來明確的實體和實體之間的關(guān)系,以及快速遍歷路徑時,圖形數(shù)據(jù)庫將是一個很好的選擇。
大規(guī)模圖形化處理,例如大型社交網(wǎng)絡(luò),可以使用列族數(shù)據(jù)庫存儲和檢索。圖形操作是建立在數(shù)據(jù)庫管理系統(tǒng)之上的。Titan 圖形數(shù)據(jù)庫和分析平臺采用了這種方法。
鍵值型、文檔型、列族和圖形數(shù)據(jù)庫滿足了不同類型的需求。與關(guān)系數(shù)據(jù)庫基本上取代其之前的數(shù)據(jù)庫不同,這些NoSQL數(shù)據(jù)庫將繼續(xù)與關(guān)系型數(shù)據(jù)庫共存,因為應(yīng)用程序越來越多且不同類型的應(yīng)用程序有不同的數(shù)據(jù)庫需求。