全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)技術(shù)文章正文

如何使用Neo4j構(gòu)建人物關(guān)系圖?[Javaee培訓(xùn)]

更新時(shí)間:2020-04-03 來(lái)源:黑馬程序員 瀏覽量:

一、數(shù)據(jù)庫(kù)的分類(lèi)

1. 關(guān)系型數(shù)據(jù)庫(kù)

關(guān)系型數(shù)據(jù)庫(kù),是指采用了關(guān)系模型來(lái)組織數(shù)據(jù)的數(shù)據(jù)庫(kù),其以行和列的形式存儲(chǔ)數(shù)據(jù),以便于用戶(hù)理解,關(guān)系型數(shù)據(jù)庫(kù)這一系列的行和列被稱(chēng)為表,一組表組成了數(shù)據(jù)庫(kù)。用戶(hù)通過(guò)查詢(xún)來(lái)檢索數(shù)據(jù)庫(kù)中的數(shù)據(jù),而查詢(xún)是一個(gè)用于限定數(shù)據(jù)庫(kù)中某些區(qū)域的執(zhí)行代碼。關(guān)系模型可以簡(jiǎn)單理解為二維表格模型,而一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表及其之間的關(guān)系組成的一個(gè)數(shù)據(jù)組織。主流的關(guān)系型數(shù)據(jù)庫(kù)有Oracle、DB2、MySQL、SQL Server等。

2. 非關(guān)系型數(shù)據(jù)庫(kù)

非關(guān)系型數(shù)據(jù)庫(kù),也稱(chēng)為NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在處理web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類(lèi)型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,出現(xiàn)了很多難以克服的問(wèn)題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類(lèi)帶來(lái)的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。常見(jiàn)的非關(guān)系型數(shù)據(jù)庫(kù)按照分類(lèi)有:

鍵值(Key-Value): Redis、Memcached、Oracle BDB

列存儲(chǔ)數(shù)據(jù)庫(kù):Cassandra、HBase、 Riak

文檔型數(shù)據(jù)庫(kù):MongoDB、SequoiaDB

圖形數(shù)據(jù)庫(kù):Neo4J、JanusGraph、TigerGraph

二、 Neo4j

2.1 什么是Neo4j

Neo4j是一個(gè)高性能的NOSQL圖形數(shù)據(jù)庫(kù),它將結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)上而不是表中。它是一個(gè)嵌入式的、基于磁盤(pán)的、具備完全的事務(wù)特性的Java持久化引擎,但是它將結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)(從數(shù)學(xué)角度叫做圖)上而不是表中。Neo4j也可以被看作是一個(gè)高性能的圖引擎,該引擎具有成熟數(shù)據(jù)庫(kù)的所有特性。簡(jiǎn)單來(lái)說(shuō)Neo4j是一個(gè)開(kāi)源的基于Java開(kāi)發(fā),運(yùn)行于JVM之上。

2.2 Neo4j的數(shù)據(jù)結(jié)構(gòu)

在一個(gè)圖中包含兩種基本的數(shù)據(jù)類(lèi)型:Nodes**(節(jié)點(diǎn))** 和 Relationships**(關(guān)系)。Nodes** 和 Relationships 包含key/value形式的屬性。Nodes通過(guò)Relationships所定義的關(guān)系相連起來(lái),形成關(guān)系型網(wǎng)絡(luò)結(jié)構(gòu)。

Neo4j01


2.3 社區(qū)版和企業(yè)版區(qū)別

1)社區(qū)版限制

節(jié)點(diǎn):320 億

關(guān)系:320 億

屬性:640 億

2)企業(yè)版與社區(qū)版都有的功能

·Property Graph Model(屬性圖模型)

·Native Graph Processing & Storage(本地圖形處理和存儲(chǔ))

·ACID(事務(wù)管理)

·Cypher – Graph Query Language(支持Cypher圖查詢(xún)語(yǔ)句)

·REST API(Restful風(fēng)格的api)

·High-Performance Native API(本機(jī)高性能api)

·HTTPS

3)企業(yè)版獨(dú)有的功能

·集群(水平伸縮/高可用)

社區(qū)版不支持集群等高可用配置,只有單機(jī)。

·基于用戶(hù)和角色的訪(fǎng)問(wèn)控制

社區(qū)版在安全管理方面相比企業(yè)版而言,功能較弱,僅提供用戶(hù)和密碼管理,沒(méi)有涉及角色、權(quán)限控制等企業(yè)必需的安全管理功能。

·熱備份

社區(qū)版不支持熱備份(neo4j-backup),只有企業(yè)版才有這個(gè)工具。

·日志功能

社區(qū)版本沒(méi)有安全日志功能,Neo4j提供安全日志和查詢(xún)?nèi)罩緝煞N,用于記錄數(shù)據(jù)庫(kù)的查詢(xún)和發(fā)生的安全事件,但僅在企業(yè)版才支持。

·查詢(xún)管理

可以設(shè)置事務(wù)超時(shí)時(shí)間,以及列出運(yùn)行的查詢(xún),可以選擇性終止一個(gè)或多個(gè)查詢(xún)。

·診斷及調(diào)優(yōu)工具

JMX日志和監(jiān)控,包含Graphite JMX客戶(hù)端

·垂直伸縮(超過(guò)4核)

支持超過(guò)4個(gè)以上的CPU核心,對(duì)于超過(guò)4核的CPU提供高度優(yōu)化的并行圖算法執(zhí)行過(guò)程。

·鎖管理

對(duì)于超過(guò)4核的CPU系統(tǒng)提供更加高效的寫(xiě)入鎖機(jī)制以增加并發(fā)處理能力

·Cypher查詢(xún)追蹤

對(duì)正在運(yùn)行的查詢(xún)進(jìn)行狀態(tài)跟蹤和管理(例如強(qiáng)制結(jié)束查詢(xún)的運(yùn)行)

·企業(yè)級(jí)監(jiān)控

更全面的監(jiān)控插件以及日志輸出,社區(qū)版本僅有http日志,企業(yè)版包含了GC、Security日志。

·世界級(jí)支持

有錢(qián)啥都好說(shuō)......

4)企業(yè)版報(bào)價(jià)

套餐(服務(wù)器 x 內(nèi)核) 價(jià)格(萬(wàn)美元/年)

3 x 8 = 19.9(萬(wàn)美元/年)

3 x 4 = 9.9(萬(wàn)美元/年)

2 x 4 = 6.8(萬(wàn)美元/年)

1 x 4 = 3.6(萬(wàn)美元/年)

這里需要注意neo4j的企業(yè)報(bào)價(jià)不僅和機(jī)器數(shù)量有關(guān)還與CPU核數(shù)掛鉤。

2.4 Neo4j 使用

1)環(huán)境

Java:jdk1.8

Neo4j: neo4j3.5.7

2)安裝

資料包:https://pan.baidu.com/s/1cA49NnqzQp0Z9QQdCX9GGw

·jdk安裝

·neo4j安裝

下載地址:https://neo4j.com/download-center/#releases

·簡(jiǎn)單使用

通過(guò)瀏覽器訪(fǎng)問(wèn)圖庫(kù),默認(rèn)賬密: neo4j/neo4j,會(huì)提示你修改密碼

Neo4j02

Neo4j03


正確的打開(kāi)姿勢(shì)

Neo4j04

查詢(xún)圖庫(kù)并限制返回個(gè)數(shù)

MATCH (n) RETURN n LIMIT 25


Neo4j05


如果這時(shí)候張寶寶想要找亮平辦點(diǎn)兒事情應(yīng)該怎么托關(guān)系呢?我們通過(guò)關(guān)系圖譜可以看到有n個(gè)方法可以實(shí)現(xiàn),那么為了追求效率肯定是“求最少的人辦最多的事兒”,這個(gè)時(shí)候就要用到我們的最短路徑算法了,放心圖庫(kù)中已經(jīng)自帶了。

Neo4j06

match p=shortestpath((u1:User{name:'張寶寶'})-[*]-(u2:User{name:'侯亮平'})) return p

Neo4j08


2.5 Neo4j應(yīng)用場(chǎng)景

·金融行業(yè)應(yīng)用

反欺詐已經(jīng)是金融行業(yè)一個(gè)核心應(yīng)用,通過(guò)圖數(shù)據(jù)庫(kù)可以對(duì)不同的個(gè)體、團(tuán)體做關(guān)聯(lián)分析,從人物在指定時(shí)間內(nèi)的行為,例如去過(guò)地方的IP地址、曾經(jīng)使用過(guò)的MAC地址(包括手機(jī)端、PC端、WIFI等)、社交網(wǎng)絡(luò)的關(guān)聯(lián)度分析,同一時(shí)間點(diǎn)是否曾經(jīng)在同一地理位置附近出現(xiàn)過(guò),銀行賬號(hào)之間是否有歷史交易信息等。


Neo4j07

·社交網(wǎng)絡(luò)圖譜

在社交網(wǎng)絡(luò)中,公司、員工、技能的信息,這些都是節(jié)點(diǎn),它們之間的關(guān)系和朋友之間的關(guān)系都是邊,在這里面圖數(shù)據(jù)庫(kù)可以做一些非常復(fù)雜的公司之間關(guān)系的查詢(xún)。比如說(shuō)公司到員工、員工到其他公司,從中找類(lèi)似的公司、相似的公司,都可以在這個(gè)系統(tǒng)內(nèi)完成。

·企業(yè)關(guān)系圖譜

圖數(shù)據(jù)庫(kù)可以對(duì)各種企業(yè)進(jìn)行信息圖譜的建立,包括最基本的工商信息,包括何時(shí)注冊(cè)、誰(shuí)注冊(cè)、注冊(cè)資本、在何處辦公、經(jīng)營(yíng)范圍、高管架構(gòu)。圍繞企業(yè)的經(jīng)營(yíng)范圍,繼續(xù)細(xì)化去查詢(xún)企業(yè)究竟有哪些產(chǎn)品或服務(wù),例如通過(guò)企業(yè)名稱(chēng)查詢(xún)到企業(yè)的自媒體,從而給予其更多關(guān)注和了解。另外也包括對(duì)企業(yè)的產(chǎn)品和服務(wù)的數(shù)據(jù)關(guān)聯(lián),查看該企業(yè)有沒(méi)有令人信服的自主知識(shí)產(chǎn)權(quán)和相關(guān)資質(zhì)來(lái)支撐業(yè)務(wù)的開(kāi)展。

企業(yè)在日常經(jīng)營(yíng)中,與客戶(hù)、合作伙伴、渠道方、投資者都會(huì)打交道,這也決定了企業(yè)對(duì)社會(huì)各個(gè)領(lǐng)域都廣有涉獵,呈現(xiàn)面錯(cuò)綜復(fù)雜,因此可以通過(guò)企業(yè)數(shù)據(jù)圖譜來(lái)查詢(xún),層層挖掘信息?;趫D數(shù)據(jù)的企業(yè)信息查詢(xún)可以真正了解企業(yè)的方方面面,而不再是傳統(tǒng)單一的工商信息查詢(xún)。

2.6 思考

以上只是neo4j圖數(shù)據(jù)庫(kù)的基本安裝、簡(jiǎn)單使用以及應(yīng)用場(chǎng)景,那么我們?cè)撊绻煤脠D數(shù)據(jù)庫(kù),如何去定義自己的圖模型、編寫(xiě)圖庫(kù)語(yǔ)句以及圖庫(kù)如何用我們的java代碼來(lái)操作了?請(qǐng)關(guān)注下期出品。


猜你喜歡:

傳智播客Java實(shí)戰(zhàn)項(xiàng)目紀(jì)實(shí):java實(shí)戰(zhàn)項(xiàng)目過(guò)程再現(xiàn)

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!