成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

人人都在談的圖數據庫到底是個啥?

運維 數據庫運維
圖數據庫,如果是剛接觸的人,可能會被其字面意思所誤導。其實,圖數據庫并不是指存儲圖片、圖像的數據庫,而是指存儲圖這種數據結構的數據庫。那么圖又是什么呢?

[[400438]]

近些年來,在大數據處理過程中有一種被廣泛提及和使用的數據庫,那就是圖數據庫。那么圖數據庫究竟是什么呢?

圖數據庫,如果是剛接觸的人,可能會被其字面意思所誤導。其實,圖數據庫并不是指存儲圖片、圖像的數據庫,而是指存儲圖這種數據結構的數據庫。那么圖又是什么呢?

什么是圖

我們通過下面的例子來認識一下。

東漢末年,孫權、劉備聯軍曾在赤壁一帶以火攻敵船之計大破曹軍。

如果我們把各陣營之間的關系抽象一下,以陣營作為點,陣營之間的關系作為邊,這樣我們就可以用如下的圖來形象地表示上述關系:

以上就是這里所謂的圖(的可視化展示)。

我們把這種存儲實體和實體之間關系的數據結構,稱為圖,Graph,圖由點和邊組成,一個點就是一個實體,比如上述實例中的陣營,兩個實體之間的關系則用有方向或無方向的邊來表示,比如劉備和孫權之間的聯盟關系等。這種通用的結構可以對現實中的各種場景進行建模,從交通運輸系統到組織架構管理,從工藝流程設計到社交網絡。

什么是圖數據庫

知道了圖的概念,你就可以理解什么是圖數據庫了。簡單來說,圖數據庫就是用來處理圖這種數據結構的工具。

不同于傳統的使用二維表格存儲數據的關系型數據庫,圖數據庫在傳統意義上被歸類為NoSQL(Not Only SQL)數據庫的一種,也就是說圖數據庫屬于非關系型數據庫。

一般的圖數據庫至少包含圖存儲、圖查詢、圖分析這三種功能。

為什么要用圖數據庫

那我們?yōu)槭裁匆脠D數據庫呢?我們還是用東漢末年的例子來講解一下圖數據庫相對于關系型數據庫的優(yōu)勢。

假設某關系型數據庫中有三張表,分別是東漢末年人物表、東漢末年戰(zhàn)役表和東漢末年人物參戰(zhàn)表。

當我們想知道“樊城之戰(zhàn)的守方是誰”,查詢一般會比較快,從表2可以直接得到,但當我們想知道“劉備集團發(fā)動了哪些戰(zhàn)爭”的時候,盡管我們也可以從表2查到答案,但是我們可能需要遍歷整個表2,查詢效率會瞬間降低。而當我們要查詢諸如“關羽出戰(zhàn)過劉備集團發(fā)動的哪些戰(zhàn)爭”的時候,我們來看一下執(zhí)行這條查詢時關系型數據庫是怎么做的:

A. 首先通過東漢末年人物表找到關羽對應的人物ID

B. 再使用東漢末年人物參戰(zhàn)表找到其參戰(zhàn)的戰(zhàn)役

C. 最后通過東漢末年戰(zhàn)役表找到其參戰(zhàn)的哪些戰(zhàn)役的攻方是劉備集團

我們會發(fā)現,這個查詢實在是太繁瑣了。

而如果我們將以上表格轉化為如下的一張關系圖譜,那么誰和誰是什么關系就一目了然了。

這么說也許你還沒有真正領略到圖數據庫的巨大威力,我們再來看一個最經典的社交網絡中查詢性能對比的數據。

在《Neo4j in Action》這本書中,作者做了一個測試:在一個包含100萬人,每個人約有50個朋友的社交網絡中找最大深度為5的朋友的朋友,得到的實驗結果如下:

測試結果表明,深度為2時兩種數據庫的性能差別不大,都很迅速;當深度為3時,關系型數據庫需要半分鐘完成查詢,圖數據庫依舊在1秒內搞定;當深度為4時,關系型數據庫耗費了接近半小時返回結果,圖數據庫不到2秒;而當深度達到5以后,關系型數據庫就遲遲無法響應了,圖數據庫卻依舊可以「秒殺」,表現出了非常良好的性能。

據此,我們可以從以下幾個方面理解為什么要用圖數據庫:

  • 關系型數據庫不擅長處理數據之間的關系,而圖數據庫在處理數據之間關系方面靈活且高性能

我們不可否認關系型數據庫自上世紀80年代以來一直都是數據庫領域發(fā)展的主力,當前,隨著社交、物聯網、金融、電商等領域的快速發(fā)展,由此產生的數據呈現指數級的增長,而傳統的關系型數據庫在處理復雜關系的數據上表現很差,這是因為關系型數據庫是通過外鍵的約束來實現多表之間的關系引用的。查詢實體之間的關系需要JOIN操作,而JOIN操作通常非常耗時。

而圖數據庫的原始設計動機就是更好地描述實體之間的關系。圖數據庫與關系型數據庫最大的不同就是免索引鄰接。圖數據模型中的每個節(jié)點都會維護與它相鄰的節(jié)點關系,這就意味著查詢時間與圖的整體規(guī)模無關,只與每個節(jié)點的鄰點數量有關,這使得圖數據庫在處理大量復雜關系時也能保持良好的性能。

另外,圖的結構決定了其易于擴展的特性。我們不必在模型設計之初就把所有的細節(jié)都考慮到,因為在后續(xù)增加新的節(jié)點、新的關系、新的屬性甚至新的標簽都很容易,也不會破壞已有的查詢和應用功能。

  • 數據之間的關系越來越重要

當我們在問圖數據庫為什么如此重要時,其實就是在問,數據之間的關系為何如此重要?正如大家都知道人際關系的價值,其實數據的價值也在于它們之間的關聯關系上。

舉個例子。最近直播帶貨非常火,假如某個主播在微博上有幾百萬的粉絲,這個數據如果不利用起來,價值并不大,但如果他直播帶貨,把關注他的粉絲和可能來他直播間購物的顧客聯系起來時,這些數據立馬展現出巨大的商業(yè)價值。

  • 使用圖的方式表達現實世界中的很多事物更直接,更直觀,也更易于理解

自然界中有各種各樣的關系,而關系型數據庫只能把這些拍扁成表格形態(tài)的行列數據,而圖數據基于圖模型以一種直觀的方式去模擬這些關系,因而更形象。

另外,現在大部分的圖數據庫都提供了可視化的圖展示,使得查詢和分析變得很直觀。

  • 專業(yè)的圖分析算法為實際場景提供解決方案

圖數據庫起源于圖理論,借助于專業(yè)的圖分析算法,能夠為實際場景提供合適的解決方案。

圖數據庫如何存儲、查詢、分析

  • 圖存儲

圖數據庫如何存儲圖,對查詢和分析效率至關重要。圖數據庫使用圖模型來操作圖數據。所謂的圖模型是指圖數據庫描述和組織圖數據的方式。

目前主流的圖數據庫選擇的圖模型是屬性圖。屬性圖由點、邊、標簽和屬性組成,我們結合一個具體的屬性圖實例來看一下。

以上屬性圖可以幫助我們理解一些相關概念:

1) 可以為點設置標簽,比如 person, war等,擁有相同標簽的點我們認為它們屬于一個分組,是一個集合,這樣劉備和曹操屬于一個分組;

2) 同樣可以為邊設置標簽,標簽可以為 relation等;

3) 節(jié)點可以擁有很多屬性,比如 style name、year等,這些屬性值以鍵值對的形式表示,例如:劉備的style name是玄德;

4) 邊也可以擁有屬性,比如army等;

5) 邊允許有方向,例如劉備和漢中之戰(zhàn)之間的邊的方向是由劉備指向漢中之戰(zhàn)的;

6) 元數據是用來描述點和邊的屬性信息的,元數據由若干標簽組成,每個標簽由若干屬性組成。

  • 圖查詢

如果我們想知道劉備的籍貫在哪,劉備和曹操是什么關系,漢中之戰(zhàn)的發(fā)動方是誰等等,這些都屬于圖查詢的范疇。

我們知道,SQL是關系型數據庫的查詢語言,但是圖數據庫的查詢語言并沒有復用SQL。這是因為本質上圖數據庫處理的是高維數據,而SQL所適用的是二維的數據結構,其并不擅長關系的查詢和操作。使用專門的圖查詢語言比SQL更加高效。

目前主流的圖查詢語言包括Gremlin和Cypher等。

  • 圖分析

圖分析是指通過各種圖算法來挖掘圖信息的一門技術。

核心的圖算法可以分成三類:路徑搜索類、中心性分析類和社區(qū)發(fā)現類。

路徑搜索是探索圖中節(jié)點通過邊建立的直接或間接的聯系。例如在下圖中,通過路徑搜索,我們發(fā)現了這樣一條路徑:孫策-[夫妻]-大喬-[姐妹]-小喬-[夫妻]-周瑜,據此得知孫策和周瑜是連襟的關系。路徑搜索類算法廣泛用于物流配送、社交關系分析等場景。

中心性分析是指分析特定節(jié)點在圖中的重要程度及其影響力。例如在上圖中,直觀來看,孫權是一個重要的人物,因為與他直接相連的邊的數量最多。中心性分析類算法一般用于網頁排序、意見領袖挖掘、流感傳播等場景。

社區(qū)發(fā)現意在發(fā)現圖中聯系更緊密的群體結構。如果把更多的三國人物和關系加到上圖中,利用Louvain等社團挖掘類算法,我們很容易發(fā)現這些人物分屬三個陣營,如下圖所示。

社區(qū)發(fā)現類算法可用于犯罪團伙挖掘等場景。

圖數據庫有什么用

介紹完圖數據庫的主要功能,我們再來看看圖數據庫都有哪些應用場景。圖數據庫擅長的應用領域包括:

  • 社交領域: Facebook, Twitter用它來進行社交關系管理、好友推薦

我們熟悉的好友推薦。就可以采用推薦好友的好友的方法。

徐庶和司馬徽向劉備推薦諸葛亮可以通過下圖形象地展示

  • 電商領域: 華為商城用它來實現商品實時推薦

通過分析目標用戶和其他用戶的喜好商品,找到相似的其他用戶,把這些用戶購買過的商品推薦給目標用戶。

  • 金融領域: 中國工商銀行、摩根大通用它來做風控管理

目前來看,金融領域對圖數據庫的需求很迫切,以貸款為例,在整個貸款周期中,圖數據庫都能發(fā)揮巨大的作用。

  • 安平領域: 公安用它來進行嫌疑關系審查、犯罪團伙挖掘

東漢末年,曹操刺殺董卓,貂蟬挑撥董卓父子關系,呂布斬殺董卓,但是董卓卻不知道,這些事件幕后主兇之一都有王允,如下圖所示。現實中也可能是這樣,幕后真兇可能與目標案件沒有直接關系,只有間接的關系。

什么樣的場景適合用圖數據庫

你可以根據以下幾點來判斷你的問題是否需要圖數據庫:

如果你的問題中頻繁出現多對多的關系,建議首選圖數據庫;

如果你的問題中數據之間的關系非常重要,建議首選圖數據庫;

如果你需要處理大規(guī)模數據集之間的關系,建議首選圖數據庫。

 

責任編輯:張燕妮 來源: 博客園
相關推薦

2020-11-14 16:00:55

數據直覺數據分析大數據

2022-04-10 19:26:07

TypeScript類型語法

2024-02-07 12:35:00

React并發(fā)模式concurrent

2024-07-12 15:08:23

Python@wraps函數

2022-05-04 08:38:32

Netty網絡框架

2021-05-11 07:30:58

JNIJavaAPI

2021-01-28 17:41:32

Github網站Pull Reques

2024-08-26 14:23:56

2022-09-06 21:38:45

數字人數字孿生

2021-12-16 15:11:59

Facebook天秤幣加密貨幣

2020-02-17 21:52:19

微信支付寶健康碼

2021-12-26 00:01:51

Log4Shell漏洞服務器

2024-08-01 17:34:56

Promiseaxios請求

2020-03-07 09:47:48

AVL樹算法場景

2024-02-01 20:15:37

2012-07-25 09:09:46

GNOME OS桌面

2013-05-29 10:17:56

Hadoop分布式文件系統

2019-07-23 15:34:29

MySQL存儲引擎

2021-12-16 21:13:38

通信網管平臺

2019-10-28 09:59:26

區(qū)塊鏈技術智能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品免费观看 | 日韩国产一区 | 黄色免费av | 久久成人精品视频 | 欧美另类视频在线 | 久久国色 | 伊人精品一区二区三区 | 日本高清aⅴ毛片免费 | 亚洲国产一区二区视频 | 久久综合久久综合久久综合 | 久久日韩精品一区二区三区 | 欧美在线视频一区 | 国产精品美女久久久久久免费 | 色综合久久天天综合网 | 精品久久香蕉国产线看观看亚洲 | 久久久精品天堂 | 亚洲精品1区2区3区 91免费看片 | 337p日本欧洲亚洲大胆精蜜臀 | 亚洲免费在线视频 | 日日干天天干 | 日韩视频在线免费观看 | 老司机深夜福利网站 | 国产丝袜av | 97免费视频在线观看 | 国产精品成人一区二区 | 韩日在线观看视频 | 美女视频黄色的 | 在线观看中文字幕视频 | 亚洲激情第一页 | 欧美日韩久久久久 | 亚洲精品一区二区三区在线 | 久久久久久免费毛片精品 | 日韩免费av网站 | 久久国产高清视频 | 久久一区视频 | 亚洲久久| av在线视 | 国产精品久久国产精品 | 精品一区二区三区在线观看 | 欧美区日韩区 | 亚洲a级 |