快速入門:使用 Gremlin 控制台和 Azure Cosmos DB for Apache Gremlin 周遊頂點和邊緣
適用於: Gremlin
適用於 Apache Gremlin 的 Azure Cosmos DB 是完全受控的圖形資料庫服務,使用 Gremlin 查詢語言實作熱門 Apache Tinkerpop
的圖表運算架構。 Gremlin 的 API 可讓您以低摩擦的方式開始使用 Gremlin 與服務,以盡可能減少管理的需求來擴增和相應放大。
在本快速入門中,您會使用 Gremlin 控制台連線到新建立的 Azure Cosmos DB for Gremlin 帳戶。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。
- 沒有 Azure 訂用帳戶? 註冊免費的 Azure 帳戶。
- 不想要 Azure 訂用帳戶嗎? 您可以 免費試用 Azure Cosmos DB,而不需要訂用帳戶。
- Docker 主機
- 尚未安裝 Docker? 請在 GitHub Codespaces 中試用本快速入門。
- Azure 命令列介面 (CLI)
Azure Cloud Shell
Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。
要啟動 Azure Cloud Shell:
選項 | 範例/連結 |
---|---|
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 | |
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 | |
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 |
若要使用 Azure Cloud Shell:
啟動 Cloud Shell。
選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。
透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。
選取 Enter 鍵執行程式碼或命令。
建立 Gremlin 帳戶和相關資源的 API
使用 Gremlin 控制台之前,應該先建立 Gremlin 帳戶的 API。 此外,它也有助於建立資料庫和圖形。
建立 accountName、resourceGroupName 和 location 的殼層變數。
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart" location="westus" # Variable for account name with a randomly generated suffix let suffix=$RANDOM*$RANDOM accountName="msdocs-gremlin-$suffix"
如果您尚未登入,請使用
az login
登入 Azure CLI。使用
az group create
在您的訂用帳戶中建立新的資源群組。az group create \ --name $resourceGroupName \ --location $location
使用
az cosmosdb create
建立具有預設設定之 Gremlin 帳戶的新 API。az cosmosdb create \ --resource-group $resourceGroupName \ --name $accountName \ --capabilities "EnableGremlin" \ --locations regionName=$location \ --enable-free-tier true
注意
每個 Azure 訂用帳戶最多可以有一個免費層 Azure Cosmos DB 帳戶,而且在建立帳戶時必須選擇加入。 如果此命令無法套用免費層折扣,這表示訂用帳戶中的另一個帳戶已啟用免費層。
使用
az cosmosdb show
取得帳戶的 Gremlin 端點名稱 API。az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
從具有
az-cosmosdb-keys-list
的帳戶金鑰清單中尋找 KEY。az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
記錄 NAME 和 KEY 值。 您稍後會使用這些認證。
使用
az cosmosdb gremlin database create
建立名為cosmicworks
的資料庫。az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"
使用
az cosmosdb gremlin graph create
建立圖形。 將圖形products
命名為 ,然後將輸送量設定為400
,最後將分割區索引鍵路徑設定為/category
。az cosmosdb gremlin graph create \ --resource-group $resourceGroupName \ --account-name $accountName \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category" \ --throughput 400
使用 Docker 啟動及設定 Gremlin 控制台
針對 gremlin 控制台,本快速入門會使用來自 Docker Hub 的 tinkerpop/gremlin-console
容器映像。 此映像可確保您使用適當的控制台版本 (3.4
) 來連線至適用於 Gremlin 的 API。 控制台執行之後,請從本機 Docker 主機連線到 Gremlin 帳戶的遠端 API。
3.4
提取容器映像的版本tinkerpop/gremlin-console
。docker pull tinkerpop/gremlin-console:3.4
建立空的工作資料夾。 在空白資料夾中,建立 remote-secure.yaml 檔案。 將此 YAML 組態新增至 檔案。
hosts: [<account-name>.gremlin.cosmos.azure.com] port: 443 username: /dbs/cosmicworks/colls/products password: <account-key> connectionPool: { enableSsl: true, sslEnabledProtocols: [TLSv1.2] } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { serializeResultToString: true } }
注意
以
<account-name>
本快速入門稍早取得的 NAME 和 KEY 值取代 和<account-key>
佔位元。在包含 remote-secure.yaml 檔案的工作資料夾內容中開啟新的終端機。
以互動式 (
--interactive --tty
) 模式執行 Docker 容器映像。 請確定您將目前的工作資料夾掛接至/opt/gremlin-console/conf/
容器內的路徑。docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
在 Gremlin 控制台容器內,使用 remote-secure.yaml 組態檔連線到 remote (API for Gremlin) 帳戶。
:remote connect tinkerpop.server conf/remote-secure.yaml
建立和周遊頂點和邊緣
現在主控台已連線到帳戶,請使用標準 Gremlin 語法來建立和周遊頂點和邊緣。
為具有下列屬性的產品新增頂點:
值 label product
id 68719518371
name
Kiama classic surfboard
price
285.55
category
surfboards
:> g.addV('product').property('id', '68719518371').property('name', 'Kiama classic surfboard').property('price', 285.55).property('category', 'surfboards')
重要
不要模糊前置
:>
詞。 需要 THis 前置詞,才能從遠端執行命令。使用下列屬性新增另一個 產品 頂點:
值 label product
id 68719518403
name
Montau Turtle Surfboard
price
600
category
surfboards
:> g.addV('product').property('id', '68719518403').property('name', 'Montau Turtle Surfboard').property('price', 600).property('category', 'surfboards')
建立名為
replaces
的邊緣,以定義兩個產品之間的關聯性。:> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
計算圖形內的所有頂點。
:> g.V().count()
周遊圖表以尋找取代
Kiama classic surfboard
的所有頂點。:> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
周遊圖表以尋找取代的所有頂點
Montau Turtle Surfboard
。:> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Montau Turtle Surfboard').outE('replaces').inV()
清除資源
當您不再需要 Gremlin 帳戶的 API 時,請刪除對應的資源群組。
如果 resourceGroupName 不存在,請建立殼層變數。
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"
使用
az group delete
來刪除資源群組。az group delete \ --name $resourceGroupName
我們是如何解決此問題的?
Azure Cosmos DB for Apache Gremlin 藉由提供 Gremlin 即服務來解決我們的問題。 透過此供應專案,您不需要站立自己的 Gremlin 伺服器實例或管理您自己的基礎結構。 更進一步,您可以隨著需求隨著時間成長而調整解決方案。
若要連線到 Gremlin 帳戶的 API,您可以使用 tinkerpop/gremlin-console
容器映射,以不需要本機安裝的方式來執行 gremlin 控制台。 然後,您使用儲存在 remote-secure.yaml 檔案中的組態,從執行中的容器連線到 Gremlin 帳戶的 API。 從該處,您執行了多個常見的 Gremlin 命令。