NoSQL 非關係型數據庫


NoSQL

1. NoSQL 介紹

  • NoSQL(Not-Only SQL),泛指非關係型的數據庫,它可以作爲關係型數據庫的良好補充。
  • 關係型數據庫與非關係型數據庫的比較:
    在這裏插入圖片描述
  • 互聯網產品的特點:高併發、高可用、高性能、海量數據。傳統的關係型數據庫出現了性能和擴展的瓶頸,所以非關係型數據庫應時而生,解決了互聯網產品的三高和海量數據的問題。
  • NoSQL 和關係型的數據庫是互補關係,在各自的應用場景中都有自己的特點,一般情況下我們使用關係型數據庫持久化數據(處理複雜的業務場景),對一些熱點數據通過 NoSQL 來作爲緩存提高效率。
    請添加圖片描述

2. NoSQL 的主流產品

分類 特點 代表產品
鍵值存儲(Key-Value-stores) 數據一般存在內存中,讀寫速度快(10w/s),適合作爲緩存服務 Redis
文檔型數據庫(Document-stores) 數據結構要求不嚴格,適合存儲結構不確定或者價值較低的數據 MongDB
列存儲數據庫(BigTable-implementations) 查找速度快,更容易進行分佈式擴展,適合作爲文件存儲服務 Hbase
圖形數據庫(Graph Database) 使用“圖結構”進行存儲,適合做社交網絡計算等等 Neo4j

3. 圖形數據庫

a. 圖形數據庫介紹

  • 在 NoSQL 四種分類中,圖數據庫從最近十年的表現來看已經成爲關注度最高,也是發展趨勢最明顯的數據庫類型。下圖就是 db-engines.com 對圖形數據庫發展趨勢的分析結果:
    在這裏插入圖片描述

b. 二度人脈的概念

  • 如果把你的微信好友作爲一度人脈的話,那麼你微信好友的好友就屬於你的二度人脈,而你微信好友的好友的好友就是你的三度人脈,畫個圖簡單看一下:
    在這裏插入圖片描述
  • 通常情況下我們所指的二度人脈基本都是一個泛指,泛指除了一度人脈之外的所有關聯的人脈關係,如:三度、四度、五度甚至六度人脈等。那麼應該如何實現推薦二度人脈這個功能呢?
  • 運用關係型數據庫,可以很輕鬆的實現一個推薦二度人脈的數據庫表設計和代碼實現。數據庫首先有一個用戶表 user,用於表示用戶的基本信息,然後一個有一個好友表 user_friends,用於表示好友之間的關係。查找你的一度人脈就是直接根據你的用戶 ID 到 user_friends 表中查找好友的 ID;查找你的二度人脈是先根據你的用戶 ID 去 user_friends 表中先查出來你的一度人脈,然後得到所有一度人脈的用戶 ID,然後根據這些所有一度人脈的用戶 ID 再去 user_friends 中查找他的好友。那麼如果查找三度、四度、五度人脈該怎麼辦?

c. 圖形數據庫原理

  • 圖數據庫源起歐拉和圖理論,也可稱爲面向/基於圖的數據庫,對應的英文是 Graph Database。圖數據庫的基本含義是以“圖”這種數據結構存儲和查詢數據,而不是存儲圖片的數據庫。它的數據模型主要是以節點和關係(邊)來體現,也可處理鍵值對。它的優點是快速解決複雜的關係問題。
  • 圖可以說是頂點和邊的集合,或者說更簡單一點兒,圖就是一些節點和關聯這些節點的聯繫(relationship)的集合。
  • 在圖計算中,基本的數據結構表達就是:
G=(V, E) 
V=vertex(節點) 
E=edge(邊)
  • 圖數據庫名字的由來其實與其在底層的存儲方式有關,Neo4j 底層會以圖的方式把用戶定義的節點以及關係存儲起來,通過這種方式,可以高效的實現從某個節點開始,通過節點與節點間關係,找出兩個節點間的聯繫。
    在這裏插入圖片描述
  • 說到節點和關係,就必須引出一個非常重要的概念,屬性圖模型(Property Graph Model)。如下所示:
    在這裏插入圖片描述
  1. 一個圖中會記錄節點和關係
  2. 關係可以用來關聯兩個節點
  3. 節點和關係都可以擁有自己的屬性
  4. 可以賦予節點多個標籤(類別)
  • 舉例說明:
    在這裏插入圖片描述

d. 圖數據庫 Neo4j

  • 目前市面上有很多圖數據庫,例如:Neo4J、ArangoDB、OrientDB、FlockDB、GraphDB、InfiniteGraph、Titan、Cayley 等,但目前較爲活躍可以稱之爲代表的當屬 Neo4j。
  • Neo4j 官方地址:https://neo4j.com/
  • Neo4j 的安裝使用很簡單,如果是 Window 平臺的話直接安裝就可以,然後配置一下環境變量即可使用。具體可以參考:在 Windows 環境中安裝 Neo4j

e. 圖形數據庫總結

  • 圖數據庫它善於處理大量的、複雜的、互聯的、多變的網狀數據,其效率遠遠高於傳統的關係型數據庫的百倍、千倍甚至萬倍。圖數據庫特別適用於社交網絡、實時推薦、銀行交易環路、金融徵信系統等廣泛的領域。

原文鏈接:https://qwert.blog.csdn.net/article/details/106290334

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章