Compartilhar via


Processamento do Graph com o SQL Server e o Banco de Dados SQL do Azure

Aplica-se a: SQL Server 2017 (14.x) e versões posteriores Banco de Dados SQL do Azure Banco de Dados SQL da Instância Gerenciada de SQL do Azure no Microsoft Fabric

O SQL Server oferece recursos de banco de dados de grafo para modelar relações muitos-para-muitos. As relações de grafo são integradas ao Transact-SQL e recebem os benefícios de usar o SQL Server como o sistema de gerenciamento de banco de dados básico.

O que é um banco de dados de grafo?

Um banco de dados do grafo é uma coleção de nós (ou vértices) e bordas (ou relações). Um nó representa uma entidade (por exemplo, uma pessoa ou uma organização) e uma borda representa uma relação entre os dois nós que ela conecta (por exemplo, curtidas ou amigos). Os nós e as arestas podem ter propriedades associadas a eles. Aqui estão alguns recursos que tornam um banco de dados de grafo único:

  • Bordas ou relações são entidades de primeira classe em um Banco de Dados de Grafo e podem ter atributos ou propriedades associadas a elas.
  • Uma única borda pode conectar com flexibilidade vários nós em um banco de dados de grafo.
  • É possível expressar facilmente consultas de correspondência de padrões e navegação de salto múltiplo.
  • É possível expressar fechamento transitivo e consultas polimórficas com facilidade.

Quando usar um banco de dados de grafos

Um banco de dados relacional pode alcançar qualquer coisa que um banco de dados gráfico pode. No entanto, um banco de dados de grafo facilita a expressão de certos tipos de consultas. Além disso, com otimizações específicas, determinadas consultas podem ter um desempenho melhor. Sua decisão de escolher um banco de dados relacional ou gráfico é baseada nos seguintes fatores:

  • Seu aplicativo tem dados hierárquicos. O tipo de dados HierarchyID pode ser usado para implementar hierarquias, mas tem algumas limitações. Por exemplo, ele não permite que você armazene vários pais para um nó.
  • Seu aplicativo tem relações complexas de muitos para muitos; À medida que o aplicativo evolui, novos relacionamentos são adicionados.
  • É necessário analisar as relações e os dados interconectados.

Recursos do Graph introduzidos no SQL Server 2017 (14.x)

Os recursos a seguir foram introduzidos no SQL Server 2017.

Criar objetos de gráfico

As extensões Transact-SQL permitem que os usuários criem tabelas de nó ou borda. Tanto os nós quanto as arestas podem ter propriedades associadas a eles. Como os nós e as bordas são armazenados como tabelas, todas as operações suportadas em tabelas relacionais são suportadas na tabela de nó ou borda. Veja um exemplo:

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

O diagrama seguinte mostra como os nós e as arestas são armazenados como tabelas.

O diagrama mostrando que os nós e arestas são armazenados como tabelas.

Extensões de linguagem de consulta

Nova MATCH cláusula é introduzida para dar suporte à correspondência de padrões e à navegação multi-hop por meio do grafo. A MATCH função usa a sintaxe de estilo ASCII-art para correspondência de padrões. Por exemplo, para encontrar 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 ao Mecanismo de Banco de Dados do SQL Server

As extensões do Graph são totalmente integradas ao mecanismo do SQL Server. Use o mesmo mecanismo de armazenamento, metadados, processador de consultas, etc. para armazenar e consultar dados de grafo. Consulte dados relacionais e de grafo em uma única consulta. Combinando recursos de grafo com outras tecnologias do SQL Server, como índices columnstore, HA, serviços R etc. SQL grafo também dá suporte a todos os recursos de segurança e conformidade disponíveis com o SQL Server.

Ferramentas e ecossistema

Beneficie-se das ferramentas e do ecossistema existentes que o SQL Server oferece. Ferramentas como backup e restauração, importação e exportação, BCP funcionam imediatamente. Outras ferramentas ou serviços, como SSIS, SSRS ou Power BI, funcionam com tabelas de grafo, da mesma forma que funcionam com tabelas relacionais.

Restrições do Microsoft Edge

Uma restrição de borda é definida em uma tabela de borda de gráfico e é um par de tabelas de nós que um determinado tipo de borda pode conectar. As restrições de borda ajudam os desenvolvedores a restringir o tipo de nós que uma determinada borda pode conectar.

Para saber mais sobre como criar e usar restrições de borda, consulte Restrições de borda.

Mesclar DML

A instrução MERGE executa operações de inserção, atualização ou exclusão em uma tabela de destino com base nos resultados de uma junção com uma tabela de origem. Por exemplo, você pode sincronizar duas tabelas inserindo, atualizando ou excluindo linhas em uma tabela de destino com base nas diferenças entre a tabela de destino e a tabela de origem. O uso de predicados MATCH em uma instrução MERGE agora tem suporte no Banco de Dados SQL do Azure e no SQL Server vNext. Ou seja, agora é possível mesclar seus dados de grafo atuais (tabelas de nó ou borda) com novos dados usando os predicados MATCH para especificar relacionamentos de grafo em uma única instrução, em vez de instruções INSERT/UPDATE/DELETE separadas.

Para saber mais sobre como a correspondência pode ser usada na DML de mesclagem, consulte Instrução MERGE.

Caminho mais curto

A função SHORTEST_PATH encontra o caminho mais curto entre dois nós em um grafo ou a partir de um determinado nó para todos os outros nós no grafo. SHORTEST PATH também pode ser usado para encontrar um fechamento transitivo ou para travessias de comprimento arbitrárias no gráfico.

Banco de dados SQL do Fabric

No banco de dados SQL do Fabric, o SQL Graph é permitido, mas as tabelas de nó e borda não serão espelhadas no OneLake do Fabric.