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 gráficos diretamente no Spanner. O Spanner Graph combina a escalonabilidade e a confiabilidade do Spanner com o poder da modelagem e consulta de gráficos.
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 é particularmente ú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 de gráfico.
Depois de configurar o esquema e inserir dados nas tabelas subjacentes, é possível executar consultas de gráfico usando a linguagem de consulta de gráfico (GQL, na sigla em inglês), 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 o gráfico. Cada tabela mapeia linhas de uma tabela do Spanner para elementos de 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, na sigla em inglês) para criar, atualizar ou remover 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 esquema do Spanner Graph
na documentação do Spanner.
Práticas recomendadas para projetar um esquema
Um design de esquema eficiente é essencial para a performance. Algumas práticas recomendadas:
Usar a intercalação para alocar arestas com os nós de origem.
Usar restrições referenciais (chaves externas) 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 projetar 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 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
O uso de 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 modelos formalizados. Para mais informações, consulte Visão geral dos gráficos criados com visualizações SQL.
Criar um gráfico com visualizações SQL
Para criar um gráfico com visualizações, defina as visualizações usando SQL padrão. Em seguida, faça referência a elas nas cláusulas NODE TABLES ou EDGE TABLES da instrução CREATE PROPERTY GRAPH. É necessário definir explicitamente uma KEY para cada elemento baseado em visualização. A cláusula KEY especifica as colunas da visualização de origem que identificam exclusivamente cada elemento do gráfico. Para mais informações, consulte
Criar um gráfico com visualizações SQL em
a 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 a linguagem de consulta de gráfico (GQL, na sigla em inglês) para consultas que percorrem e analisam os dados do gráfico.
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. É possível encontrar todos os caminhos entre dois nós, encontrar o caminho mais curto ou filtrar caminhos com base nas propriedades ou no comprimento 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 as consultas de gráfico:
Comece as travessias de 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 ajustar 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, que permite pesquisar 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 do gráfico para encontrar os vizinhos K mais próximos (KNN, na sigla em inglês) ou os vizinhos aproximados mais próximos (ANN, na sigla em inglês). Isso é útil para recomendações baseadas em similaridade e aplicativos orientados por 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 genéricas únicas com colunas JSON para propriedades, o que permite adicionar novos tipos e atributos sem alterações 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áfico atuais de outros bancos de dados para o Spanner Graph. Esse processo normalmente envolve a exportação dos dados como arquivos CSV ou JSON e a importação para as tabelas do Spanner que fazem backup do novo gráfico de propriedades. Para mais informações, consulte Migrar dados para o Spanner Graph na documentação do Spanner.
Referência do Spanner Graph para usuários do openCypher
Se você tiver experiência com o openCypher, a implementação do GQL no Spanner Graph será familiar, mas há algumas diferenças de sintaxe.
Esta referência ajuda a mapear conceitos e consultas do openCypher para a semântica MATCH e RETURN do Spanner Graph. 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 pendentes) e consultas lentas. A solução de problemas envolve a inspeção das definições de esquema, a verificação de nós ou arestas ausentes e o uso de planos de consulta para identificar gargalos de performance. Para mais informações, consulte Resolver problemas do Spanner Graph na documentação do Spanner.