O Spanner Graph é um recurso do Spanner e do Spanner Omni que permite criar e consultar gráficos de propriedades usando um banco de dados de grafos diretamente no Spanner. O Spanner Graph combina a escalonabilidade e a confiabilidade do Spanner com o poder da modelagem e da consulta de grafos.
Os gráficos de propriedades modelam dados como nós (entidades) e arestas (relações entre entidades), que podem ter propriedades (rótulos e metadados). Isso é especialmente útil para dados complexos e altamente conectados, como redes sociais, detecção de fraudes e mecanismos de recomendação.
Os tópicos neste documento se aplicam ao Spanner Omni da mesma forma que ao Spanner.
Configurar e consultar o Spanner Graph
Para começar a usar o Spanner Graph, primeiro crie uma implantação e um banco de dados do Spanner Omni. Depois de criar o banco de dados, defina um esquema de gráfico de propriedades que mapeia as tabelas do Spanner Omni para nós e arestas do gráfico.
Depois de configurar o esquema e inserir dados nas tabelas subjacentes, você pode executar consultas de gráficos usando a linguagem de consulta de gráficos (GQL), uma extensão do GoogleSQL que implementa o padrão ISO GQL. Para mais informações, consulte Configurar e consultar o Spanner Graph na documentação do Spanner.
Visão geral do esquema do Spanner Graph
O esquema do Spanner Graph interpreta seus dados relacionais como um gráfico. O esquema especifica as tabelas de nós e arestas que compõem seu grafo. Cada tabela mapeia linhas de uma tabela do Spanner para elementos do gráfico. Os elementos podem ter rótulos para categorizá-los e propriedades para armazenar atributos. Para mais informações, consulte Visão geral do esquema na documentação do Spanner.
Criar e gerenciar um esquema do Spanner Graph
Use instruções de linguagem de definição de dados (DDL) para criar, atualizar ou excluir a definição do gráfico de propriedades. A instrução CREATE PROPERTY GRAPH define o gráfico, especificando as tabelas, chaves e rótulos subjacentes. Para mais
informações, consulte
Criar e gerenciar um Spanner Graph schema
na documentação do Spanner.
Práticas recomendadas para projetar um esquema
Um design de esquema eficiente é crucial para a performance. Algumas práticas recomendadas:
Usar a intercalação para colocar arestas com os nós de origem.
Usar restrições referenciais (chaves estrangeiras) para ajudar a garantir a integridade do gráfico.
Criar índices secundários em propriedades que são filtradas com frequência.
Escolher entre designs esquematizados e sem esquema com base nos padrões de consulta.
Para mais informações, consulte Práticas recomendadas para criar um esquema na documentação do Spanner.
Usar visualizações SQL para criar um gráfico de propriedades
É possível usar visualizações SQL para definir os nós e as arestas do seu gráfico. Para saber mais sobre as diferenças entre usar uma visualização SQL e uma tabela para criar um gráfico, consulte Benefícios de criar gráficos com visualizações em vez de tabelas na documentação do Spanner.
Visão geral dos gráficos criados com visualizações SQL
Usar visualizações como uma camada de abstração oferece controle de acesso no nível da linha, transformações de dados flexíveis e uma transição mais suave de modelos de dados sem esquema para formalizados. Para mais informações, consulte Visão geral dos gráficos criados com base em visualizações do SQL.
Criar um gráfico com visualizações SQL
Para criar um gráfico com base em visualizações, defina as visualizações usando o SQL padrão. Em seguida, faça referência a eles nas cláusulas NODE TABLES ou EDGE TABLES da sua instrução CREATE PROPERTY GRAPH. É necessário definir explicitamente um KEY para cada
elemento baseado em visualização. A cláusula KEY especifica as colunas da visualização de origem que identificam de maneira exclusiva cada elemento do gráfico. Para mais informações, consulte Criar um gráfico com base em visualizações SQL na documentação do Spanner.
Gerenciar dados do Spanner Graph
Para gerenciar dados no Spanner Graph, modifique as tabelas subjacentes que definem o gráfico. Para mais informações, consulte Gerenciar dados do Spanner Graph na documentação do Spanner.
| Operação | Descrição |
|---|---|
| Inserir | Adicione novas linhas às tabelas de nós e arestas usando instruções INSERT ou APIs de mutação. |
| Atualizar | Modifique as propriedades atuais atualizando as colunas correspondentes nas tabelas subjacentes. |
| Excluir | Remova nós ou arestas excluindo as linhas correspondentes. Use ON DELETE CASCADE para remover automaticamente as arestas associadas ao excluir um nó. |
Consultas do Spanner Graph
O Spanner Graph oferece suporte à Graph Query Language (GQL) para consultas que percorrem e analisam seus dados de gráficos.
Visão geral das consultas
As consultas de gráfico usam a cláusula GRAPH para especificar o gráfico de destino e a cláusula MATCH para definir os padrões que você quer encontrar. É possível retornar propriedades de nós e arestas ou realizar agregações nos resultados. Para mais informações, consulte Visão geral das consultas na documentação do Spanner.
Trabalhar com caminhos
Os caminhos representam sequências de nós e arestas no gráfico. Você pode encontrar todos os caminhos entre dois nós, o caminho mais curto ou filtrar caminhos com base nas propriedades ou no comprimento deles usando funções como PATH_LENGTH(), NODES() e EDGES(). Para mais informações, consulte
Trabalhar com caminhos na documentação
do Spanner.
Práticas recomendadas para ajustar consultas
Para otimizar suas consultas de gráfico:
Comece as travessias com nós de baixa cardinalidade.
Especifique explicitamente os rótulos para todos os padrões de nós e arestas.
Use a função
IS_FIRST()para limitar o número de arestas percorridas de supernós de alta cardinalidade.
Para mais informações, consulte Práticas recomendadas para ajuste de consultas na documentação do Spanner.
Usar a pesquisa de texto completo com o Spanner Graph
O Spanner Graph se integra aos recursos de pesquisa de texto completo do Spanner, permitindo que você procure nós ou arestas com base em propriedades de texto não estruturadas usando a função SEARCH(). Para mais informações, consulte Usar a pesquisa de texto completo com o Spanner Graph na documentação do Spanner.
Usar a pesquisa vetorial com o Spanner Graph
É possível realizar pesquisas de similaridade vetorial nos dados de gráfico para encontrar os vizinhos K mais próximos (KNN) ou os vizinhos mais próximos aproximados (ANN). Isso é útil para recomendações baseadas em similaridade e aplicativos baseados em IA. Para mais informações, consulte Usar a pesquisa vetorial com o Spanner Graph na documentação do Spanner.
Gerenciar dados sem esquema com o Spanner Graph
Para aplicativos com modelos de dados em evolução, o Spanner Graph
oferece suporte ao gerenciamento de dados sem esquema. É possível armazenar todos os nós e arestas em tabelas únicas e genéricas com colunas JSON para propriedades, o que permite adicionar novos tipos e atributos sem mudanças de DDL. Para mais informações, consulte
Gerenciar dados sem esquema com o Spanner Graph
na documentação do Spanner.
Migrar para o Spanner Graph
É possível migrar os dados de gráficos atuais de outros bancos de dados para o Spanner Graph. Normalmente, esse processo envolve exportar seus dados como arquivos CSV ou JSON e depois importá-los para as tabelas do Spanner que dão suporte ao novo gráfico de propriedades. Para mais informações, consulte Migrar seus dados para o Spanner Graph na documentação do Spanner.
Referência do Spanner Graph para usuários do openCypher
Se você já conhece o openCypher, a implementação do GQL no Spanner Graph é familiar, mas há algumas diferenças de sintaxe.
Essa referência ajuda a mapear conceitos e consultas do openCypher para a semântica do Spanner Graph MATCH e RETURN. Para mais informações, consulte Referência do Spanner Graph para usuários do openCypher na documentação do Spanner.
Resolver problemas do Spanner Graph
Problemas comuns no Spanner Graph incluem violações de integridade referencial (arestas soltas) e consultas lentas. A solução de problemas envolve inspecionar as definições de esquema, verificar se há nós ou arestas ausentes e usar planos de consulta para identificar gargalos de desempenho. Para mais informações, consulte Resolver problemas do Spanner Graph na documentação do Spanner.