av天堂久久天堂色综合,最近中文字幕mv免费高清在线,在线a级毛片免费视频,av动漫,中文字幕精品亚洲无线码一区

微信掃一掃,關(guān)注公眾號

  • 科技行者

  • 算力行者

見證連接與計算的「力量」

首頁 圖數(shù)據(jù)庫能做些什么?查詢語言說了算

圖數(shù)據(jù)庫能做些什么?查詢語言說了算

2021-09-07 18:11
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2021-09-07 18:11 ? 科技行者

新一代圖數(shù)據(jù)庫已經(jīng)在市場上站穩(wěn)腳跟,與之相伴的一代查詢語言也應(yīng)運而生。包括Gremlin、Cypher以及GQL等在內(nèi)的各類圖數(shù)據(jù)庫查詢語言,專門幫助用戶解包圖內(nèi)信息。

圖數(shù)據(jù)庫能做些什么?查詢語言說了算

從本質(zhì)上講,一切數(shù)據(jù)庫都需要一種與客戶交流的方式,而查詢語言的職責正是定義數(shù)據(jù)庫能夠做些什么。良好的圖數(shù)據(jù)庫查詢語言應(yīng)該以盡可能簡單的方式幫助開發(fā)人員根據(jù)數(shù)據(jù)庫內(nèi)定義的網(wǎng)絡(luò)提出復雜問題,進而釋放出圖數(shù)據(jù)庫的強大力量。最初,這些語言各自面向不同的新數(shù)據(jù)庫以專有方案的形式存在,但最近一段時間各查詢語言間的開放標準正在加速建立。

在關(guān)系數(shù)據(jù)庫領(lǐng)域,SQL(結(jié)構(gòu)化查詢語言)多年以來一直是行業(yè)的主導標準。它定義了一種在表內(nèi)搜索符合特定條件的數(shù)據(jù)行的核心方法。如果數(shù)據(jù)跨越多個表,SQL還提供一種表對齊方法,以便將所有信息連接至統(tǒng)一的集合之內(nèi)。SQL特別擅長查找包含與某些規(guī)定相匹配的特定字段的特定條目集合,但也就僅此而已了。

經(jīng)典關(guān)系數(shù)據(jù)庫也能存儲圖,因此在圖數(shù)據(jù)庫出現(xiàn)之前,這也是開發(fā)人員所能仰仗的唯一選擇。SQL能夠回答一部分基礎(chǔ)問題,但傳統(tǒng)查詢語言卻往往處理不了那些最有用、最具吸引力的問題。事實上,關(guān)系數(shù)據(jù)庫在表達極端復雜關(guān)系方面遠遠不及圖數(shù)據(jù)庫,而關(guān)系數(shù)據(jù)庫查詢的唯一解決方案就是返回大塊數(shù)據(jù)以供客戶端軟件運行進一步分析。

所以大家應(yīng)該理解了,圖查詢語言的誕生是為了回答更為復雜的問題,例如:

  • 在一棵家譜樹中,某人有多少個遠房表親?
  • 在記錄朋友或關(guān)注者信息的社交媒體圖片中,兩個用戶之間的分離程度是多少?
  • 在企業(yè)的供應(yīng)鏈中,工廠與客戶之間的最長跳數(shù)是多少?
  • 在一系列銀行交易中,哪些人與欺詐交易間的關(guān)系高于平均水平?
  • 在計算機網(wǎng)絡(luò)中,哪些具有更高帶寬的新連接可用于解決性能瓶頸?

圖數(shù)據(jù)庫需要多種不同模型,其中某些查詢需要跟蹤多條鏈接或跳點。最初,每種圖數(shù)據(jù)庫都使用自己的專有查詢語言。好在最近幾年,圖數(shù)據(jù)庫廠商開始添加新的實現(xiàn)并致力于推動開源標準以實現(xiàn)交叉支持。目前最常見的圖查詢語言包括:

  • Gremlin——最初為Apache Tinkerpop項目開發(fā)的圖搜索語言,可實現(xiàn)過程性或聲明性查詢。
  • Cypher——最初由Neo4J創(chuàng)建,之后以O(shè)penCypher的形式得到普及,這種聲明性語言可用于搜索匹配特定屬性的頂點和邊。
  • GQL——一項標準倡議,致力于將Cyher、GSQL以及PSQL統(tǒng)一起來。
  • SPARQL——一種為了查詢RDF格式知識圖譜而建立的標準。
  • PGQL——甲骨文的原創(chuàng)語言,用于從符合規(guī)范的頂點當中搜索并收集信息。
  • GSQL——TigerGraph的原創(chuàng)過程語言。
  • AQL——ArangoDB的原創(chuàng)過程語言。

GraphQL——顧名思義,它肯定支持圖查詢;但GraphQL實際是一種更為通用的查詢語言,能夠高效搜索大部分文檔與關(guān)系數(shù)據(jù)庫。它雖然也能發(fā)掘出一部分圖數(shù)據(jù)庫用途,但總體來講只是在支持與關(guān)系數(shù)據(jù)庫相同的常規(guī)查詢。

不同查詢語言之間存在著一系列本質(zhì)差異。有些查詢語言屬于“聲明性”,另一些則屬于“過程性”。也就是說,有些是讓開發(fā)者通過編寫定義子集的簡單規(guī)則來聲明自己“想干什么”,再由數(shù)據(jù)庫應(yīng)用這些規(guī)則、使用可用的索引構(gòu)建搜索計劃、再找到一切可能的匹配項。

例如,用戶可能需要查找相距10英里之內(nèi)的所有超過10000美元的銀行交易行為,或者是搜索互有聯(lián)系而且在過去兩周之內(nèi)沒發(fā)過新帖的社交媒體用戶。這些規(guī)則可以包括對標準查詢語言(“WHERE AGE<20”)中找到的值的所有過濾,再加上關(guān)于網(wǎng)絡(luò)連接的其他復雜規(guī)則(“IS RELATED TO”)。一般來說,圖查詢語言在搜索關(guān)系圖方面表現(xiàn)得最為突出。

而過程性查詢語言則更接近于傳統(tǒng)計算機語言,允許開發(fā)人員控制數(shù)據(jù)庫搜索條目的具體方式,一般是編寫循環(huán)或者其他控制結(jié)構(gòu)??偟膩碇v,聲明式語言更易于理解和使用,因為它隱藏掉了大部分搜索工作;但過程性語言則更為強大。一部分數(shù)據(jù)庫能夠同時支持這兩種查詢方式。

另一個主要區(qū)別,則來自數(shù)據(jù)庫結(jié)構(gòu)本身。有些數(shù)據(jù)庫支持RDF,有些則支持所謂屬性圖。RDF模型屬于W3C標準,最初用于對語義信息進行編碼。屬性圖模型則往往更通用也更靈活。同樣的,一部分數(shù)據(jù)庫能夠同時支持這兩種模型。

傳統(tǒng)用戶如何快速適應(yīng)圖查詢語言?

Oracle向常規(guī)SQL查詢語言中添加了圖搜索功能,由此為主數(shù)據(jù)庫實現(xiàn)了圖功能。這種名為PGQL(屬性圖查詢語言)的擴展提供了一種簡潔的方法,可供開發(fā)者快速搜索圖片并創(chuàng)建關(guān)于匹配條件的頂點報告。其圖分析框架以數(shù)十種常見算法為起點,通過擴展逐步為基礎(chǔ)數(shù)據(jù)構(gòu)建起復雜的摘要。另外,它還同時支持屬性圖與RDF圖。

微軟在2017年向其SQL Server添加了圖功能,并使用匹配屬性模式的MATCH子句擴展了其SQL版本。搜索操作可以通過命令式查詢的存儲過程進行擴展。Azure云中的Microsoft Cosmos數(shù)據(jù)庫支持Apache TinkerPop API,因此能夠支持所有Gremlin式查詢。

亞馬遜的主要圖數(shù)據(jù)庫為Amazon Neptune,同樣支持屬性圖與RDF圖。屬性圖可以使用Gremlin類查詢進行搜索,而RDF圖則適合由SPARQL進行搜索。

IBM公司一直與多家圖數(shù)據(jù)庫廠商合作,例如Neo4J,并在自家云中提供相關(guān)的產(chǎn)品即服務(wù)。此服務(wù)名為IBM Graph,除了使用支持Gremlin的TinkerPop API以外,這項服務(wù)還提供其他用于基礎(chǔ)檢索的簡單API。

后起之秀們的故事

近年來,Neo4J已經(jīng)成為最具影響力的圖數(shù)據(jù)庫之一,而且目前仍是這一領(lǐng)域的領(lǐng)導者。但其仍是一家獨立企業(yè),因此在本文中同樣被納入“后起之秀”的范疇。順帶一提,其實很多參與圖數(shù)據(jù)庫市場的廠商都有著悠久的發(fā)展歷史。

Neo4J鼓勵其他公司通過OpenCypher項目使用其查詢語言Cypher。此外,Neo4J也是GQL標準化進程的主要推動者,同時支持使用GraphQL執(zhí)行一部分查詢。

TigerGraph選擇的是存儲屬性圖并使用GSQL進行查詢的路線,這是一種簡化并發(fā)處理工實現(xiàn)大規(guī)模數(shù)據(jù)集擴展能力的過程性方法。該數(shù)據(jù)庫背后的廠商提供一款復雜的可視化工具GraphStudio,能夠以產(chǎn)品及云服務(wù)的形式供用戶探索并查詢數(shù)據(jù)集內(nèi)容。

OrientDB則是一套開源數(shù)據(jù)庫,可使用Gremlin和SQL進行查詢。它的締造廠商已經(jīng)被SQP所收購,因此相關(guān)產(chǎn)品目前正在與SAP自家產(chǎn)品線進行集成。

ArangoDB在設(shè)計上支持圖與NoSQL文檔數(shù)據(jù)集。這款開源數(shù)據(jù)庫既提供社區(qū)版,也提供服務(wù)形式的付費商業(yè)版。其關(guān)聯(lián)的查詢語言被稱為SQL,提供的是過程性數(shù)據(jù)搜索方法。

AllegoGraph存儲RDF圖,并使用SPARQL、RDFS++以及多種編程語言擴展(例如邏輯編程語言Prolog,以及Allegro Common LISP)實現(xiàn)查詢。其知識圖譜瀏覽器Gruff能夠在常規(guī)網(wǎng)絡(luò)瀏覽器中運行,借此實現(xiàn)可視化查詢。該產(chǎn)品同時適用于本地安裝和亞馬遜云科技等公有云平臺。

Ontotext專注于創(chuàng)建大型知識圖譜,其GraphDB可支持對RDF圖執(zhí)行SPARQL查詢。Ontotext提供三個版本(免費版、標準版與企業(yè)版),三者的功能基本相同,但免費版僅支持兩項并發(fā)查詢。

圖數(shù)據(jù)庫查詢語言有哪些局限?

圖查詢語言的核心,在于提供一種簡潔的方式以搜索匹配特定模式的特定條目組合。但有些問題,無論其內(nèi)容多么明確,都很難通過圖查詢語言得到有效回答。

以查找“團”(即相互間高度連接的頂點子集)為例,雖然這個問題本身屬于NP完全問題,但可能難以通過圖查詢語言得到有效解決。隨著問題規(guī)模的擴大,尋找答案的時間往往呈指數(shù)級增長——換句話說,這些問題不具備可擴展性。如果錯誤使用圖查詢語言,我們很可能在不經(jīng)意間寫出一條需要極長時間才能解決的高成本查詢。

分享至
0贊

好文章,需要你的鼓勵

推薦文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-