Inicio rápido: Recorrido de vértices y bordes con la consola de Gremlin y Azure Cosmos DB for Apache Gremlin
SE APLICA A: Gremlin
Azure Cosmos DB for Apache Gremlin es un servicio de base de datos de grafos totalmente administrado que implementa el conocido Apache Tinkerpop
, un marco informático de grafos mediante el lenguaje de consulta Gremlin. La API para Gremlin ofrece una forma sencilla de empezar a usar Gremlin con un servicio que puede aumentar y escalar horizontalmente tanto como necesite con una administración mínima.
En este inicio rápido, usará la consola de Gremlin para conectarse a una cuenta de Azure Cosmos DB for Gremlin recién creada.
Requisitos previos
- Una cuenta de Azure con una suscripción activa.
- ¿No tiene una suscripción de Azure? Regístrese para obtener una cuenta de Azure gratuita.
- ¿No quiere una suscripción de Azure? Puede probar Azure Cosmos DB gratis sin necesidad de suscripción.
- Host de Docker
- ¿No tiene Docker instalado? Pruebe este inicio rápido en GitHub Codespaces.
- Interfaz de la línea de comandos (CLI) de Azure
Azure Cloud Shell
En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.
Para iniciar Azure Cloud Shell:
Opción | Ejemplo o vínculo |
---|---|
Seleccione Pruébelo en la esquina superior derecha de un bloque de código o de comandos. Solo con seleccionar Pruébelo no se copia automáticamente el código o comando en Cloud Shell. | |
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador. | |
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal. |
Para usar Azure Cloud Shell:
Inicie Cloud Shell.
Seleccione el botón Copiar en un bloque de código (o bloque de comandos) para copiar el código o comando.
Pegue el código o comando en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.
Seleccione Intro para ejecutar el código o comando.
Creación de una API para una cuenta de Gremlin y recursos pertinentes
La cuenta de API para Gremlin debe crearse antes de usar la consola de Gremlin. Además, ayuda a tener la base de datos y el grafo en su lugar.
Cree variables de shell para accountName, resourceGroupName y 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"
Si aún no lo ha hecho, inicie sesión en la CLI de Azure con
az login
.Use
az group create
para crear un nuevo grupo de recursos en la suscripción.az group create \ --name $resourceGroupName \ --location $location
Use
az cosmosdb create
para crear una nueva cuenta de API para Gremlin con la configuración predeterminada.az cosmosdb create \ --resource-group $resourceGroupName \ --name $accountName \ --capabilities "EnableGremlin" \ --locations regionName=$location \ --enable-free-tier true
Nota:
Puede tener una cuenta de Azure Cosmos DB de nivel Gratis por cada suscripción de Azure y debe optar por tenerla al crear la cuenta. Si este comando no consigue aplicar el descuento por nivel gratuito, significa que el nivel Gratis ya se habilitó en otra cuenta de la suscripción.
Obtenga la API para el punto de conexión de Gremlin NAME para la cuenta con
az cosmosdb show
.az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName \ --query "name"
Busque KEY en la lista de claves de la cuenta con
az-cosmosdb-keys-list
.az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type "keys" \ --query "primaryMasterKey"
Registre los valores NAME y KEY. Necesitará estas credenciales más adelante.
Cree una base de datos denominada
cosmicworks
conaz cosmosdb gremlin database create
.az cosmosdb gremlin database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name "cosmicworks"
Cree un grafo mediante
az cosmosdb gremlin graph create
. Asigne un nombre al grafoproducts
, establezca el rendimiento en400
y, por último, establezca la ruta de acceso de la clave de partición en/category
.az cosmosdb gremlin graph create \ --resource-group $resourceGroupName \ --account-name $accountName \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category" \ --throughput 400
Inicio y configuración de la consola de Gremlin mediante Docker
En la consola de Gremlin, en esta guía de inicio rápido se usa la tinkerpop/gremlin-console
imagen de contenedor de Docker Hub. Esta imagen garantiza que usa la versión adecuada de la consola (3.4
) para la conexión con la API para Gremlin. Una vez que se ejecuta la consola, conéctese desde el host de Docker local a la API remota para la cuenta de Gremlin.
Extraiga la versión
3.4
de la imagen de contenedortinkerpop/gremlin-console
.docker pull tinkerpop/gremlin-console:3.4
Cree una carpeta de trabajo vacía. En la carpeta vacía, cree un archivo remote-secure.yaml. Agregue esta configuración de YAML al archivo.
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 } }
Nota:
Reemplace los marcadores de
<account-name>
y<account-key>
por los valores NAME y KEY obtenidos anteriormente en este inicio rápido.Abra un nuevo terminal en el contexto de la carpeta de trabajo que incluya el archivo remote-secure.yaml.
Ejecute la imagen de contenedor de Docker en modo interactivo (
--interactive --tty
). Asegúrese de montar la carpeta de trabajo actual en la ruta de acceso/opt/gremlin-console/conf/
dentro del contenedor.docker run -it --mount type=bind,source=.,target=/opt/gremlin-console/conf/ tinkerpop/gremlin-console:3.4
En el contenedor de la consola de Gremlin, conéctese a la cuenta remota (API para Gremlin) mediante el archivo de configuración remote-secure.yaml.
:remote connect tinkerpop.server conf/remote-secure.yaml
Cree y recorra vértices y bordes
Ahora que la consola está conectada a la cuenta, use la sintaxis estándar de Gremlin para crear y atravesar vértices y bordes.
Agregue un vértice para un producto con las siguientes propiedades:
Valor 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')
Importante
No olvide el prefijo
:>
. El prefijo THis es necesario para ejecutar el comando de forma remota.Agregue otro vértice de producto con estas propiedades:
Valor 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')
Cree un borde denominado
replaces
para definir una relación entre los dos productos.:> g.V(['surfboards', '68719518403']).addE('replaces').to(g.V(['surfboards', '68719518371']))
Cuente todos los vértices del gráfico.
:> g.V().count()
Recorra el grafo y busque todos los vértices que reemplazan el
Kiama classic surfboard
.:> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Kiama classic surfboard').inE('replaces').outV()
Recorra el grafo y busque todos los vértices que reemplazan el
Montau Turtle Surfboard
.:> g.V().hasLabel('product').has('category', 'surfboards').has('name', 'Montau Turtle Surfboard').outE('replaces').inV()
Limpieza de recursos
Cuando ya no necesite la cuenta de la API para Gremlin, podrá eliminar el grupo de recursos correspondiente.
Cree una variable de shell para resourceGroupName si aún no existe.
# Variable for resource group name resourceGroupName="msdocs-cosmos-gremlin-quickstart"
Use
az group delete
para eliminar el grupo de recursos.az group delete \ --name $resourceGroupName
¿Cómo solucionamos el problema?
Azure Cosmos DB for Apache Gremlin resolvió nuestro problema al ofrecer Gremlin como servicio. Con esta oferta, no es necesario que se mantenga sus propias instancias de servidor gremlin ni administre su propia infraestructura. Aún más, puede escalar la solución a medida que sus necesidades crezcan con el tiempo.
Para conectarse a la cuenta de API para Gremlin, usó la imagen de contenedor tinkerpop/gremlin-console
para ejecutar la consola de gremlin de una manera que no requería una instalación local. A continuación, ha usado la configuración almacenada en el archivo remote-secure.yaml para conectarse desde el contenedor en ejecución de la API para la cuenta de Gremlin. Desde allí, ha ejecutado varios comandos comunes de Gremlin.