圖數據庫,顧名思義就是利用了「圖的數據結構來做爲數據存儲邏輯體現的一種數據庫」,因此要想學好圖數據庫固然須要瞭解一些關於圖數據結構的算法!一樣的做爲圖數據結構中不少經常使用的算法在圖數據庫中是默認提供支持的,對數據進行查詢、計算的操做,好比常見的最短路徑算法
、pagerank算法
等等這些算法,都是圖數據結構中常見的算法!固然了neo4j
做爲一個圖數據庫固然也會提供這些算法的實現,方便使用者對數據進行操做!
那麼圖數據結構具體又包含些什麼特色?
首先圖數據結構,最重要的就是,邊(Edge)
、頂點(Node)
、方向(Direction)
三個最基本的元素,數據主要是掛載在頂點
和邊
上,那麼邊
和方向
主要用來表示頂點和頂點之間的關係網
這樣將咱們須要分析的數據建模成爲一個網狀的模型,也就是所謂的圖
,在某些場景中邊
也會包含一些權重
值,用於表示頂點
和頂點
之間數據關係的重要性!
下面就簡單來進行模擬一個圖的數據結構,徒手來畫一個,更加直觀
算法
如上圖就是很是的一個簡單的圖結構,這裏麪包含着電影、觀衆、導演、做家,很是的直觀,固然目前的這個圖是很是簡單的圖,這種關係經過傳統的關係型數據庫
一樣是能夠進行描述的,可是關係型數據庫
在處理關係網的時候處理能力是相對弱的,並且比起圖數據庫
來講會顯得麻煩複雜同時效率低下;好比我在在很是大的一個圖中須要尋找節點之間最短路徑
,其實這種場景是很是常見的,好比QQ共同好友
這些功能就是利用了你好友列表中的關係網,同時它可以給你推送你的其餘好友中包含的好友,並且這種好友基本上你都是認識的,這就是典型的經過關係網
進行分析得出的結果,具體的分析固然看業務,並且運用的場景也會很是多!
上面這些基本上就算是基本的介紹,具體的使用場景和一些細節後面會專門在寫相關的點的文章再來回顧!
那麼說了這麼多,發現咱們的真實數據
其實是能夠在頂點上
和邊
上的,那麼邊
上的數據固然是要和頂點之間創建某種關係
或聯繫
的數據,上面的模型其實只是簡單的數據模型,那麼複雜的數據模型當中,人
的屬性是很是多的,電影
的屬性也一樣是很是多的,那麼這些定點
和邊
天然也就要承載更多的數據,因此頂點
和邊
都後掛載屬性,這樣創建出來的數據模型就會更加完整,好比人
他有電話、家庭地址、工做等等,電影一樣也會有不少屬性,這樣的話,天然而然經過對關係網的分析,其實會獲得不少有用的價值,好比給他推薦電影推薦哪裏的電影院合適
等等問題!
接下來再來講說關係型數據庫
中會存在惟一鍵
,一樣圖數據庫
中也存在惟一鍵
,頂點
和邊
都存在
根據上面所說的這些信息能夠基本分析出來,圖數據庫中的數據模型基本上就是下面內容
數據庫
Edge:[Id,Object]
Node:[Id,Object]centos
基本上就是上面的這種模型,一個圖就是由全部的頂點
和全部的邊
構成的,那麼如今暫時還不去管圖數據庫
在底層究竟是怎麼存儲數據的,其實這裏能夠提一下,其實就是把邊和頂點進行拆分,而後分別存儲,可是具體不一樣的圖數據庫
實現是不同的,上面的Object
表明的就是不斷抽象出來的屬性,因此,一個頂點
和一條邊
其實是能夠存儲不少數據的數據結構
上面這些內容基本上就說到這,後面在使用的過程當中會有更多的細節,同時會有更加深刻的瞭解,下面就是先把neo4j
環境先弄起來分佈式
neo4j
分爲社區版
和企業版
,企業版
爲收費版本,主要是支持分佈式,由於單節點的處理能力是有限的,可是收費很是高,因此在沒有資源的狀況下選擇使用社區版本,單機進行處理圖關係,固然對於大規模圖處理還有其餘的圖數據庫
或者圖數據引擎
,好比Spark Graphx
、Tian
等等,還有不少,有些大公司內部估計還有本身的內部開發的分佈式圖數據庫
,好比螞蟻金服Geabase
、google開源的cayley
等等,這裏提到了圖數據庫
和圖數據引擎
,其實兩個東西很類似可是卻又有很明顯的區別,圖數據庫
中會提供一些ACID
的支持,側重點是查詢,固然也可以分析,而且在應對一些小的數據規模也會很是好用;圖數據引擎
側重點是對關係的分析發現,查詢速度會相對於圖數據庫
沒有那麼高的實時性,而且也通常不支持ACID
的操做
下面就進行搭建neo4j
環境搭建,使用的是社區版全部就只在單機上進行安裝
安裝環境準備
centos7
、neo4j-community-3.4.12-unix.tar.gz
、jdk8
neo4j下載地址
在安裝以前須要將jdk安裝完成
,安裝jdk就不寫了google
$ tar -zxvf neo4j-community-3.4.12-unix.tar.gz
配置啓動機器ip,我這裏就配置成爲我虛擬機的ipcentos7
配置文件conf/neo4j.conf
unix
dbms.connectors.default_listen_address=192.168.56.22
上面安裝完成以後能夠關閉防火牆或者開放7474
、7687
兩個端口rest
關閉防火牆
code
$ systemctl disable firewalld $ systemctl stop firewalld
開啓neo4j服務
$ ./bin/neo4j start #開啓 $ ./bin/neo4j restart #重啓 $ ./bin/neo4j stop #關閉
啓動以後訪問http://192.168.56.22:7474/

默認用戶名和密碼都爲neo4j
輸入以後,從新設置密碼,neo4j就安裝完成了,就可以進行使用了!後面再來講如何使用吧!單機版的安裝很是簡單的!