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 nodos y vínculos de gráficos. Para mutar datos en un gráfico, debes mutar los datos en las tablas de entrada correspondientes. Para obtener más información, consulta la descripción general del esquema de Spanner Graph.
Antes de comenzar
Para completar los pasos de la consola de Google Cloud y las muestras de código de este documento, primero debes seguir los pasos que se indican en Configura y consulta Spanner Graph para hacer lo siguiente:
Cómo insertar nodos o perímetros
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 DML o APIs de mutación.
Antes de insertar un borde, asegúrate de que los nodos de origen y destino que lo conectan existan. 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 sentencia 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 nodos o aristas existentes con una declaración de lenguaje de manipulación de datos (DML) de GoogleSQL 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 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 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 gráfico 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 la siguiente consulta de Spanner Graph con una sentencia DML y, luego, haz clic en Run Query:
-- 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 gcloud CLI.
- 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 gcloud CLI, 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 se refieran a él. Si existen estos tipos de aristas, es posible que recibas errores de violación de integridad referencial. 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 gcloud CLI.
- 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 sentencia 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 grafos
Puedes mutar automáticamente los datos del 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 nodos y bordes.
Para actualizar y borrar de forma masiva y eficiente los nodos y los bordes del gráfico, usa DML particionada.
¿Qué sigue?
- Lee la descripción general de las consultas de Spanner Graph.
- Obtén información sobre las prácticas recomendadas para ajustar las consultas de Spanner Graph.