Processamento de gráficos 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
Instância Gerenciada SQL do Azure
banco de dados SQL no Microsoft Fabric
O SQL Server oferece recursos de banco de dados gráfico para modelar relações muitos-para-muitos. As relações gráficas 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 fundamental.
O que é uma base de dados gráfica?
Um banco de dados gráfico é uma coleção de nós (ou vértices) e arestas (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 ele conecta (por exemplo, curtidas ou amigos). Ambos os nós e bordas podem ter propriedades associadas a eles. Aqui estão alguns recursos que tornam um banco de dados gráfico exclusivo:
- Arestas ou relações são entidades de primeira classe em um Banco de Dados de Gráfico e podem ter atributos ou propriedades associadas a elas.
- Uma única borda pode conectar de forma flexível vários nós em um banco de dados gráfico.
- Você pode expressar correspondência de padrões e consultas de navegação multi-hop facilmente.
- Você pode expressar fechamento transitivo e consultas polimórficas facilmente.
Quando usar um banco de dados gráfico
Um banco de dados relacional pode alcançar tudo o que um banco de dados gráfico pode. No entanto, um banco de dados gráfico facilita a expressão de certos tipos de consultas. Além disso, com otimizações específicas, certas 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 muitos-para-muitos; À medida que o aplicativo evolui, novos relacionamentos são adicionados.
- Você precisa analisar dados e relacionamentos interconectados.
Recursos gráficos introduzidos no SQL Server 2017 (14.x)
Os seguintes recursos foram introduzidos no SQL Server 2017.
Criar objetos de gráfico
Transact-SQL extensões permitem que os usuários criem tabelas de nós ou bordas. Tanto os nós quanto as bordas podem ter propriedades associadas a eles. Como nós e bordas são armazenados como tabelas, todas as operações suportadas em tabelas relacionais são suportadas em tabelas de nó ou borda. Aqui está 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.
Extensões de linguagem de consulta
Nova cláusula MATCH
é introduzida para suportar correspondência de padrões e navegação multi-hop através do gráfico. A função MATCH
usa 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 de gráfico são totalmente integradas no mecanismo do SQL Server. Use o mesmo mecanismo de armazenamento, metadados, processador de consultas, etc. para armazenar e consultar dados gráficos. Consulta entre gráficos e dados relacionais em uma única consulta. A combinação de recursos gráficos com outras tecnologias do SQL Server, como índices columnstore, HA, serviços R etc. SQL gráfico, também oferece 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 simplesmente funcionam fora da caixa. Outras ferramentas ou serviços como SSIS, SSRS ou Power BI funcionam com tabelas gráficas, da mesma forma que funcionam com tabelas relacionais.
Restrições de borda
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 associaçã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 gráfico atuais (tabelas de nó ou borda) com novos dados usando os predicados MATCH para especificar relações de gráfico 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 Declaração MERGE.
Caminho mais curto
A função SHORTEST_PATH encontra o caminho mais curto entre quaisquer dois nós em um gráfico ou a partir de um determinado nó para todos os outros nós no gráfico.
SHORTEST PATH
também pode ser usado para encontrar um fechamento transitivo ou para travessias de comprimento arbitrário no gráfico.
Banco de dados SQL de malha
No banco de dados SQL de malha, o SQL Graph é permitido, mas as tabelas de nó e borda não serão espelhadas no Fabric OneLake.
Conteúdo relacionado
- Leia o Banco de Dados SQL Graph - Arquitetura
- Para começar a usar o SQL Graph, consulte Banco de Dados SQL Graph - Exemplo de