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 AzureInstância Gerenciada de SQL do Azure

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 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). Nós e bordas 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 grafo

Um banco de dados relacional pode obter qualquer coisa que um banco de dados de grafo puder. No entanto, um banco de dados de grafo facilita a expressão de determinados 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 de grafo baseia-se 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 muitos para muitos; à medida que o aplicativo evolui, novas relações são adicionadas.
  • É 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 grafo

As extensões Transact-SQL permitem que os usuários criem tabelas de nó ou de borda. Nós e bordas podem ter propriedades associadas a eles. Como os nós e as bordas são armazenados como tabelas, todas as operações com suporte em tabelas relacionais têm suporte no nó ou na tabela de 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 a seguir mostra como nós e bordas são armazenados como tabelas.

Diagrama mostrando que nós e bordas são armazenados como tabelas.

Extensões de linguagem de consulta

A nova MATCH cláusula é introduzida para dar suporte à correspondência de padrões e à navegação de vários saltos 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 "João":

-- 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 SQL Server

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

Ferramentas e ecossistema

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

Restrições do Microsoft Edge

Uma restrição de borda é definida em uma tabela de borda do grafo e é um par de tabelas de nós que um determinado tipo de borda pode se conectar. As restrições de borda ajudam os desenvolvedores a restringir o tipo de nós que uma determinada borda pode se 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. Agora há suporte para o uso de predicados MATCH em uma instrução MERGE no Banco de Dados SQL do Azure e SQL Server vNext. Ou seja, agora é possível mesclar os dados atuais do grafo (nó ou tabelas de borda) com novos dados usando os predicados MATCH para especificar relações 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 no DML de mesclagem, consulte Instrução MERGE.

Caminho mais curto

A função SHORTEST_PATH localiza o caminho mais curto entre dois nós em um grafo ou começando 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 passagens de comprimento arbitrárias no grafo.

Próximas etapas