來源地址:https://baike.baidu.com/item/NoSQL/8828247?fr=aladdin NoSQL,泛指非關係型的資料庫。隨著互聯網web2.0網站的興起,傳統的關係資料庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心 ...
來源地址:https://baike.baidu.com/item/NoSQL/8828247?fr=aladdin NoSQL,泛指非關係型的資料庫。隨著互聯網web2.0網站的興起,傳統的關係資料庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以剋服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。NoSQL資料庫的產生就是為瞭解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。 NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項全新的資料庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關係型的數據存儲,相對於鋪天蓋地的關係型資料庫運用,這一概念無疑是一種全新的思維的註入。 NoSQL資料庫的四大分類: 鍵值(Key-Value)存儲資料庫 這一類資料庫主要會使用到一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據。Key/value模型對於IT系統來說的優勢在於簡單、易部署。但是如果DBA只對部分值進行查詢或更新的時候,Key/value就顯得效率低下了。舉例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB. 列存儲資料庫。 這部分資料庫通常是用來應對分散式存儲的海量數據。鍵仍然存在,但是它們的特點是指向了多個列。這些列是由列家族來安排的。如:Cassandra, HBase, Riak. 文檔型資料庫 文檔型資料庫的靈感是來自於Lotus Notes辦公軟體的,而且它同第一種鍵值存儲相類似。該類型的數據模型是版本化的文檔,半結構化的文檔以特定的格式存儲,比如JSON。文檔型資料庫可 以看作是鍵值資料庫的升級版,允許之間嵌套鍵值。而且文檔型資料庫比鍵值資料庫的查詢效率更高。如:CouchDB, MongoDb. 國內也有文檔型資料庫SequoiaDB,已經開源。 圖形(Graph)資料庫 圖形結構的資料庫同其他行列以及剛性結構的SQL資料庫不同,它是使用靈活的圖形模型,並且能夠擴展到多個伺服器上。NoSQL資料庫沒有標準的查詢語言(SQL),因此進行資料庫查詢需要制定數據模型。許多NoSQL資料庫都有REST式的數據介面或者查詢API。如:Neo4J, InfoGrid, Infinite Graph. 因此,我們總結NoSQL資料庫在以下的這幾種情況下比較適用:1、數據模型比較簡單;2、需要靈活性更強的IT系統;3、對資料庫性能要求較高;4、不需要高度的數據一致性;5、對於給定key,比較容易映射複雜值的環境。
NoSQL資料庫的四大分類表格分析
分類 | Examples舉例 | 典型應用場景 | 數據模型 | 優點 | 缺點 |
---|---|---|---|---|---|
鍵值(key-value) | Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB | 內容緩存,主要用於處理大量數據的高訪問負載,也用於一些日誌系統等等。 | Key 指向 Value 的鍵值對,通常用hash table來實現 | 查找速度快 | 數據無結構化,通常只被當作字元串或者二進位數據 |
列存儲資料庫 | Cassandra, HBase, Riak | 分散式的文件系統 | 以列簇式存儲,將同一列數據存在一起 | 查找速度快,可擴展性強,更容易進行分散式擴展 | 功能相對局限 |
文檔型資料庫 | CouchDB, MongoDb | Web應用(與Key-Value類似,Value是結構化的,不同的是資料庫能夠瞭解Value的內容) | Key-Value對應的鍵值對,Value為結構化數據 | 數據結構要求不嚴格,表結構可變,不需要像關係型資料庫一樣需要預先定義表結構 | 查詢性能不高,而且缺乏統一的查詢語法。 |
圖形(Graph)資料庫 | Neo4J, InfoGrid, Infinite Graph | 社交網路,推薦系統等。專註於構建關係圖譜 | 圖結構 | 利用圖結構相關演算法。比如最短路徑定址,N度關係查找等 | 很多時候需要對整個圖做計算才能得出需要的信息,而且這種結構不太好做分散式的集群方案。 |