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