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