2011-09-16 16:01 孫瑞 TT數據庫
在目前的企業IT架構中,系統管理員以及DBA都會考慮使用NoSQL數據庫來解決RDBMS所不能解決的問題,特別是互聯網行業。傳統的關係型數據庫主要以表(table)的形式來存儲數據,而無法應對非結構化數據的挑戰。在進行數據標準化的過程中,關係型數據庫性能遭遇了瓶頸。
NoSQL顧名思義就是Not-Only SQL,它可以作爲關係型數據庫的良好補充。在TechTarget數據庫之前的報道中,我們也對NoSQL數據庫的應用場景做了詳細的介紹。NoSQL不像傳統的關係型數據庫,其種類繁多,且各有各的優勢和缺點,對於DBA來說如何區分彼此的不同是一件比較頭痛的工作。在本文中,我們就將進一步爲您接受關於NoSQL數據庫的分類以及各自的優缺點。
NoSQL數據庫的四大家族
鍵值(Key-Value)存儲數據庫
這一類數據庫主要會使用到一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據。Key/value模型對於IT系統來說的優勢在於簡單、易部署。但是如果DBA只對部分值進行查詢或更新的時候,Key/value就顯得效率低下了。
相關數據庫 |
Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB |
典型應用 |
內容緩存,適合混合工作負載並擴展大的數據集 |
數據模型 |
一系列鍵值對 |
優勢 |
快速查詢 |
劣勢 |
存儲的數據缺少結構化 |
列存儲數據庫
這部分數據庫通常是用來應對分佈式存儲的海量數據。鍵仍然存在,但是它們的特點是指向了多個列。這些列是由列家族來安排的。
相關數據庫 |
Cassandra, HBase, Riak |
典型應用 |
分佈式的文件系統 |
數據模型 |
以列簇式存儲,將同一列數據存在一起 |
優勢 |
查找速度快,可擴展性強,更容易進行分佈式擴展 |
劣勢 |
功能相對侷限 |
文檔型數據庫
文檔型數據庫的靈感是來自於Lotus Notes辦公軟件的,而且它同第一種鍵值存儲相類似。該類型的數據模型是版本化的文檔,半結構化的文檔以特定的格式存儲,比如JSON。文檔型數據庫可 以看作是鍵值數據庫的升級版,允許之間嵌套鍵值。而且文檔型數據庫比鍵值數據庫的查詢效率更高。
相關數據庫 |
CouchDB、MongoDB |
典型應用 |
Web應用 |
數據模型 |
一系列鍵值對 |
優勢 |
數據結構要求不嚴格 |
劣勢 |
查詢性能不高,而且缺乏統一的查詢語法 |
圖形(Graph)數據庫
圖形結構的數據庫同其他行列以及剛性結構的SQL數據庫不同,它是使用靈活的圖形模型,並且能夠擴展到多個服務器上。NoSQL數據庫沒有標準的查詢語言(SQL),因此進行數據庫查詢需要制定數據模型。許多NoSQL數據庫都有REST式的數據接口或者查詢API。
相關數據庫 |
Neo4J、InfoGrid、Infinite Graph |
典型應用 |
社交網絡,推薦系統等。專注於構建關係圖譜 |
數據模型 |
圖結構 |
強項 |
利用圖結構相關算法。 |
弱項 |
需要對整個圖做計算才能得出結果,不容易做分佈式的集羣方案。 |
因此,我們總結NoSQL數據庫在以下的這幾種情況下比較適用:1、數據模型比較簡單;2、需要靈活性更強的IT系統;3、對數據庫性能要求較高;4、不需要高度的數據一致性;5、對於給定key,比較容易映射覆雜值的環境。