Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Cosmos DB for Apache Gremlin 是一种完全托管的图形数据库服务,用于实现常用的 Apache Tinkerpop
(使用 Gremlin 查询语言的图形计算框架)。 API for Gremlin 为你提供了一种低摩擦方式来将 Gremlin 与服务结合使用,可通过最少的管理根据需要进行增长和横向扩展。
在本快速入门中,你会使用 Gremlin 控制台库连接到新建的 Azure Cosmos DB for Gremlin 帐户。
先决条件
- 具有活动订阅的 Azure 帐户。
- 无 Azure 订阅? 注册 Azure 帐户。
-
Docker 主机
- 尚未安装 Docker? 在 GitHub Codespaces 中试用本快速入门。
- Azure 命令行接口 (CLI)
创建 API for Gremlin 帐户和相关资源
在使用 Gremlin 控制台之前,应先创建 API for Gremlin 帐户。 此外,建立数据库和图表也很有帮助。
为 accountName、resourceGroupName 和 location 创建 shell 变量。
# 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"
如果尚未登录到 Azure CLI,请使用
az login
登录。使用
az group create
在订阅中创建新的资源组。az group create \ --name $resourceGroupName \ --location $location
使用
az cosmosdb create
创建具有默认设置的新 API for Gremlin 帐户。az cosmosdb create \ --resource-group $resourceGroupName \ --name $accountName \ --capabilities "EnableGremlin" \ --locations regionName=$location \ --enable-free-tier true
使用 获取帐户的 API for Gremlin 终结点
az cosmosdb show
。az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
使用 从帐户的密钥列表中查找
az-cosmosdb-keys-list
。az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
记录 NAME 和 KEY 的值。 稍后会使用这些凭据。
使用 创建名为“
cosmicworks
”的az cosmosdb gremlin database create
。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 控制台,本快速入门使用 tinkerpop/gremlin-console
Docker Hub 中的容器映像。 此映像可确保使用适当版本的控制台 (3.4
) 来与 API for Gremlin 建立连接。 控制台运行后,从本地 Docker 主机连接到远程 API for Gremlin 帐户。
拉取
3.4
容器映像的版本tinkerpop/gremlin-console
。docker pull tinkerpop/gremlin-console:3.4
创建一个空的工作文件夹。 在空文件夹中,创建 remote-secure.yaml 文件。 将此 YAML 配置添加到文件。
hosts: [<account-name>.gremlin.cosmos.azure.cn] 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>
和<account-key>
占位符替换为本快速入门前面获取的 NAME 和 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 配置文件连接到远程 (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')
重要
不要忘记前缀
:>
。 远程运行命令需要此前缀。使用以下属性添加另一个产品顶点:
值 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()
清理资源
当不再需要 API for Gremlin 帐户时,删除相应的资源组。
为 resourceGroupName 创建 shell 变量(如果尚不存在)。
# 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 服务器实例或管理自己的基础结构。 甚至还可以随着时间推移需求的增长来扩展解决方案。
若要连接到 API for Gremlin 帐户,请使用 tinkerpop/gremlin-console
容器映像以不需要本地安装的方式运行 gremlin 控制台。 然后,使用存储在 remote-secure.yaml 文件中的配置从正在运行的容器连接到 API for Gremlin 帐户。 在此处运行了多个常见的 Gremlin 命令。