Gráfico de procesamiento con SQL Server y Azure SQL Database
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed Instance
SQL Server ofrece funcionalidades de base de datos de grafos para modelar relaciones de varios a varios. Las relaciones de grafos se integran en Transact-SQL y reciben las ventajas de usar SQL Server como sistema de administración de bases de datos fundamentales.
¿Qué es una base de datos de grafos?
Una base de datos de gráficos es una colección de nodos (o vértices) y bordes (o relaciones). Un nodo representa una entidad (por ejemplo, una persona o una organización) y un borde representa una relación entre los dos nodos que conecta (por ejemplo, "Me gusta" o amigos). Tanto los nodos como los bordes pueden tener propiedades asociadas a ellos. Estas son algunas características que hacen que una base de datos de grafos sea única:
- Los bordes o las relaciones son entidades de primera clase en una base de datos de grafos y pueden tener atributos o propiedades asociados a ellas.
- Un solo borde puede conectar flexiblemente varios nodos en una base de datos de grafos.
- Puede expresar fácilmente coincidencias de patrones y consultas de navegación en saltos múltiples.
- Puede expresar fácilmente consultas polimórficas y cierres transitivos.
Cuándo usar una base de datos de grafos
Una base de datos relacional puede lograr cualquier cosa que una base de datos de grafos pueda. Sin embargo, una base de datos de grafos facilita la expresión de determinados tipos de consultas. Además, con optimizaciones específicas, ciertas consultas pueden funcionar mejor. La decisión de elegir una base de datos relacional o de grafos se basa en los siguientes factores:
- La aplicación tiene datos jerárquicos. El tipo de datos HierarchyID se puede usar para implementar jerarquías, pero tiene algunas limitaciones. Por ejemplo, no permite almacenar varios elementos primarios para un nodo.
- La aplicación tiene relaciones complejas de varios a varios; a medida que evoluciona la aplicación, se agregan nuevas relaciones.
- Necesita analizar las relaciones y los datos interconectados.
Características de gráfico introducidas en SQL Server 2017 (14.x)
Las siguientes características se introdujeron en SQL Server 2017.
Creación de objetos de grafo
Las extensiones de Transact-SQL permiten a los usuarios crear tablas perimetrales o nodos. Tanto los nodos como los bordes pueden tener propiedades asociadas a ellos. Dado que, los nodos y los bordes se almacenan como tablas, todas las operaciones que se admiten en las tablas relacionales se admiten en el nodo o la tabla perimetral. Veamos un ejemplo:
CREATE TABLE Person (ID INTEGER PRIMARY KEY, Name VARCHAR(100), Age INT) AS NODE;
CREATE TABLE friends (StartDate date) AS EDGE;
En el diagrama siguiente se muestra cómo se almacenan los nodos y los bordes como tablas.
Extensiones de lenguaje de consulta
Se introduce una nueva MATCH
cláusula para admitir la coincidencia de patrones y la navegación de varios saltos a través del grafo. La MATCH
función usa la sintaxis de estilo ASCII-art para la coincidencia de patrones. Por ejemplo, para buscar amigos de "John":
-- Find friends of John
SELECT Person2.Name
FROM Person Person1, Friends, Person Person2
WHERE MATCH(Person1-(Friends)->Person2)
AND Person1.Name = 'John';
Totalmente integrado en SQL Server motor de base de datos
Las extensiones de Grafo están totalmente integradas en SQL Server motor. Use el mismo motor de almacenamiento, metadatos, procesador de consultas, etc. para almacenar y consultar los datos del grafo. Consulta entre gráficos y datos relacionales en una sola consulta. Combinación de funcionalidades de grafo con otras tecnologías de SQL Server como índices de almacén de columnas, alta disponibilidad, servicios de R, etc. SQL Graph también admite todas las características de seguridad y cumplimiento disponibles con SQL Server.
Herramientas y ecosistema
Benefíciese de las herramientas y el ecosistema existentes que SQL Server ofertas. Herramientas como copias de seguridad y restauración, importación y exportación, BCP solo funciona de forma predeterminada. Otras herramientas o servicios como SSIS, SSRS o Power BI funcionan con tablas de grafos, de la manera en que funcionan con tablas relacionales.
Restricciones perimetrales
Una restricción perimetral se define en una tabla perimetral de grafos y es un par de tablas de nodos que un tipo perimetral determinado puede conectarse. Las restricciones perimetrales ayudan a los desarrolladores a restringir el tipo de nodos que un perímetro determinado puede conectar.
Para más información sobre cómo crear y usar restricciones perimetrales, consulte Restricciones perimetrales.
Combinación de DML
La instrucción MERGE realiza operaciones de inserción, actualización o eliminación en una tabla de destino en función de los resultados de una combinación con una tabla de origen. Por ejemplo, puede sincronizar dos tablas insertando, actualizando o eliminando filas en una tabla de destino en función de las diferencias entre la tabla de destino y la tabla de origen. El uso de predicados MATCH en una instrucción MERGE ahora se admite en Azure SQL Database y SQL Server vNext. Es decir, ahora es posible combinar los datos actuales del grafo (tablas de nodo o borde) con nuevos datos mediante los predicados MATCH para especificar relaciones de grafo en una sola instrucción, en lugar de instrucciones INSERT/UPDATE/DELETE independientes.
Para obtener más información sobre cómo se puede usar la coincidencia en DML de mezcla, consulte instrucción MERGE.
Ruta de acceso más corta
La función SHORTEST_PATH busca la ruta de acceso más corta entre dos nodos de un grafo o a partir de un nodo determinado a todos los demás nodos del grafo. SHORTEST PATH
también se puede usar para buscar un cierre transitivo o para recorridos de longitud arbitraria en el gráfico.
Pasos siguientes
- Lectura de SQL Graph Database - Architecture
- Para empezar a trabajar con SQL Graph, consulte SQL Graph Database - Sample