Com o notebook Spanner Graph, é possível explorar seus dados visualmente em um ambiente de notebook, como o Jupyter Notebook ou o JupyterLab. Usando a sintaxe de consulta da Graph Query Language (GQL), é possível extrair insights de gráficos e padrões de relacionamento, incluindo propriedades de nós e arestas e análise de expansão de vizinhos. A ferramenta também oferece visualização de metadados do esquema de gráfico, inspeção de resultados tabulares e diversas topologias de layout.
O notebook do Spanner Graph é compatível com conexões de texto simples, TLS e TLS mútuo (mTLS).
Instalar o notebook do Spanner Graph
Para instalar o pacote Spanner Graph notebook (versão 1.1.11 ou mais recente) no seu ambiente Python ou Jupyter, execute o seguinte comando pip:
pip install "spanner-graph-notebook>=1.1.11"
Carregar a extensão do Spanner Graph
Para carregar a extensão Spanner Graph no notebook Jupyter, use o seguinte comando:
%load_ext spanner_graphs
Conectar ao seu banco de dados
Para se conectar ao banco de dados do Spanner Omni, verifique se você carregou a extensão e use o comando de célula %%spanner_graph:
Texto simples
Para estabelecer uma conexão de texto simples, execute o seguinte:
%%spanner_graph --instance_type omni --endpoint OMNI_ENDPOINT:PORT --database DATABASE_NAME --use_plain_text
Substitua:
OMNI_ENDPOINT: o nome do host ou o endereço IP da instância do Spanner Omni.PORT: o número da porta da sua instância do Spanner Omni.DATABASE_NAME: o nome do banco de dados do Spanner Omni.
TLS
Para estabelecer uma conexão TLS, especifique o caminho para o certificado de CA:
%%spanner_graph --instance_type omni --endpoint OMNI_ENDPOINT:PORT --database DATABASE_NAME --ca_certificate PATH_TO_CA_CERT
Substitua:
OMNI_ENDPOINT: o nome do host ou o endereço IP da instância do Spanner Omni.PORT: o número da porta da sua instância do Spanner Omni.DATABASE_NAME: o nome do banco de dados do Spanner Omni.PATH_TO_CA_CERT: o caminho para o arquivo de certificado de CA.
mTLS
Para estabelecer uma conexão mTLS, especifique o certificado de CA, o certificado do cliente e a chave privada do cliente:
%%spanner_graph --instance_type omni --endpoint OMNI_ENDPOINT:PORT --database DATABASE_NAME --ca_certificate PATH_TO_CA_CERT --client_certificate PATH_TO_CLIENT_CERT --client_key PATH_TO_CLIENT_KEY
Substitua:
OMNI_ENDPOINT: o nome do host ou o endereço IP da instância do Spanner Omni.PORT: o número da porta da sua instância do Spanner Omni.DATABASE_NAME: o nome do banco de dados do Spanner Omni.PATH_TO_CA_CERT: o caminho para o arquivo de certificado de CA.PATH_TO_CLIENT_CERT: o caminho para o arquivo de certificado do cliente.PATH_TO_CLIENT_KEY: o caminho para o arquivo da chave privada do cliente.
Visualizar uma consulta
Para visualizar os resultados da consulta de gráfico no notebook, suas consultas precisam retornar elementos de gráfico no formato JSON usando a função SAFE_TO_JSON ou TO_JSON. Os caminhos completos do gráfico são recomendados para integridade dos dados e facilidade de visualização.
Exemplo: retornar um caminho como JSON
O exemplo a seguir mostra o caminho que conecta uma pessoa às contas que ela possui:
%%spanner_graph --instance_type omni --endpoint OMNI_ENDPOINT:PORT --database DATABASE_NAME --use_plain_text
GRAPH FinGraph
MATCH query_path = (person:Person {id: 5})-[owns:Owns]->(accnt:Account)
RETURN SAFE_TO_JSON(query_path) AS path_json
Exemplo: consulta de gráfico de várias etapas
O exemplo a seguir mostra um caminho de comprimento variável (1 a 3 transmissões) de transferências entre contas:
%%spanner_graph --instance_type omni --endpoint OMNI_ENDPOINT:PORT --database DATABASE_NAME --use_plain_text
GRAPH FinGraph
MATCH query_path = (src:Account {id: 9})-[edge:Transfers]->{1,3}(dst:Account)
RETURN SAFE_TO_JSON(query_path) AS path_json
Exemplo: retornar vários caminhos
O exemplo a seguir retorna e visualiza vários caminhos de gráfico em uma única consulta:
%%spanner_graph --instance_type omni --endpoint OMNI_ENDPOINT:PORT --database DATABASE_NAME --use_plain_text
GRAPH FinGraph
MATCH path_1 = (person:Person {id: 5})-[:Owns]->(accnt:Account),
path_2 = (src:Account {id: 9})-[:Transfers]->(dst:Account)
RETURN SAFE_TO_JSON(path_1) AS path_1,
SAFE_TO_JSON(path_2) AS path_2