Gráfico de procesamiento con SQL Server y Azure SQL DatabaseGraph processing with SQL Server and Azure SQL Database

SE APLICA A: síSQL Server (a partir de 2017) síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2017) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server ofrece capacidades de base de datos de gráfico para modelar las relaciones de varios a varios.offers graph database capabilities to model many-to-many relationships. Las relaciones de graph se integran en Transact-SQLTransact-SQL y recibir las ventajas de usar SQL ServerSQL Server como el sistema de administración de base de datos fundamentales.The graph relationships are integrated into Transact-SQLTransact-SQL and receive the benefits of using SQL ServerSQL Server as the foundational database management system.

¿Qué es una base de datos de gráfico?What is a graph database?

Una base de datos de gráficos es una colección de nodos (o vértices) y bordes (o relaciones).A graph database is a collection of nodes (or vertices) and edges (or relationships). 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, gustos o amigos).A node represents an entity (for example, a person or an organization) and an edge represents a relationship between the two nodes that it connects (for example, likes or friends). Los nodos y bordes pueden tener propiedades asociadas a ellos.Both nodes and edges may have properties associated with them. Estas son algunas características que hacen que una base de datos de gráfico únicos:Here are some features that make a graph database unique:

  • Bordes o las relaciones son entidades de primera clases en una base de datos del gráfico y pueden atributos o propiedades asociados a ellas.Edges or relationships are first class entities in a Graph Database and can have attributes or properties associated with them.
  • Un solo borde flexible puede conectar varios nodos en una base de datos del gráfico.A single edge can flexibly connect multiple nodes in a Graph Database.
  • Coincidencia de patrones y las consultas de navegación en saltos múltiples se pueden expresar fácilmente.You can express pattern matching and multi-hop navigation queries easily.
  • Puede expresar consultas polimórficas y cierre transitivo fácilmente.You can express transitive closure and polymorphic queries easily.

Cuándo usar una base de datos de gráficoWhen to use a graph database

No hay nada que puede conseguir una base de datos de gráfico, que no se puede lograr mediante una base de datos relacional.There is nothing a graph database can achieve, which cannot be achieved using a relational database. Sin embargo, una base de datos de gráfico puede facilitar su express cierto tipo de consultas.However, a graph database can make it easier to express certain kind of queries. Además, con optimizaciones específicas, pueden funcionar mejor determinadas consultas.Also, with specific optimizations, certain queries may perform better. Su decisión para elegir una u otra puede basarse en los siguientes factores:Your decision to choose one over the other can be based on following factors:

  • La aplicación tiene datos jerárquicos.Your application has hierarchical data. El tipo de datos HierarchyID se puede usar para implementar las jerarquías, pero tiene algunas limitaciones.The HierarchyID datatype can be used to implement hierarchies, but it has some limitations. Por ejemplo, no permite almacenar varios elementos primarios de un nodo.For example, it does not allow you to store multiple parents for a node.
  • La aplicación tiene relaciones complejas de varios a varios; a medida que evoluciona la aplicación, se agregan nuevas relaciones.Your application has complex many-to-many relationships; as application evolves, new relationships are added.
  • Necesita analizar las relaciones y los datos interconectados.You need to analyze interconnected data and relationships.

Características del gráfico presentadas en SQL Server 2017 (14.x)SQL Server 2017 (14.x)Graph features introduced in SQL Server 2017 (14.x)SQL Server 2017 (14.x)

Hemos empezado a agregar extensiones graph a SQL Server, para que sea más fácil almacenar y consultar datos del gráfico.We are starting to add graph extensions to SQL Server, to make storing and querying graph data easier. Las características siguientes se presentan en la primera versión.Following features are introduced in the first release.

Crear objetos de grafosCreate graph objects

Transact-SQLTransact-SQL las extensiones le permitirá a los usuarios crear tablas de nodo o perimetral.extensions will allow users to create node or edge tables. Los nodos y bordes pueden tener propiedades asociadas a ellos.Both nodes and edges can have properties associated to them. Puesto que los nodos y bordes se almacenan como tablas, se admiten todas las operaciones que se admiten en tablas relacionales en la tabla de nodo o perimetral.Since, nodes and edges are stored as tables, all the operations that are supported on relational tables are supported on node or edge table. A continuación, se muestra un ejemplo:Here is an example:

CREATE TABLE Person (ID INTEGER PRIMARY KEY, Name VARCHAR(100), Age INT) AS NODE;
CREATE TABLE friends (StartDate date) AS EDGE;

tablas de amigos de personaperson-friends-tables
Los nodos y bordes se almacenan como tablasNodes and Edges are stored as tables

Extensiones de lenguaje de consultaQuery language extensions

Nuevo MATCH cláusula se introdujo para admitir la coincidencia de patrones y navegación en saltos múltiples a través del gráfico.New MATCH clause is introduced to support pattern matching and multi-hop navigation through the graph. El MATCH función emplea la sintaxis de estilo de-arte ASCII para la coincidencia de patrones.The MATCH function uses ASCII-art style syntax for pattern matching. Por ejemplo:For example:

-- Find friends of John
SELECT Person2.Name 
FROM Person Person1, Friends, Person Person2
WHERE MATCH(Person1-(Friends)->Person2)
AND Person1.Name = 'John';

Completamente integrado en SQL ServerSQL Server motorFully integrated in SQL ServerSQL Server Engine

Extensiones Graph están totalmente integradas en SQL ServerSQL Server motor.Graph extensions are fully integrated in SQL ServerSQL Server engine. Use el mismo motor de almacenamiento, los metadatos, el procesador de consultas, etc. para almacenar y consultar datos del gráfico.Use the same storage engine, metadata, query processor, etc. to store and query graph data. Consulta a través de graph y datos relacionales en una sola consulta.Query across graph and relational data in a single query. Combinación de funcionalidades de gráfico con otros SQL ServerSQL Server tecnologías como almacén de columnas, de alta disponibilidad, servicios de R, etcetera. Base de datos SQL graph también es compatible con todas la seguridad y cumplimiento de las características disponibles con SQL ServerSQL Server.Combining graph capabilities with other SQL ServerSQL Server technologies like columnstore, HA, R services, etc. SQL graph database also supports all the security and compliance features available with SQL ServerSQL Server.

Las herramientas y el ecosistemaTooling and ecosystem

Beneficiarse de las herramientas existentes y el ecosistema que SQL ServerSQL Server ofrece.Benefit from existing tools and ecosystem that SQL ServerSQL Server offers. Herramientas como copia de seguridad y restauración, importación y exportación, funcionan sin problemas BCP desde el principio.Tools like backup and restore, import and export, BCP just work out of the box. Otras herramientas o servicios como SSIS, SSRS o Power BI funcionará con tablas de graph, simplemente la forma de trabajar con tablas relacionales.Other tools or services like SSIS, SSRS, or Power BI will work with graph tables, just the way they work with relational tables.

Restricciones perimetralesEdge Constraints

Una restricción perimetral se define en una tabla de borde del gráfico y es un par de tablas de nodo que se puede conectar a un tipo de borde determinado.An edge constraint is defined on a graph edge table and is a pair of node table(s) that a given edge type can connect. Esto ofrece a los usuarios un mejor control sobre su esquema de gráfico.This gives users a better control over their graph schema. Con la Ayuda de las restricciones perimetrales, los usuarios pueden restringir el tipo de nodos que se puede conectar un borde determinado.With the help of edge constraints users can restrict the type of nodes a given edge is allowed to connect.

Para obtener información acerca de cómo crear y usar las restricciones perimetrales, consulte las restricciones perimetralesTo learn more about how to create and use edge constraints refer to Edge Constraints

Mezcla de DMLMerge DML

El mezcla instrucción lleva a cabo Insertar, actualizar o eliminar operaciones en una tabla de destino basándose en los resultados de una combinación con una tabla de origen.The MERGE statement performs insert, update, or delete operations on a target table based on the results of a join with a source table. Por ejemplo, puede sincronizar dos tablas insertando, actualizando o eliminando las filas de una tabla de destino basándose en las diferencias entre la tabla de destino y la tabla de origen.For example, you can synchronize two tables by inserting, updating, or deleting rows in a target table based on differences between the target table and the source table. Ahora se admite el uso de predicados de coincidencia en una instrucción MERGE en Azure SQL Database y SQL Server vNext.Using MATCH predicates in a MERGE statement is now supported on Azure SQL Database and SQL Server vNext. Es decir, ahora es posible combinar los datos de gráfico actual (tablas de nodo o perimetral) con nuevos datos mediante los predicados de coincidencia para especificar relaciones de gráfico en una sola instrucción, en lugar de instrucciones INSERT, UPDATE o DELETE independientes.That is, it is now possible to merge your current graph data (node or edge tables) with new data using the MATCH predicates to specify graph relationships in a single statement, instead of separate INSERT/UPDATE/DELETE statements.

Para obtener información acerca de cómo se puede usar la coincidencia de mezcla DML, consulte instrucción MERGETo learn more about how match can be used in merge DML refer to MERGE Statement

Pasos siguientesNext steps

Leer el gráfico SQL Database: arquitecturaRead the SQL Graph Database - Architecture