Azure Cosmos DB 中的 Gremlin API 簡(jiǎn)介,microsoft azure文字轉(zhuǎn)語(yǔ)音Azure Cosmos DB 中的 Gremlin API 簡(jiǎn)介Azure Cosmos DB是Azure針對(duì)任務(wù)關(guān)鍵型應(yīng)用程序提供的多區(qū)域分布式多模型數(shù)據(jù)庫(kù)服務(wù)。它是多模型數(shù)據(jù)庫(kù)并支持文檔、鍵值、圖和列系列數(shù)......
Azure Cosmos DB是Azure針對(duì)任務(wù)關(guān)鍵型應(yīng)用程序提供的多區(qū)域分布式多模型數(shù)據(jù)庫(kù)服務(wù)。它是多模型數(shù)據(jù)庫(kù)并支持文檔、鍵值、圖和列系列數(shù)據(jù)模型。Azure Cosmos DB通過(guò)Gremlin API在為任何規(guī)模設(shè)計(jì)的完全托管數(shù)據(jù)庫(kù)服務(wù)中提供圖形數(shù)據(jù)庫(kù)服務(wù)。
本文提供Azure Cosmos DB Gremlin API概述,并說(shuō)明如何使用它們存儲(chǔ)具有數(shù)十億頂點(diǎn)和邊緣的大量圖形??稍诤撩爰?jí)延遲的情況下查詢圖形,并輕松改進(jìn)圖結(jié)構(gòu)。Azure Cosmos DB的Gremlin API是基于Apache TinkerPop(一種圖形計(jì)算框架)構(gòu)建的。Azure Cosmos DB中的Gremlin API使用Gremlin查詢語(yǔ)言。
Azure Cosmos DB的Gremlin API將強(qiáng)大的圖形數(shù)據(jù)庫(kù)算法與高度可擴(kuò)展的托管基礎(chǔ)結(jié)構(gòu)相結(jié)合,為缺乏靈活性和關(guān)系型方法的大多數(shù)常見(jiàn)數(shù)據(jù)問(wèn)題提供獨(dú)特、靈活的解決方案。
備注
無(wú)服務(wù)器容量模式現(xiàn)在在Azure Cosmos DB的Gremlin API上可用。
Azure Cosmos DB的Gremlin API的功能
Azure Cosmos DB是一個(gè)完全托管的圖形數(shù)據(jù)庫(kù),提供多區(qū)域分發(fā)、存儲(chǔ)和吞吐量彈性縮放、自動(dòng)索引編制與查詢、可優(yōu)化的一致性級(jí)別,并支持TinkerPop標(biāo)準(zhǔn)。
以下是Azure Cosmos DB Gremlin API提供的差異化功能:
可靈活縮放吞吐量和存儲(chǔ)
現(xiàn)實(shí)世界中的圖形需要擴(kuò)展到超越單個(gè)服務(wù)器的容量。Azure Cosmos DB支持橫向可縮放的圖形數(shù)據(jù)庫(kù),就存儲(chǔ)和預(yù)配吞吐量而言,這些數(shù)據(jù)庫(kù)的大小幾乎無(wú)限制。隨著圖形數(shù)據(jù)庫(kù)規(guī)模的增長(zhǎng),數(shù)據(jù)將使用圖形分區(qū)自動(dòng)分發(fā)。
多區(qū)域復(fù)制
Azure Cosmos DB可以自動(dòng)將圖形數(shù)據(jù)復(fù)制到中國(guó)任何Azure區(qū)域。多區(qū)域復(fù)制簡(jiǎn)化了需要多區(qū)域訪問(wèn)數(shù)據(jù)的應(yīng)用程序的開(kāi)發(fā)過(guò)程。Azure Cosmos DB除了最大限度地減少中國(guó)任何地方的讀寫(xiě)延遲外,還提供了一種自動(dòng)區(qū)域故障轉(zhuǎn)移機(jī)制,可以在某區(qū)域服務(wù)中斷(這種情況很少見(jiàn))的情況下確保應(yīng)用程序持續(xù)可用。
使用最廣泛采用的圖形查詢標(biāo)準(zhǔn)進(jìn)行快速查詢和遍歷
存儲(chǔ)異類頂點(diǎn)和邊緣,并通過(guò)熟悉的Gremlin語(yǔ)法對(duì)其進(jìn)行查詢。Gremlin是一種命令式函數(shù)查詢語(yǔ)言,提供了豐富的接口來(lái)實(shí)現(xiàn)常見(jiàn)的圖形算法。
Azure Cosmos DB支持豐富的實(shí)時(shí)查詢和遍歷,而無(wú)需指定架構(gòu)提示、二級(jí)索引或視圖。在通過(guò)使用Gremlin查詢圖形中了解詳細(xì)信息。
完全托管的圖形數(shù)據(jù)庫(kù)
通過(guò)Azure Cosmos DB無(wú)需管理數(shù)據(jù)庫(kù)和計(jì)算機(jī)資源。大多數(shù)現(xiàn)有的圖形數(shù)據(jù)庫(kù)平臺(tái)受其基礎(chǔ)結(jié)構(gòu)的限制,并且通常需要進(jìn)行高度維護(hù)才能確保其運(yùn)營(yíng)。
作為一種完全托管的服務(wù),Cosmos DB無(wú)需管理虛擬機(jī)、更新運(yùn)行時(shí)軟件、管理分片或復(fù)制或者處理復(fù)雜的數(shù)據(jù)層升級(jí)。每個(gè)圖形會(huì)自動(dòng)備份,以防受到區(qū)域故障的影響。這使得開(kāi)發(fā)人員能夠?qū)W⒂谔峁?yīng)用程序價(jià)值,而不是專注于操作和管理其圖形數(shù)據(jù)庫(kù)。
自動(dòng)編制索引
默認(rèn)情況下,Azure Cosmos DB自動(dòng)為圖形中的節(jié)點(diǎn)(也稱為頂點(diǎn))和邊緣包含的所有屬性編制索引,無(wú)需任何架構(gòu)或創(chuàng)建二級(jí)索引。深入了解Azure Cosmos DB中的索引。
與Apache TinkerPop兼容
Azure Cosmos DB支持開(kāi)放源代碼Apache TinkerPop標(biāo)準(zhǔn)。Tinkerpop標(biāo)準(zhǔn)擁有豐富的應(yīng)用程序和庫(kù)生態(tài)系統(tǒng),它們可以輕松地與Azure Cosmos DB的Gremlin API集成。
可優(yōu)化的一致性級(jí)別
Azure Cosmos DB提供了五個(gè)定義明確的一致性級(jí)別,以實(shí)現(xiàn)應(yīng)用程序的一致性和性能之間的適當(dāng)平衡。對(duì)于查詢和讀取操作,Azure Cosmos DB提供五種不同的一致性級(jí)別:強(qiáng)、有限過(guò)時(shí)、會(huì)話、一致前綴和最終。通過(guò)這些細(xì)化的妥善定義的一致性級(jí)別,可以在一致性、可用性與延遲之間實(shí)現(xiàn)合理的平衡。有關(guān)詳細(xì)信息,請(qǐng)參閱Azure Cosmos DB中的可優(yōu)化數(shù)據(jù)一致性級(jí)別。
使用Gremlin API的場(chǎng)景
以下是Azure Cosmos DB的圖形支持可能有用的一些場(chǎng)景:
社交網(wǎng)絡(luò)/客戶365
通過(guò)合并有關(guān)客戶及其與其他人的互動(dòng)的數(shù)據(jù),可以開(kāi)發(fā)個(gè)性化的體驗(yàn)、預(yù)測(cè)客戶行為,或者將某些人員與其他具有類似興趣的人員相連接。使用Azure Cosmos DB可以管理社交網(wǎng)絡(luò)以及跟蹤客戶的喜好與數(shù)據(jù)。
推薦引擎
此場(chǎng)合通常用于零售行業(yè)。通過(guò)合并有關(guān)產(chǎn)品、用戶和用戶互動(dòng)(例如購(gòu)買(mǎi)、瀏覽某件商品或者為商品評(píng)分)的信息,可以生成自定義的推薦內(nèi)容。Azure Cosmos DB的低延遲、彈性縮放和原生圖形支持是這些場(chǎng)景的理想選擇。
地理空間
電信、物流和旅行規(guī)劃行業(yè)中的許多應(yīng)用程序需要在某個(gè)區(qū)域中查找興趣點(diǎn),或者查找兩個(gè)地點(diǎn)之間最短/最佳的路線。Azure Cosmos DB天生就很適合解決這些問(wèn)題。
物聯(lián)網(wǎng)
當(dāng)IoT設(shè)備之間的網(wǎng)絡(luò)和連接建模為圖形時(shí),可以更好地理解設(shè)備和資產(chǎn)的狀態(tài)。還可以了解網(wǎng)絡(luò)一個(gè)部分的更改可能對(duì)另一個(gè)部分造成的影響。
圖形數(shù)據(jù)庫(kù)簡(jiǎn)介
現(xiàn)實(shí)世界中的數(shù)據(jù)存在必然的聯(lián)系。傳統(tǒng)數(shù)據(jù)建模側(cè)重于單獨(dú)定義實(shí)體并在運(yùn)行時(shí)計(jì)算它們之間的關(guān)系。雖然這種模型有其自身的優(yōu)點(diǎn),但高度連接的數(shù)據(jù)在其約束下可能難以進(jìn)行管理。
而圖形數(shù)據(jù)庫(kù)方法依賴于存儲(chǔ)層中的持久關(guān)系,這使得圖形檢索操作非常高效。Azure Cosmos DB的Gremlin API支持屬性圖形模型。
屬性圖形對(duì)象
屬性圖形是由頂點(diǎn)和邊緣組成的結(jié)構(gòu)。兩個(gè)對(duì)象都可以作為屬性包含任意數(shù)量的鍵值對(duì)。
頂點(diǎn)/節(jié)點(diǎn)頂點(diǎn)表示人員、地點(diǎn)或事件等離散實(shí)體。
邊緣/關(guān)系邊表示頂點(diǎn)之間的關(guān)系。例如,一個(gè)人可能認(rèn)識(shí)其他人、涉及到某個(gè)事件以及最近處于某個(gè)位置。
屬性屬性表示有關(guān)頂點(diǎn)和邊的信息。頂點(diǎn)或邊緣中可以包含任意數(shù)量的屬性,并且這些屬性可用于描述和篩選查詢中的對(duì)象。屬性示例包括具有姓名和年齡的頂點(diǎn),或具有時(shí)間戳和/或體重的邊緣。
標(biāo)簽標(biāo)簽是頂點(diǎn)或邊緣的名稱或標(biāo)識(shí)符。標(biāo)簽可以對(duì)多個(gè)頂點(diǎn)或邊緣進(jìn)行分組,以便組中的所有頂點(diǎn)/邊緣都具有特定的標(biāo)簽。例如,一個(gè)圖形可以有多個(gè)標(biāo)簽類型為“person”的頂點(diǎn)。
圖形數(shù)據(jù)庫(kù)通常包含在NoSQL或非關(guān)系數(shù)據(jù)庫(kù)類別中,因?yàn)椴淮嬖趯?duì)架構(gòu)或受約束數(shù)據(jù)模型的依賴。由于缺乏架構(gòu),因此可以自然且高效地建模和存儲(chǔ)連接的結(jié)構(gòu)。
圖形數(shù)據(jù)庫(kù)示例
我們使用一個(gè)示例圖形來(lái)了解如何在Gremlin中表示查詢。下圖顯示了一個(gè)商業(yè)應(yīng)用程序,該應(yīng)用程序管理以圖形形式呈現(xiàn)的有關(guān)用戶、興趣和設(shè)備的數(shù)據(jù)。
顯示人員、設(shè)備和興趣的示例數(shù)據(jù)庫(kù)
此圖形使用以下頂點(diǎn)類型(在Gremlin中也稱為“標(biāo)簽”):
人員:圖形中包含三名人員:Robin、Thomas和Ben
興趣:在此示例中,人員的興趣為足球比賽
設(shè)備:人員使用的設(shè)備
操作系統(tǒng):設(shè)備在其上運(yùn)行的操作系統(tǒng)
位置:訪問(wèn)設(shè)備的位置
我們通過(guò)以下邊緣類型表示這些實(shí)體之間的關(guān)系:
認(rèn)識(shí):例如,“Thomas認(rèn)識(shí)Robin”
感興趣的內(nèi)容:在圖形中表示人員的興趣,例如,“Ben對(duì)足球感興趣”
RunsOS:運(yùn)行Windows OS的筆記本電腦
使用:表示人員使用哪種設(shè)備。例如,Robin uses a Motorola phone with serial number 77
位置:表示從中訪問(wèn)設(shè)備的位置
Gremlin控制臺(tái)是Apache TinkerPop提供的交互式終端,此終端用于與圖形數(shù)據(jù)進(jìn)行交互。若要了解詳細(xì)信息,請(qǐng)參閱如何使用Gremlin控制臺(tái)中的快速入門(mén)文檔。也可以所選的平臺(tái)(Java、Node.js、Python或.NET)中使用Gremlin驅(qū)動(dòng)程序執(zhí)行這些操作。下面的示例演示如何使用Gremlin控制臺(tái)對(duì)此圖形數(shù)據(jù)運(yùn)行查詢。
首先,讓我們了解CRUD。以下Gremlin語(yǔ)句在圖形中插入“Thomas”頂點(diǎn):
Java
:g.addV(person).property(id,thomas.1).property(firstName,Thomas).property(lastName,Andersen).property(age,44)
接下來(lái),以下Gremlin語(yǔ)句在Thomas與Robin之間插入“knows”邊緣。
Java
:g.V(thomas.1).addE(knows).to(g.V(robin.1))
以下查詢按人員名字的降序返回“person”頂點(diǎn):
Java
:g.V().hasLabel(person).order().by(firstName,decr)
如果需要回答類似于“Thomas的朋友使用哪些操作系統(tǒng)?”的問(wèn)題,圖形可以提供很大的方便??梢赃\(yùn)行此Gremlin遍歷從圖形中獲取該信息:
Java
:g.V(thomas.1).out(knows).out(uses).out(runsos).group().by(name).by(count())
特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場(chǎng)。如有關(guān)于作品內(nèi)容、版權(quán)或其它問(wèn)題請(qǐng)于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號(hào)密碼登錄
平臺(tái)顧問(wèn)
微信掃一掃
馬上聯(lián)系在線顧問(wèn)
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部