你好,歡迎進(jìn)入江蘇優(yōu)軟數(shù)字科技有限公司官網(wǎng)!
發(fā)布時間:2023-07-03
瀏覽次數(shù):0
.com//p/.html
隨著社交網(wǎng)絡(luò)、電子商務(wù)、金融、零售、物聯(lián)網(wǎng)等行業(yè)的快速發(fā)展,現(xiàn)實世界中編織了一個龐大而復(fù)雜的關(guān)系網(wǎng)絡(luò),傳統(tǒng)數(shù)據(jù)庫很難處理關(guān)系操作。
大數(shù)據(jù)行業(yè)中需要處理的數(shù)據(jù)之間的關(guān)系隨著數(shù)據(jù)量的增加呈幾何級數(shù)減少。 迫切需要一種支持海量復(fù)雜數(shù)據(jù)關(guān)系操作的數(shù)據(jù)庫,圖數(shù)據(jù)庫應(yīng)運而生。
世界上許多知名公司都在使用圖數(shù)據(jù)庫。 例如:
既然圖數(shù)據(jù)庫應(yīng)用如此廣泛,越來越多的企業(yè)和開發(fā)者開始使用它,那么它有哪些優(yōu)勢呢? 讓我們揭開它的神秘面紗。
為什么選擇圖數(shù)據(jù)庫?
學(xué)過數(shù)據(jù)結(jié)構(gòu)課程的朋友,腦子里應(yīng)該或多或少都有圖的概念。
什么是圖表?
圖由兩個元素組成:節(jié)點和關(guān)系。
每個節(jié)點代表一個實體(人、地點、事物、類別或其他數(shù)據(jù)),每個關(guān)系代表兩個節(jié)點的關(guān)聯(lián)形式。
這種通用結(jié)構(gòu)可以對各種場景進(jìn)行建模 - 從道路系統(tǒng)、設(shè)備網(wǎng)絡(luò)、人口路線或由關(guān)系定義的任何其他內(nèi)容。
什么是圖數(shù)據(jù)庫?
「圖數(shù)據(jù)庫(Graph)」并不是指存儲圖片的數(shù)據(jù)庫,而是以圖的數(shù)據(jù)結(jié)構(gòu)來存儲和查詢數(shù)據(jù)。
圖數(shù)據(jù)庫是一種在線數(shù)據(jù)庫管理系統(tǒng),用于處理圖數(shù)據(jù)模型的創(chuàng)建、讀取、更新和刪除 (CRUD) 操作。
與其他數(shù)據(jù)庫不同,關(guān)系在圖數(shù)據(jù)庫中占據(jù)主導(dǎo)地位。 這意味著應(yīng)用程序不必使用字段或帶外處理(例如)來推斷數(shù)據(jù)連接。
與關(guān)系數(shù)據(jù)庫或其他NoSQL數(shù)據(jù)庫相比,圖數(shù)據(jù)庫的數(shù)據(jù)模型也更簡單、更具表現(xiàn)力。
圖形數(shù)據(jù)庫專為與事務(wù) (OLTP) 系統(tǒng)一起使用而構(gòu)建,并且在設(shè)計時考慮了事務(wù)完整性和操作可用性。
兩個重要屬性
根據(jù)存儲和處理模型的不同,市面上的圖數(shù)據(jù)庫也存在一些區(qū)別。
例如:
Neo4J 是一個原生圖形數(shù)據(jù)庫。 它使用的前端存儲是專門針對Neo4J等圖數(shù)據(jù)庫定制和優(yōu)化的。 理論上來說,可以更有利于圖數(shù)據(jù)庫的性能。
將數(shù)據(jù)存儲在其他系統(tǒng)(例如 Hbase)上,而不是本地圖形數(shù)據(jù)庫。
① 圖像存儲
一些圖數(shù)據(jù)庫使用本機圖存儲,該存儲是專門為存儲和管理圖而優(yōu)化和設(shè)計的。
并非所有圖數(shù)據(jù)庫都使用原生圖存儲,有些圖數(shù)據(jù)庫將圖數(shù)據(jù)序列化,然后將其保存到關(guān)系數(shù)據(jù)庫或面向?qū)ο髷?shù)據(jù)庫,或其他通用數(shù)據(jù)存儲中。
② 圖處理引擎
本機圖形處理(也稱為無索引鄰接)是處理圖形數(shù)據(jù)的最有效方法,因為連接的節(jié)點在數(shù)學(xué)上彼此指向數(shù)據(jù)庫中。 非原生圖處理使用其他方式來處理 CRUD 操作。
與 NoSQL 數(shù)據(jù)庫對比
NoSQL數(shù)據(jù)庫大致可以分為四類:
與關(guān)系型數(shù)據(jù)庫相比
關(guān)系數(shù)據(jù)庫其實不擅長處理關(guān)系。 在很多場景下,你的業(yè)務(wù)需求完全超出了當(dāng)前的數(shù)據(jù)庫架構(gòu)。
舉個栗子:假設(shè)關(guān)系數(shù)據(jù)庫中有幾個用戶、訂單、產(chǎn)品表:
當(dāng)我們要查詢:“用戶是否訂購了這些產(chǎn)品?” 或“有顧客購買過該產(chǎn)品嗎?” 開發(fā)人員需要JOIN多個表,效率非常低。
以及“購買該產(chǎn)品的顧客還訂購了什么?” 類似的查詢幾乎不可能實現(xiàn)。
關(guān)系查詢性能比較
作為數(shù)據(jù)關(guān)系的核心,圖數(shù)據(jù)庫在查詢率方面非常高效,即使對于深度和復(fù)雜的查詢也是如此。 在《Neo4j in》一書中,作者在關(guān)系數(shù)據(jù)庫和圖數(shù)據(jù)庫(Neo4j)之間進(jìn)行了實驗。
他們的實驗試圖在社交網(wǎng)絡(luò)中找到最大深度為 5 的朋友的朋友。 他們的數(shù)據(jù)集包括 100 萬人,每人大約有 50 名同事。
實驗結(jié)果如下:
當(dāng)深度為2時(即朋友的朋友),兩個數(shù)據(jù)庫的性能差異并不明顯; 當(dāng)深度為3時(即同學(xué)的同事)intellij idea 數(shù)據(jù)庫關(guān)系圖,很明顯關(guān)系型數(shù)據(jù)庫的響應(yīng)時間為30s,這已經(jīng)是無法接受的; 當(dāng)深度達(dá)到4時,關(guān)系型數(shù)據(jù)庫返回結(jié)果需要近半小時,難以應(yīng)用到線上系統(tǒng); 當(dāng)深度達(dá)到5時,關(guān)系數(shù)據(jù)庫已經(jīng)無法完成查詢。
對于圖數(shù)據(jù)庫Neo4J,深度范圍為3到5,其響應(yīng)時間在3秒以內(nèi)。
可見,對于圖數(shù)據(jù)庫來說,數(shù)據(jù)量越大,關(guān)聯(lián)查詢就越復(fù)雜,有利于凸顯其優(yōu)勢。 從深度為4/5的查詢結(jié)果可以看出,圖數(shù)據(jù)庫返回了整個社交網(wǎng)絡(luò)中超過一半的人。
Neo4J 和
根據(jù)DB-發(fā)布的最新圖數(shù)據(jù)庫排名,Neo4J依然領(lǐng)先,位居第一:
新4J
Neo4J 是一個用 Java 實現(xiàn)的開源圖數(shù)據(jù)庫。 它從 2003 年開始開發(fā),直到 2007 年第一個版本即將發(fā)布,并托管在 .
Neo4J 支持 ACID、集群、備份和故障轉(zhuǎn)移。 目前Neo4J最新版本是3.5,分為社區(qū)版和企業(yè)版。 社區(qū)版僅支持單機部署,功能有限。 企業(yè)版支持主從復(fù)制和讀寫分離,并包含可視化管理工具。
是Linux基金會下的開源分布式圖數(shù)據(jù)庫。 提供 .0 軟件許可證。 該項目由 IBM 支持。
它是由圖數(shù)據(jù)庫改來的,從2012年開始開發(fā),目前最新版本是0.3.1。
支持多種存儲前端(包括、HBase、DB)。 可擴展性取決于所使用的底層技術(shù)。
例如,通過將其用作存儲前端,可以輕松擴展到多個數(shù)據(jù)中心。
通過與大數(shù)據(jù)平臺(Spark、、)集成,支持全局圖數(shù)據(jù)的分析、報告和ETL。
通過外部索引存儲(Solr、)支持地理、數(shù)字范圍和全文搜索。
標(biāo)記屬性圖模型
(1)節(jié)點
節(jié)點是主要的數(shù)據(jù)元素
節(jié)點通過關(guān)系與其他節(jié)點連接
節(jié)點可以具有一個或多個屬性(即,存儲為鍵/值對的屬性)
節(jié)點有一個或多個標(biāo)簽來描述它們在圖中的角色
示例:人員節(jié)點與汽車節(jié)點
(二)關(guān)系
關(guān)系連接兩個節(jié)點 關(guān)系是有向的 節(jié)點可以有多個甚至遞歸關(guān)系 關(guān)系可以有一個或多個屬性(即存儲為鍵/值對的屬性)
(3)屬性
屬性是命名值,其中名稱(或鍵)是字符串
屬性可以被索引和約束
可以根據(jù)多個屬性創(chuàng)建復(fù)合索引
(4)標(biāo)簽
標(biāo)簽用于對節(jié)點進(jìn)行分組
一個節(jié)點可以有多個標(biāo)簽
索引標(biāo)簽以加快在圖中查找節(jié)點的速度
針對速度進(jìn)行優(yōu)化的本機標(biāo)簽索引
圖查詢語言
Neo4j 的圖形查詢語言允許用戶在圖形數(shù)據(jù)庫中存儲和檢索數(shù)據(jù)。
例如,我們想要找到 Joe 的所有二級好友:
查詢語句如下:
MATCH
(person:Person)-[:KNOWS]-(friend:Person)-[:KNOWS]-
(foaf:Person)
WHERE
person.name = "Joe"
AND NOT (person)-[:KNOWS]-(foaf)
RETURN
foaf
喬認(rèn)識莎莉,莎莉也認(rèn)識安娜。 鮑勃被排除在結(jié)果之外,因為他除了通過莎莉成為二等同學(xué)之外,還是一等同學(xué)。
概括
圖數(shù)據(jù)庫響應(yīng)了當(dāng)今宏觀商業(yè)世界的主要趨勢:通過高度相關(guān)、復(fù)雜和動態(tài)的數(shù)據(jù)獲得洞察力和競爭優(yōu)勢。 越來越多的國內(nèi)公司開始涉足圖數(shù)據(jù)庫領(lǐng)域,開發(fā)自己的圖數(shù)據(jù)庫系統(tǒng)。
對于任何具有一定大小或值的數(shù)據(jù)intellij idea 數(shù)據(jù)庫關(guān)系圖,圖數(shù)據(jù)庫是表示和查詢該關(guān)系數(shù)據(jù)的最佳形式。 理解和分析此類圖表的能力將成為未來企業(yè)的核心競爭力。
精彩推薦
一百期Java面試題匯總 SpringBoot內(nèi)容聚合 IntelliJ IDEA內(nèi)容聚合 Mybatis內(nèi)容聚合
歡迎長按下圖關(guān)注公眾號后端技術(shù)精選
如有侵權(quán)請聯(lián)系刪除!
Copyright ? 2023 江蘇優(yōu)軟數(shù)字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服務(wù)提供商
13262879759
微信二維碼