Spanner Graph es una función de Spanner y Spanner Omni que te permite compilar y consultar gráficos de propiedades con una base de datos de gráficos directamente en Spanner. Spanner Graph combina la escalabilidad y la confiabilidad de Spanner con la potencia del modelado y las consultas de gráficos.
Los grafos de propiedades modelan los datos como nodos (entidades) y aristas (relaciones entre entidades), y ambos pueden tener propiedades (etiquetas y metadatos). Esto es particularmente útil para datos complejos y altamente conectados, como redes sociales, detección de fraudes y motores de recomendaciones.
Los temas de este documento se aplican a Spanner Omni de la misma manera que a Spanner.
Configurar y consultar Spanner Graph
Para comenzar a usar Spanner Graph, primero debes crear una implementación y una base de datos de Spanner Omni. Después de crear la base de datos, define un esquema de gráfico de propiedades que asigne las tablas existentes de Spanner Omni a los nodos y aristas del gráfico.
Después de configurar el esquema y de insertar datos en las tablas subyacentes, puedes ejecutar consultas de gráficos con Graph Query Language (GQL), una extensión de GoogleSQL que implementa el estándar ISO GQL. Para obtener más información, consulta Configurar y consultar Spanner Graph en la documentación de Spanner.
Descripción general del esquema de Spanner Graph
El esquema de Spanner Graph interpreta tus datos relacionales como un grafo. El esquema especifica las tablas de nodos y las tablas de aristas que componen tu gráfico. Cada tabla asigna filas de una tabla de Spanner a elementos del gráfico. Los elementos pueden tener etiquetas para categorizarlos y propiedades para almacenar atributos. Para obtener más información, consulta Descripción general del esquema en la documentación de Spanner.
Crea y administra un esquema de Spanner Graph
Usas instrucciones del lenguaje de definición de datos (DDL) para crear, actualizar o quitar la definición de tu gráfico de propiedades. La sentencia CREATE PROPERTY GRAPH define el gráfico y especifica las tablas, las claves y las etiquetas subyacentes. Para obtener más información, consulta Crea y administra un esquema de Spanner Graph en la documentación de Spanner.
Prácticas recomendadas para diseñar un esquema
Un diseño de esquema eficiente es fundamental para el rendimiento. Las prácticas recomendadas incluyen las siguientes:
Usamos la intercalación para ubicar los bordes junto con sus nodos fuente.
Usamos restricciones referenciales (claves externas) para garantizar la integridad del gráfico.
Crea índices secundarios en las propiedades que se filtran con frecuencia.
Elegir entre diseños esquematizados y sin esquema según tus patrones de búsqueda
Para obtener más información, consulta Prácticas recomendadas para diseñar un esquema en la documentación de Spanner.
Usa vistas de SQL para crear un gráfico de propiedades
Puedes usar vistas de SQL para definir los nodos y los bordes de tu gráfico. Para obtener información sobre las diferencias entre usar una vista de SQL y una tabla para crear un gráfico, consulta Beneficios de crear gráficos con vistas en lugar de tablas en la documentación de Spanner.
Descripción general de los gráficos creados a partir de vistas de SQL
El uso de vistas como una capa de abstracción proporciona control de acceso a nivel de las filas, transformaciones de datos flexibles y una transición más fluida de modelos de datos sin esquema a modelos formalizados. Para obtener más información, consulta Descripción general de los gráficos creados a partir de vistas de SQL.
Crea un gráfico a partir de vistas de SQL
Para crear un gráfico a partir de vistas, define las vistas con SQL estándar. Luego, haz referencia a ellos en las cláusulas NODE TABLES o EDGE TABLES de tu declaración CREATE PROPERTY GRAPH. Debes definir de forma explícita un KEY para cada elemento basado en vistas. La cláusula KEY especifica las columnas de la vista de origen que identifican de forma única cada elemento del gráfico. Para obtener más información, consulta Crea un gráfico a partir de vistas de SQL en la documentación de Spanner.
Administra los datos de Spanner Graph
Para administrar los datos en Spanner Graph, debes modificar las tablas subyacentes que definen el gráfico. Para obtener más información, consulta Administra datos de Spanner Graph en la documentación de Spanner.
| Operación | Descripción |
|---|---|
| Insertar | Agrega filas nuevas a las tablas de nodos y bordes con instrucciones INSERT o APIs de mutación. |
| Actualizar | Modifica las propiedades existentes actualizando las columnas correspondientes en las tablas subyacentes. |
| Borrar | Borra los nodos o las aristas borrando las filas correspondientes. Usa ON DELETE CASCADE para quitar automáticamente las aristas asociadas cuando borres un nodo. |
Consultas de Spanner Graph
Spanner Graph admite Graph Query Language (GQL) para las consultas que permiten recorrer y analizar tus datos de gráficos.
Descripción general de las búsquedas
Las consultas de gráficos usan la cláusula GRAPH para especificar el gráfico objetivo y la cláusula MATCH para definir los patrones que deseas encontrar. Puedes devolver propiedades de nodos y bordes, o realizar agregaciones en los resultados. Para obtener más información, consulta Descripción general de las consultas en la documentación de Spanner.
Trabaja con rutas
Las rutas representan secuencias de nodos y bordes en el gráfico. Puedes encontrar todas las rutas entre dos nodos, la ruta más corta o filtrar las rutas según sus propiedades o longitud con funciones como PATH_LENGTH(), NODES() y EDGES(). Para obtener más información, consulta Trabaja con rutas de acceso en la documentación de Spanner.
Prácticas recomendadas para ajustar las búsquedas
Para optimizar tus consultas de gráficos, haz lo siguiente:
Comienza tus recorridos desde los nodos con menor cardinalidad.
Especifica de forma explícita las etiquetas para todos los patrones de nodos y bordes.
Usa la función
IS_FIRST()para limitar la cantidad de aristas que se atraviesan desde los supernodos de alta cardinalidad.
Para obtener más información, consulta Prácticas recomendadas para optimizar consultas en la documentación de Spanner.
Usa la búsqueda en el texto completo con Spanner Graph
Spanner Graph se integra con las capacidades de búsqueda de texto completo de Spanner, lo que te permite buscar nodos o aristas en función de propiedades de texto no estructurado con la función SEARCH(). Para obtener más información, consulta Usa la búsqueda en el texto completo con Spanner Graph en la documentación de Spanner.
Usa la búsqueda de vectores con Spanner Graph
Puedes realizar búsquedas de similitud de vectores en tus datos de grafos para encontrar los K vecinos más cercanos (KNN) o los vecinos más cercanos aproximados (ANN). Esto es útil para las recomendaciones basadas en la similitud y las aplicaciones basadas en IA. Para obtener más información, consulta Usa la búsqueda de vectores con Spanner Graph en la documentación de Spanner.
Administra datos sin esquema con Spanner Graph
Para las aplicaciones con modelos de datos en evolución, Spanner Graph admite la administración de datos sin esquemas. Puedes almacenar todos los nodos y aristas en tablas genéricas únicas con columnas JSON para las propiedades, lo que te permite agregar nuevos tipos y atributos sin cambios en el DDL. Para obtener más información, consulta Administra datos sin esquema con Spanner Graph en la documentación de Spanner.
Migra a Spanner Graph
Puedes migrar tus datos de gráficos existentes desde otras bases de datos a Spanner Graph. Por lo general, este proceso implica exportar tus datos como archivos CSV o JSON y, luego, importarlos a las tablas de Spanner que respaldan tu nuevo gráfico de propiedades. Para obtener más información, consulta Migra tus datos a Spanner Graph en la documentación de Spanner.
Referencia de Spanner Graph para usuarios de openCypher
Si tienes experiencia con openCypher, la implementación de GQL en Spanner Graph te resultará familiar, pero existen algunas diferencias en la sintaxis.
Esta referencia te ayuda a correlacionar los conceptos y las consultas de openCypher con la semántica de MATCH y RETURN de Spanner Graph. Para obtener más información, consulta Referencia de Spanner Graph para usuarios de openCypher en la documentación de Spanner.
Soluciona problemas de Spanner Graph
Entre los problemas comunes en Spanner Graph, se incluyen los incumplimientos de la integridad referencial (bordes colgantes) y las consultas de ejecución lenta. La solución de problemas implica inspeccionar las definiciones de tu esquema, verificar si faltan nodos o bordes, y usar planes de consulta para identificar cuellos de botella en el rendimiento. Para obtener más información, consulta Soluciona problemas de Spanner Graph en la documentación de Spanner.