日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

后端返回数据带有标签_越来越火的图数据库究竟是什么?是否在制造企业可以应用...

發(fā)布時(shí)間:2024/9/18 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 后端返回数据带有标签_越来越火的图数据库究竟是什么?是否在制造企业可以应用... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

隨著社交、電商、金融、零售、物聯(lián)網(wǎng)等行業(yè)的快速發(fā)展,現(xiàn)實(shí)社會(huì)織起了了一張龐大而復(fù)雜的關(guān)系網(wǎng),傳統(tǒng)數(shù)據(jù)庫(kù)很難處理關(guān)系運(yùn)算。大數(shù)據(jù)行業(yè)需要處理的數(shù)據(jù)之間的關(guān)系隨數(shù)據(jù)量呈幾何級(jí)數(shù)增長(zhǎng),亟需一種支持海量復(fù)雜數(shù)據(jù)關(guān)系運(yùn)算的數(shù)據(jù)庫(kù),圖數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。

世界上很多著名的公司都在使用圖數(shù)據(jù)庫(kù)。比如:

  • 社交領(lǐng)域:Facebook, Twitter,Linkedin用它來(lái)管理社交關(guān)系,實(shí)現(xiàn)好友推薦

  • 零售領(lǐng)域:eBay,沃爾瑪使用它實(shí)現(xiàn)商品實(shí)時(shí)推薦,給買(mǎi)家更好的購(gòu)物體驗(yàn)

  • 金融領(lǐng)域:摩根大通,花旗和瑞銀等銀行在用圖數(shù)據(jù)庫(kù)做風(fēng)控處理

  • 汽車(chē)制造領(lǐng)域:沃爾沃,戴姆勒和豐田等頂級(jí)汽車(chē)制造商依靠圖數(shù)據(jù)庫(kù)推動(dòng)創(chuàng)新制造解決方案

  • 電信領(lǐng)域:Verizon, Orange和AT&T 等電信公司依靠圖數(shù)據(jù)庫(kù)來(lái)管理網(wǎng)絡(luò),控制訪(fǎng)問(wèn)并支持客戶(hù)360

  • 酒店領(lǐng)域:萬(wàn)豪和雅高酒店等頂級(jí)酒店公司依使用圖數(shù)據(jù)庫(kù)來(lái)管理復(fù)雜且快速變化的庫(kù)存

既然圖數(shù)據(jù)庫(kù)應(yīng)用這么廣泛,越來(lái)越多的企業(yè)和開(kāi)發(fā)者開(kāi)始使用它,那它究竟什么過(guò)人之處呢,下面我們來(lái)揭開(kāi)它的神秘面紗。

1. Why Graph DB?

學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)這么課程的同學(xué)腦海中應(yīng)該或多或少有圖的概念。

1.1 什么是圖?

圖由兩個(gè)元素組成:節(jié)點(diǎn)和關(guān)系。

每個(gè)節(jié)點(diǎn)代表一個(gè)實(shí)體(人,地,事物,類(lèi)別或其他數(shù)據(jù)),每個(gè)關(guān)系代表兩個(gè)節(jié)點(diǎn)的關(guān)聯(lián)方式。這種通用結(jié)構(gòu)可以對(duì)各種場(chǎng)景進(jìn)行建模 - 從道路系統(tǒng)到設(shè)備網(wǎng)絡(luò),到人口的病史或由關(guān)系定義的任何其他事物。

1.2 什么是圖數(shù)據(jù)庫(kù)?

圖數(shù)據(jù)庫(kù)(Graph database)并非指存儲(chǔ)圖片的數(shù)據(jù)庫(kù),而是以圖這種數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)和查詢(xún)數(shù)據(jù)。

圖形數(shù)據(jù)庫(kù)是一種在線(xiàn)數(shù)據(jù)庫(kù)管理系統(tǒng),具有處理圖形數(shù)據(jù)模型的創(chuàng)建,讀取,更新和刪除(CRUD)操作。

與其他數(shù)據(jù)庫(kù)不同,關(guān)系在圖數(shù)據(jù)庫(kù)中占首要地位。這意味著應(yīng)用程序不必使用外鍵或帶外處理(如MapReduce)來(lái)推斷數(shù)據(jù)連接。

與關(guān)系數(shù)據(jù)庫(kù)或其他NoSQL數(shù)據(jù)庫(kù)相比,圖數(shù)據(jù)庫(kù)的數(shù)據(jù)模型也更加簡(jiǎn)單,更具表現(xiàn)力。

圖形數(shù)據(jù)庫(kù)是為與事務(wù)(OLTP)系統(tǒng)一起使用而構(gòu)建的,并且在設(shè)計(jì)時(shí)考慮了事務(wù)完整性和操作可用性。

1.3 兩個(gè)重要屬性

根據(jù)存儲(chǔ)和處理模型不同,市面上圖數(shù)據(jù)庫(kù)也有一些區(qū)分。

比如:Neo4J就是屬于原生圖數(shù)據(jù)庫(kù),它使用的后端存儲(chǔ)是專(zhuān)門(mén)為Neo4J這種圖數(shù)據(jù)庫(kù)定制和優(yōu)化的,理論上說(shuō)能更有利于發(fā)揮圖數(shù)據(jù)庫(kù)的性能。

而JanusGraph不是原生圖數(shù)據(jù)庫(kù),而將數(shù)據(jù)存儲(chǔ)在其他系統(tǒng)上,比如Hbase。

① 圖存儲(chǔ)

一些圖數(shù)據(jù)庫(kù)使用原生圖存儲(chǔ),這類(lèi)存儲(chǔ)是經(jīng)過(guò)優(yōu)化的,并且是專(zhuān)門(mén)為了存儲(chǔ)和管理圖而設(shè)計(jì)的。并不是所有圖數(shù)據(jù)庫(kù)都是使用原生圖存儲(chǔ),也有一些圖數(shù)據(jù)庫(kù)將圖數(shù)據(jù)序列化,然后保存到關(guān)系型數(shù)據(jù)庫(kù)或者面向?qū)ο髷?shù)據(jù)庫(kù),或其他通用數(shù)據(jù)存儲(chǔ)中。

② 圖處理引擎

原生圖處理(也稱(chēng)為無(wú)索引鄰接)是處理圖數(shù)據(jù)的最有效方法,因?yàn)檫B接的節(jié)點(diǎn)在數(shù)據(jù)庫(kù)中物理地指向彼此。非本機(jī)圖處理使用其他方法來(lái)處理CRUD操作。

2. 對(duì)比

2.1 與NoSQL數(shù)據(jù)庫(kù)對(duì)比

NoSQL數(shù)據(jù)庫(kù)大致可以分為四類(lèi):

  • 鍵值(key/value)數(shù)據(jù)庫(kù)

  • 列存儲(chǔ)數(shù)據(jù)庫(kù)

  • 文檔型數(shù)據(jù)庫(kù)

  • 圖數(shù)據(jù)庫(kù)

分類(lèi)數(shù)據(jù)模型優(yōu)勢(shì)劣勢(shì)舉例
鍵值數(shù)據(jù)庫(kù)哈希表查找速度快數(shù)據(jù)無(wú)結(jié)構(gòu)化,通常只被當(dāng)作字符串或者二進(jìn)制數(shù)據(jù)Redis
列存儲(chǔ)數(shù)據(jù)庫(kù)列式數(shù)據(jù)存儲(chǔ)查找速度快;支持分布橫向擴(kuò)展;數(shù)據(jù)壓縮率高功能相對(duì)受限HBase
文檔型數(shù)據(jù)庫(kù)鍵值對(duì)擴(kuò)展數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格;表結(jié)構(gòu)可變;不需要預(yù)先定義表結(jié)構(gòu)查詢(xún)性能不高,缺乏統(tǒng)一的查詢(xún)語(yǔ)法MongoDB
圖數(shù)據(jù)庫(kù)節(jié)點(diǎn)和關(guān)系組成的圖利用圖結(jié)構(gòu)相關(guān)算法(最短路徑、節(jié)點(diǎn)度關(guān)系查找等)可能需要對(duì)整個(gè)圖做計(jì)算,不利于圖數(shù)據(jù)分布存儲(chǔ)Neo4j、JanusGraph

2.2 與關(guān)系型數(shù)據(jù)庫(kù)對(duì)比

關(guān)系型數(shù)據(jù)庫(kù)實(shí)際上是不擅長(zhǎng)處理關(guān)系的。很多場(chǎng)景下,你的業(yè)務(wù)需求完全超出了當(dāng)前的數(shù)據(jù)庫(kù)架構(gòu)。

舉個(gè)栗子:假設(shè)某關(guān)系型數(shù)據(jù)庫(kù)中有這么幾張用戶(hù)、訂單、商品表:

當(dāng)我們要查詢(xún):“用戶(hù)購(gòu)買(mǎi)了那些商品?” 或者 “該商品有哪些客戶(hù)購(gòu)買(mǎi)過(guò)?” 需要開(kāi)發(fā)人員JOIN幾張表,效率非常低下。

而“購(gòu)買(mǎi)該產(chǎn)品的客戶(hù)還購(gòu)買(mǎi)了哪些商品?”類(lèi)似的查詢(xún)幾乎不可能實(shí)現(xiàn)。

關(guān)系查詢(xún)性能對(duì)比
在數(shù)據(jù)關(guān)系中心,圖形數(shù)據(jù)庫(kù)在查詢(xún)速度方面非常高效,即使對(duì)于深度和復(fù)雜的查詢(xún)也是如此。在《Neo4j in Action》這本書(shū)中,作者在關(guān)系型數(shù)據(jù)庫(kù)
和圖數(shù)據(jù)庫(kù)(Neo4j)之間進(jìn)行了實(shí)驗(yàn)。

他們的實(shí)驗(yàn)試圖在一個(gè)社交網(wǎng)絡(luò)里找到最大深度為5的朋友的朋友。他們的數(shù)據(jù)集包括100萬(wàn)人,每人約有50個(gè)朋友。實(shí)驗(yàn)結(jié)果如下:

深度MySQL執(zhí)行時(shí)間(s)Neo4J執(zhí)行時(shí)間(s)返回記錄數(shù)
20.0160.01~2500
330.2670.168~110 000
41543.5051.359~600 000
5未完成2.132~800 000

在深度為2時(shí)(即朋友的朋友),兩種數(shù)據(jù)庫(kù)性能相差不是很明顯;深度為3時(shí)(即朋友的朋友的朋友),很明顯,關(guān)系型數(shù)據(jù)庫(kù)的響應(yīng)時(shí)間30s,已經(jīng)變得不可接受了;深度到4時(shí),關(guān)系數(shù)據(jù)庫(kù)需要近半個(gè)小時(shí)才能返回結(jié)果,使其無(wú)法應(yīng)用于在線(xiàn)系統(tǒng);深度到5時(shí),關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)無(wú)法完成查詢(xún)。而對(duì)于圖數(shù)據(jù)庫(kù)Neo4J,深度從3到5,其響應(yīng)時(shí)間均在3秒以?xún)?nèi)。

可以看出,對(duì)于圖數(shù)據(jù)庫(kù)來(lái)說(shuō),數(shù)據(jù)量越大,越復(fù)雜的關(guān)聯(lián)查詢(xún),約有利于體現(xiàn)其優(yōu)勢(shì)。從深度為4/5的查詢(xún)結(jié)果我們可以看出,圖數(shù)據(jù)庫(kù)返回了整個(gè)社交網(wǎng)絡(luò)一半以上的人數(shù)。

3. Neo4J 和 JanuasGraph

根據(jù)DB-Engines最新發(fā)布的圖數(shù)據(jù)庫(kù)排名,Neo4J仍然大幅領(lǐng)先排在第一位:

Neo4J

Neo4J是由Java實(shí)現(xiàn)的開(kāi)源圖數(shù)據(jù)庫(kù)。自2003年開(kāi)始開(kāi)發(fā),直到2007年正式發(fā)布第一版,并托管于GitHub上。

Neo4J支持ACID,集群、備份和故障轉(zhuǎn)移。目前Neo4J最新版本為3.5,分為社區(qū)版和企業(yè)版,社區(qū)版只支持單機(jī)部署,功能受限。企業(yè)版支持主從復(fù)制和讀寫(xiě)分離,包含可視化管理工具。

JanusGraph

JanusGraph是一個(gè)Linux基金會(huì)下的開(kāi)源分布式圖數(shù)據(jù)庫(kù) 。JanusGraph提供Apache2.0軟件許可證。該項(xiàng)目由IBM、Google、Hortonworks支持。JanusGraph是由TitanDB 圖數(shù)據(jù)庫(kù)修改而來(lái),TitanDB從2012年開(kāi)始開(kāi)發(fā)。目前最新版本為0.3.1。

JanusGraph支持多種儲(chǔ)存后端(包括Apache Cassandra、Apache HBase、Bigtable、Berkeley DB)。JanusGraph的可擴(kuò)展性取決于與JanusGraph一起使用的基礎(chǔ)技術(shù)。例如,通過(guò)使用Apache Cassandra作為存儲(chǔ)后端,可以將JanusGraph簡(jiǎn)單地?cái)U(kuò)展到多個(gè)數(shù)據(jù)中心。

JanusGraph通過(guò)與大數(shù)據(jù)平臺(tái)(Apache Spark,Apache Giraph,Apache Hadoop)集成,支持全局圖數(shù)據(jù)的分析、報(bào)告和ETL。

JanusGraph通過(guò)外部索引存儲(chǔ)(Elasticsearch,Solr,Lucene)支持地理、數(shù)字范圍和全文搜索。

3.1 標(biāo)記屬性圖模型

(1)節(jié)點(diǎn)

  • 節(jié)點(diǎn)是主要的數(shù)據(jù)元素

  • 節(jié)點(diǎn)通過(guò)關(guān)系連接到其他節(jié)點(diǎn)

  • 節(jié)點(diǎn)可以具有一個(gè)或多個(gè)屬性(即,存儲(chǔ)為鍵/值對(duì)的屬性)

  • 節(jié)點(diǎn)有一個(gè)或多個(gè)標(biāo)簽,用于描述其在圖表中的作用

  • 示例:人員節(jié)點(diǎn)與Car節(jié)點(diǎn)

(2)關(guān)系

  • 關(guān)系連接兩個(gè)節(jié)點(diǎn)

  • 關(guān)系是方向性的

  • 節(jié)點(diǎn)可以有多個(gè)甚至遞歸的關(guān)系

  • 關(guān)系可以有一個(gè)或多個(gè)屬性(即存儲(chǔ)為鍵/值對(duì)的屬性)

(3)屬性

  • 屬性是命名值,其中名稱(chēng)(或鍵)是字符串

  • 屬性可以被索引和約束

  • 可以從多個(gè)屬性創(chuàng)建復(fù)合索引

(4)標(biāo)簽

  • 標(biāo)簽用于將節(jié)點(diǎn)分組

  • 一個(gè)節(jié)點(diǎn)可以具有多個(gè)標(biāo)簽

  • 對(duì)標(biāo)簽進(jìn)行索引以加速在圖中查找節(jié)點(diǎn)

  • 本機(jī)標(biāo)簽索引針對(duì)速度進(jìn)行了優(yōu)化

4. Cypher圖查詢(xún)語(yǔ)言

Cypher是Neo4j的圖形查詢(xún)語(yǔ)言,允許用戶(hù)存儲(chǔ)和檢索圖形數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

舉例,我們要查找Joe的所以二度好友:

查詢(xún)語(yǔ)句如下:

MATCH (person:Person)-[:KNOWS]-(friend:Person)-[:KNOWS]-(foaf:Person)WHERE person.name = "Joe"AND NOT (person)-[:KNOWS]-(foaf)RETURNfoaf

Joe認(rèn)識(shí)Sally,Sally認(rèn)識(shí)Anna。Bob被排除在結(jié)果之外,因?yàn)槌送ㄟ^(guò)Sally成為二級(jí)朋友之外,他還是一級(jí)朋友。

5. 小結(jié)

圖數(shù)據(jù)庫(kù)應(yīng)對(duì)的是當(dāng)今一個(gè)宏觀(guān)的商業(yè)世界的大趨勢(shì):憑借高度關(guān)聯(lián)、復(fù)雜的動(dòng)態(tài)數(shù)據(jù),獲得洞察力和競(jìng)爭(zhēng)優(yōu)勢(shì)。國(guó)內(nèi)越來(lái)越多的公司開(kāi)始進(jìn)入圖數(shù)據(jù)庫(kù)領(lǐng)域,研發(fā)自己的圖數(shù)據(jù)庫(kù)系統(tǒng)。對(duì)于任何達(dá)到一定規(guī)模或價(jià)值的數(shù)據(jù),圖數(shù)據(jù)庫(kù)都是呈現(xiàn)和查詢(xún)這些關(guān)系數(shù)據(jù)的最好方式。而理解和分析這些圖的能力將成為企業(yè)未來(lái)最核心的競(jìng)爭(zhēng)力。

總結(jié)

以上是生活随笔為你收集整理的后端返回数据带有标签_越来越火的图数据库究竟是什么?是否在制造企业可以应用...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。