為什么需要圖數(shù)據(jù)庫(kù)
隨著社交, 金融, 電商領(lǐng)域的飛速發(fā)展, 傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)無(wú)法滿足復(fù)雜業(yè)務(wù)的處理, 尤其是在數(shù)據(jù)間關(guān)系的關(guān)聯(lián)度, 復(fù)雜度, 深度等呈幾何級(jí)增長(zhǎng), 傳統(tǒng)的RDBMS在處理方式和處理效率上也趨于過(guò)度復(fù)雜和低效, 因此需要一種的數(shù)據(jù)庫(kù)能夠處理海量數(shù)據(jù)的復(fù)雜關(guān)系, 就是下面要介紹的圖數(shù)據(jù)庫(kù)。
幾個(gè)簡(jiǎn)單應(yīng)用場(chǎng)景
- 社交領(lǐng)域: 管理社交關(guān)系, 實(shí)現(xiàn)好友推薦
- 電商領(lǐng)域: 商品推薦
- 金融領(lǐng)域: 風(fēng)控處理, 如根據(jù)用戶社會(huì)關(guān)系, 交易記錄等在借(dai)方面進(jìn)行風(fēng)控
- 還有日常打交道的視頻推薦, 廣告推薦, 文章, 新聞推薦等等
圖數(shù)據(jù)庫(kù)對(duì)比關(guān)系型數(shù)據(jù)庫(kù)
| 關(guān)系型數(shù)據(jù)庫(kù) | 圖數(shù)據(jù)庫(kù) |
|---|---|
| 表 | 圖 |
| 行 | 節(jié)點(diǎn) |
| 列和數(shù)據(jù) | 屬性和數(shù)據(jù) |
| 約束 | 關(guān)系 |
Neo4j介紹
- 官網(wǎng): https://neo4j.com
- 文檔地址: https://neo4j.com/docs/
Neo4j是一個(gè)開(kāi)源的, 高性能的NOSQL圖形數(shù)據(jù)庫(kù),使用java語(yǔ)言開(kāi)發(fā)。
- 是世界上最先進(jìn)的圖數(shù)據(jù)庫(kù)之一,提供原生的圖數(shù)據(jù)存儲(chǔ),檢索和處理;
- 采用屬性圖模型(Property graph model),極大的完善和豐富圖數(shù)據(jù)模型;
- 專屬查詢語(yǔ)言 Cypher,直觀,高效
Neo4j的特性
- SQL使用查詢語(yǔ)言Neo4j CQL, 易上手
- 通過(guò)使用Lucence支持索引
- 支持UNIQUE約束, 支持完整的ACID原則
- 包含一個(gè)可執(zhí)行CQL命令的UI:Neo4j數(shù)據(jù)瀏覽器
- 采用原生圖形庫(kù)與本地GPE(圖形處理引擎)
- 支持查詢的數(shù)據(jù)導(dǎo)出到JSON和XLS格式
- 提供了REST API,可使用任意語(yǔ)言就行訪問(wèn)
- 提供了可以通過(guò)任何UI MVC框架(如Node JS)訪問(wèn)的Java腳本
- 支持兩種Java API:Cypher API和Native Java API來(lái)開(kāi)發(fā)Java應(yīng)用程序
Neo4j的優(yōu)點(diǎn)
- 很容易表示連接的數(shù)據(jù)
- 檢索/遍歷/導(dǎo)航更多的連接數(shù)據(jù)是非常容易和快速的
- 非常容易地表示半結(jié)構(gòu)化數(shù)據(jù)
- 不需要復(fù)雜的連接來(lái)檢索連接的/相關(guān)的數(shù)據(jù),因?yàn)樗苋菀讬z索它的相鄰節(jié)點(diǎn)或關(guān)系細(xì)節(jié)沒(méi)有連接或索引
Neo4j數(shù)據(jù)模型
Neo4j主要包含以下三個(gè)構(gòu)建元素:
-
節(jié)點(diǎn)
我們可以用社交系統(tǒng)的一個(gè)人來(lái)表示一個(gè)節(jié)點(diǎn):
image.png -
屬性
用戶會(huì)有個(gè)人資料, 如姓名, 性別, 地址, 郵箱等; 屬性用于描述節(jié)點(diǎn)和關(guān)系的鍵值對(duì), 所以說(shuō)節(jié)點(diǎn)和關(guān)系都可以設(shè)置其屬性; 其中key是一個(gè)字符串, 屬性可以使用Neo4j的任意數(shù)據(jù)類型來(lái)表示
image.png -
關(guān)系
關(guān)系是有方向性的, Neo4j關(guān)系被分為兩種主要類型: 單向關(guān)系和雙向關(guān)系
image.png
以上就是圖數(shù)據(jù)庫(kù)及Neo4j的簡(jiǎn)單介紹, 下一篇將介紹如何在Windows及docker下安裝Neo4j數(shù)據(jù)庫(kù)


