圖數(shù)據(jù)庫(kù)Neo4j簡(jiǎn)介
什么是圖數(shù)據(jù)庫(kù)(Graph Database)
隨著社交、電商金融、零售、物聯(lián)網(wǎng)的快速發(fā)展,現(xiàn)實(shí)社會(huì)支起了一張張龐大二復(fù)雜的關(guān)系網(wǎng),傳統(tǒng)數(shù)據(jù)庫(kù)很難處理關(guān)系運(yùn)算,急需一種支持海量復(fù)雜數(shù)據(jù)關(guān)系運(yùn)算的數(shù)據(jù)庫(kù),圖數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。
圖數(shù)據(jù)庫(kù)是基于圖論實(shí)現(xiàn)的一種Nosql數(shù)據(jù)庫(kù),起數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)查詢(xún)方式都是以圖論為基礎(chǔ),主要用于存儲(chǔ)更多的連接數(shù)據(jù)。如下圖:
Neo4j
Neo4j是一個(gè)開(kāi)源的NoSql圖數(shù)據(jù)庫(kù),2003年開(kāi)始開(kāi)發(fā),使用scala和java語(yǔ)言,2007年開(kāi)始發(fā)布。
- 世界上最先進(jìn)的圖數(shù)據(jù)庫(kù)之一,提供原生的圖數(shù)據(jù)存儲(chǔ),檢索和處理
- 采用屬性圖模型(Property graph mode),幾個(gè)的完善和豐富圖數(shù)據(jù)模型
- 專(zhuān)屬查詢(xún)語(yǔ)言Cypher,直觀(guān),高效
官網(wǎng):https://neo4j.com/
Neo4j的特性:
- SQL就像簡(jiǎn)單的查詢(xún)語(yǔ)言Neo4j CQL
- 遵循屬性圖數(shù)據(jù)模型
- 通過(guò)使用Apache Lucence 支持索引
- 支持UNIQUE約束
- 包含一個(gè)用于執(zhí)行的CQL命令UI:Neo4j數(shù)據(jù)瀏覽器
- 支持完整的ACID(原子性,一致性,隔離性和持久性)規(guī)則
- 采用原生圖形庫(kù)與本地GPE(圖形處理引擎)
- 支持查詢(xún)的數(shù)據(jù)導(dǎo)出到JSON和XLS格式
- 提供了REST API,可以被任何編程語(yǔ)言(JAVA,PYTHON,GO.NET等)
- 提供了可以通過(guò)任何UI MVC框架(NODE JS)訪(fǎng)問(wèn)java腳本
- 支持兩種java api:Cypher API和Navicat Java API來(lái)開(kāi)發(fā)Java應(yīng)用程序
Neo4j的優(yōu)點(diǎn):
- 很容易表示連接的數(shù)量
- 檢索、遍歷、導(dǎo)航更多的連接數(shù)量時(shí)非常容易和快捷的
- 非常容易地表示半結(jié)構(gòu)化數(shù)據(jù)
- Neo4j CQL查詢(xún)語(yǔ)言是人性化可讀格式,非常容易學(xué)習(xí)
- 使用簡(jiǎn)單而強(qiáng)大的數(shù)據(jù)模型
- 不需要復(fù)雜的連接來(lái)檢索連接相關(guān)的數(shù)據(jù),因?yàn)樗苋菀讬z索它的相鄰節(jié)點(diǎn)或關(guān)系細(xì)節(jié)沒(méi)有連接或索引
Noe4j數(shù)據(jù)模型
圖論基礎(chǔ)
圖是一組節(jié)點(diǎn)和連接這些節(jié)點(diǎn)的關(guān)系,圖形以屬性的形式將數(shù)據(jù)存儲(chǔ)在節(jié)點(diǎn)和關(guān)系中,屬性是用于表示數(shù)據(jù)的鍵值對(duì)。
在圖論中,我們可以表示一個(gè)帶有圓的節(jié)點(diǎn),節(jié)點(diǎn)之間的關(guān)系用一個(gè)箭頭標(biāo)記表示。最簡(jiǎn)單的圖是單個(gè)節(jié)點(diǎn):
我們可以使用節(jié)點(diǎn)表示社交網(wǎng)絡(luò)(比如CSDN個(gè)人資料),它不包含任何屬性,像CSDN個(gè)人資料添加一些屬性:
在兩個(gè)節(jié)點(diǎn)直接創(chuàng)建關(guān)系
此處在兩個(gè)配置文件之間創(chuàng)建關(guān)系名稱(chēng)“跟隨”,這意味著profile1遵循profile2
屬性圖模型
Neo4j圖數(shù)據(jù)庫(kù)遵循屬性圖模型來(lái)存儲(chǔ)和管理數(shù)據(jù)。
屬性圖模型規(guī)則:
- 表示節(jié)點(diǎn),關(guān)系和屬性中的數(shù)據(jù)
- 節(jié)點(diǎn)和關(guān)系都包含屬性
- 關(guān)系連接節(jié)點(diǎn)
- 屬性是鍵值對(duì)
- 節(jié)點(diǎn)用圖圈表示,關(guān)系用方向鍵表示
- 關(guān)系具有方向:?jiǎn)蜗蚝碗p向
- 每個(gè)關(guān)系包含"開(kāi)始節(jié)點(diǎn)"或"從節(jié)點(diǎn)"和"從節(jié)點(diǎn)"或結(jié)束節(jié)點(diǎn)
在屬性圖數(shù)據(jù)模型中,關(guān)系應(yīng)該是定向的,如果我們嘗試創(chuàng)建沒(méi)有方向的關(guān)系,那么將拋出一個(gè)錯(cuò)誤消息,在Neo4j中,關(guān)系也是有方向的。
Neo4j圖數(shù)據(jù)庫(kù)將其所有數(shù)據(jù)存儲(chǔ)在節(jié)點(diǎn)和關(guān)系中,我們不需要任何額外的RDBMS數(shù)據(jù)庫(kù)或NoSQL數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)Neo4j數(shù)據(jù)庫(kù)數(shù)據(jù),它以圖形的形式存儲(chǔ)數(shù)據(jù)。Neo4j使用本機(jī)GPE(圖形處理引擎)來(lái)使用它的本地圖存儲(chǔ)格式。
圖數(shù)據(jù)庫(kù)數(shù)據(jù)模型的主要構(gòu)建塊是:
- 節(jié)點(diǎn)
- 關(guān)系
- 屬性
簡(jiǎn)單的屬性圖的例子:
Neo4j的構(gòu)建元素
Neo4j圖數(shù)據(jù)庫(kù)主要有以下構(gòu)建元素:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-836656.html
- 節(jié)點(diǎn)(Node):是圖數(shù)據(jù)庫(kù)中的一個(gè)基本元素,用來(lái)表示一個(gè)實(shí)體記錄,就像mysql中的一條記錄一樣,一個(gè)節(jié)點(diǎn)(Node)可以有多個(gè)屬性(properties)和多個(gè)標(biāo)簽(label)。
- 節(jié)點(diǎn)是最主要的數(shù)據(jù)元素
- 節(jié)點(diǎn)可以通過(guò)關(guān)系連接到其它節(jié)點(diǎn)
- 節(jié)點(diǎn)可以具有多個(gè)屬性(鍵值對(duì))
- 節(jié)點(diǎn)可以由多個(gè)標(biāo)簽,用于描述其在圖表中的作用,比如一個(gè)人的標(biāo)簽可以是父親,也可以是兒子,也可以是朋友
- 屬性(Property):是用于描述節(jié)點(diǎn)和關(guān)系的鍵值對(duì),key是一個(gè)字符串,值可以通過(guò)任何Neo4j數(shù)據(jù)類(lèi)型來(lái)表示。
- 屬性是命名值,其中名稱(chēng)是字符串
- 屬性可以被索引和約束
- 可以多個(gè)屬性創(chuàng)建復(fù)合索引
- 關(guān)系(Relationship):同樣的圖數(shù)據(jù)庫(kù)的基本元素,當(dāng)數(shù)據(jù)庫(kù)中已經(jīng)存在節(jié)點(diǎn)后,需要將節(jié)點(diǎn)連接起來(lái)構(gòu)成圖。關(guān)系就是用來(lái)連接兩個(gè)節(jié)點(diǎn),關(guān)系也稱(chēng)為圖論中的"邊",關(guān)系和節(jié)點(diǎn)一樣可以由多個(gè)屬性,但是只能有一個(gè)類(lèi)型(Type)
- 標(biāo)簽(Lable):是將一個(gè)公共名稱(chēng)與一組節(jié)點(diǎn)或者關(guān)系相連,我們可以為現(xiàn)有的節(jié)點(diǎn)或關(guān)系中添加標(biāo)簽也可以刪除標(biāo)簽
- 數(shù)據(jù)瀏覽器(后面更新部署安裝的時(shí)候再說(shuō))
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-836656.html
Neo4j的使用場(chǎng)景
- 欺詐檢測(cè),比如你接到某個(gè)陌生電話(huà)或者陌生短信,就會(huì)收到官方的防欺詐提醒通知
- 實(shí)時(shí)推薦引擎
- 知識(shí)圖譜
到了這里,關(guān)于圖數(shù)據(jù)庫(kù)Neo4j簡(jiǎn)介的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!