En este documento, se describe cómo mutar datos en Spanner Graph con la console de Google Cloud, Google Cloud CLI y las bibliotecas cliente. La mutación de datos de gráfico incluye la inserción, actualización y eliminación de nodos y aristas en Spanner Graph.
Spanner Graph asigna datos de tablas a los nodos y perímetros del grafo. Cambiar datos de un gráfico, debes mutar los datos en las tablas de entrada correspondientes. Para ver más información, consulta la Descripción general del esquema del gráfico de Spanner.
Antes de comenzar
Para completar los pasos de la consola de Google Cloud y las muestras de código de esta documento, primero debes seguir los pasos Configura y consulta Spanner Graph con la consola de Google Cloud para lo siguiente:
- Crea una instancia.
- Crea una base de datos.
- Crea un esquema para tu base de datos de Spanner Graph.
- Inserta datos de gráficos.
Cómo insertar nodos o aristas
Para insertar nodos o aristas, usa la consola de Google Cloud, Google Cloud CLI o las bibliotecas cliente de Spanner para insertar filas en tablas de nodos o aristas.
En la consola de Google Cloud y en Google Cloud CLI, puedes usar el lenguaje de manipulación de datos (DML) de GoogleSQL para insertar. En la biblioteca cliente de Spanner, puedes usar archivos APIs de mutación.
Antes de insertar una arista, asegúrate de que los nodos de origen y destino conectadas por el perímetro. Si insertas un borde cuando no existe el nodo de origen o de destino conectado por el borde, es posible que recibas errores de incumplimiento de integridad de referencia. Para obtener más información, consulta El nodo de origen faltante incumple la relación INTERLEAVE IN y El nodo de destino faltante incumple la restricción de clave externa.
En los siguientes ejemplos, se insertan Account
nodos y Transfer
aristas en el
gráfico:
Console
En la consola de Google Cloud, ingresa la siguiente declaración DML y Haz clic en Ejecutar consulta:
-- Insert 2 Account nodes.
INSERT INTO Account (id, create_time, is_blocked)
VALUES (1, CAST('2000-08-10 08:18:48.463959-07:52' AS TIMESTAMP), false);
INSERT INTO Account (id, create_time, is_blocked)
VALUES (2, CAST('2000-08-12 07:13:16.463959-03:41' AS TIMESTAMP), true);
-- Insert 2 Transfer edges.
INSERT INTO AccountTransferAccount (id, to_id, create_time, amount)
VALUES (1, 2, CAST('2000-09-11 03:11:18.463959-06:36' AS TIMESTAMP), 100);
INSERT INTO AccountTransferAccount (id, to_id, create_time, amount)
VALUES (1, 1, CAST('2000-09-12 04:09:34.463959-05:12' AS TIMESTAMP), 200);
gcloud
- Ejecuta sentencias con gcloud CLI.
- En la CLI de gcloud, ejecuta los siguientes comandos:
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="INSERT INTO Account (id, create_time, is_blocked) VALUES (1, CAST('2000-08-10 08:18:48.463959-07:52' AS TIMESTAMP), false)"
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="INSERT INTO Account (id, create_time, is_blocked) VALUES (2, CAST('2000-08-12 07:13:16.463959-03:41' AS TIMESTAMP), true)"
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="INSERT INTO AccountTransferAccount (id, to_id, create_time, amount) VALUES (1, 2, CAST('2000-09-11 03:11:18.463959-06:36' AS TIMESTAMP), 100)"
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="INSERT INTO AccountTransferAccount (id, to_id, create_time, amount) VALUES (1, 1, CAST('2000-09-12 04:09:34.463959-05:12' AS TIMESTAMP), 200)"
Bibliotecas cliente
Python
Java
Go
C++
Actualiza nodos o aristas
Para actualizar nodos o aristas existentes, usa la consola de Google Cloud, gcloud CLI o las bibliotecas cliente de Spanner.
Puedes actualizar los nodos o las aristas existentes con un SQL Lenguaje de manipulación de datos (DML) o consultas de Spanner Graph con una declaración DML. En la biblioteca cliente de Spanner, también puedes usar las APIs de Mutation.
Actualiza nodos o aristas con DML
En los siguientes ejemplos, se actualizan un nodo Account
y un borde Transfer
en el gráfico con la DML:
Console
En la consola de Google Cloud, ingresa la siguiente sentencia DML y haz clic en Ejecutar consulta:
-- Update Account node
UPDATE Account SET is_blocked = false WHERE id = 2;
-- Update Transfer edge
UPDATE AccountTransferAccount
SET amount = 300
WHERE id = 1 AND to_id = 2;
Console
- Ejecuta sentencias con gcloud CLI.
- En gcloud CLI, ejecuta los siguientes comandos:
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="UPDATE Account SET is_blocked = false WHERE id = 2"
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="UPDATE AccountTransferAccount SET amount = 300 WHERE id = 1 AND to_id = 2"
Bibliotecas cliente
Python
Java
Go
C++
Actualiza nodos o aristas con consultas de grafos y DML
En los siguientes ejemplos, se actualizan un nodo Account
y un borde Transfer
en el gráfico con consultas de Spanner Graph con DML:
Console
En la consola de Google Cloud, ingresa el siguiente grafo de Spanner con una declaración DML y, luego, haz clic en Ejecutar consulta:
-- Use Graph pattern matching to identify Account nodes to update:
UPDATE Account SET is_blocked = false
WHERE id IN {
GRAPH FinGraph
MATCH (a:Account WHERE a.id = 1)-[:TRANSFERS]->{1,2}(b:Account)
RETURN b.id
}
gcloud
- Ejecuta sentencias con la CLI de gcloud.
- En la CLI de gcloud, ejecuta los siguientes comandos:
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="UPDATE Account SET is_blocked = false"
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="UPDATE AccountTransferAccount SET amount = 300 WHERE id = 1 AND to_id = 2" --sql=" WHERE id IN { GRAPH FinGraph MATCH (a:Account WHERE a.id = 1)-[:TRANSFERS]->{1,2}(b:Account) RETURN b.id }"
Bibliotecas cliente
Python
Java
Go
C++
Borra nodos o aristas
Para borrar nodos o aristas existentes, usa la consola de Google Cloud, gcloud CLI o las bibliotecas cliente de Spanner.
En la consola de Google Cloud y la CLI de gcloud, puedes usar el lenguaje de manipulación de datos (DML) de GoogleSQL para borrar. En la biblioteca cliente de Spanner, puedes usar DML o APIs de mutación.
Antes de borrar un nodo, asegúrate de que no haya aristas que hagan referencia a él. Si existen estos tipos de aristas, podrías recibir una violación de la integridad referencial errores. Para obtener más información, consulta El borde saliente huérfano infringe la relación superior-secundaria y El borde entrante huérfano infringe la relación superior-secundaria.
En los siguientes ejemplos, se borran un borde Transfer
y un nodo Account
del gráfico.
Console
- Ejecuta sentencias en la consola de Google Cloud.
- En la consola de Google Cloud, ingresa la siguiente sentencia DML y haz clic en Ejecutar consulta:
-- Delete Transfer edge
DELETE FROM AccountTransferAccount
WHERE id = 1 AND to_id = 2;
-- Delete Account node
DELETE FROM Account WHERE id = 2;
gcloud
- Ejecuta sentencias con la CLI de gcloud.
- En la CLI de gcloud, ejecuta los siguientes comandos:
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="DELETE FROM AccountTransferAccount WHERE id = 1 AND to_id = 2"
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="DELETE FROM Account WHERE id = 2"
Bibliotecas cliente
Python
Java
Go
C++
Puedes combinar las consultas de Spanner Graph con tu declaración DML, como se muestra en el siguiente ejemplo:
-- Use Graph pattern matching to identify Account nodes to delete:
DELETE FROM AccountTransferAccount
WHERE id IN {
GRAPH FinGraph
MATCH (a:Account WHERE a.id = 1)-[:TRANSFERS]->(b:Account)
RETURN b.id
}
Opciones para mutar datos de gráficos
Puedes mutar automáticamente los datos de gráfico de las siguientes maneras:
- Borra automáticamente los bordes del gráfico con la acción ON DELETE CASCADE.
- Borra automáticamente los nodos y los bordes del grafo con la política de TTL. Para obtener más información, consulta TTL en los nodos y las aristas.
Para actualizar y borrar de forma masiva y eficiente los nodos y los bordes del gráfico, usa la DML particionada.
¿Qué sigue?
- Lee la descripción general de las consultas sobre gráficos de Spanner.
- Conoce las prácticas recomendadas para ajustar las consultas del grafo de Spanner.