Este documento mostra como configurar e consultar uma base de dados de grafos do Spanner para modelar, armazenar e analisar relações de dados complexas através da Google Cloud consola e das bibliotecas cliente.
Os seguintes tópicos ajudam a saber como:
Para saber mais sobre os detalhes dos preços do Spanner, consulte o artigo Preços do Spanner.
Para experimentar um codelab, consulte o artigo Introdução ao Spanner Graph.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Ative a API Spanner:
Aceda a Ativar API Spanner -
Para receber as autorizações de que precisa para criar instâncias e bases de dados, peça ao seu administrador para lhe conceder a função de IAM de administrador do Cloud Spanner (
roles/spanner.admin
) no seu projeto. -
Para receber as autorizações de que precisa para consultar gráficos do Spanner se não lhe for atribuída a função de administrador do Cloud Spanner, peça ao seu administrador para lhe atribuir a função do IAM Leitor da base de dados do Cloud Spanner (
roles/spanner.databaseReader
) no seu projeto. Na Google Cloud consola, aceda à página Spanner.
Selecione ou crie um Google Cloud projeto, se ainda não o tiver feito.
Efetue um dos seguintes passos:
Se nunca criou uma instância do Spanner, na página Bem-vindo ao Spanner, clique em Criar uma instância aprovisionada.
Se criou uma instância do Spanner, na página Instances, clique em Create instance.
Na página Selecionar uma edição, selecione Enterprise Plus ou Enterprise.
O Spanner Graph só está disponível na edição Enterprise ou Enterprise Plus. Para comparar as diferentes edições, clique em Comparar edições. Para mais informações, consulte a Vista geral das edições do Spanner.
Clique em Continuar.
Em Nome da instância, introduza um nome da instância, por exemplo,
test-instance
.Em ID da instância, mantenha ou altere o ID da instância. O ID da instância é, por predefinição, o nome da instância, mas pode alterá-lo. O nome da instância e o ID da instância podem ser iguais ou diferentes.
Clique em Continuar.
Em Escolha uma configuração, faça o seguinte:
Mantenha a opção Regional selecionada.
Em Selecionar uma configuração, selecione uma região. O Spanner armazena e replica as suas instâncias na região que selecionar.
Clique em Continuar.
Em Configurar capacidade de computação, faça o seguinte:
Em Selecionar unidade, selecione Unidades de processamento (PUs).
Em Escolha um modo de dimensionamento, mantenha a opção Atribuição manual selecionada e, em Quantidade, mantenha 1000 unidades de processamento.
Clique em Criar. A Google Cloud consola mostra a página Vista geral da instância que criou.
Na Google Cloud consola, aceda à página Spanner Instances.
Clique na instância que criou, por exemplo,
Test Instance
.Em Vista geral, abaixo do nome da instância, clique em Criar base de dados.
Em Nome da base de dados, introduza um nome da base de dados. Por exemplo,
example-db
.Em Selecionar dialeto da base de dados, escolha SQL padrão da Google. O gráfico do Spanner não está disponível no dialeto PostgreSQL.
Introduza o seguinte esquema no separador do editor Modelos de LDD. O esquema contém duas definições de tabelas de nós,
Person
eAccount
, e duas definições de tabelas de arestas,PersonOwnAccount
eAccountTransferAccount
. O Spanner Graph usa tabelas relacionais para definir gráficos, pelo que vê tabelas relacionais e declarações de gráficos no esquema. Para saber mais acerca do esquema do gráfico do Spanner, consulte a vista geral do esquema do gráfico do Spanner:CREATE TABLE Person ( id INT64 NOT NULL, name STRING(MAX), birthday TIMESTAMP, country STRING(MAX), city STRING(MAX), ) PRIMARY KEY (id); CREATE TABLE Account ( id INT64 NOT NULL, create_time TIMESTAMP, is_blocked BOOL, nick_name STRING(MAX), ) PRIMARY KEY (id); CREATE TABLE PersonOwnAccount ( id INT64 NOT NULL, account_id INT64 NOT NULL, create_time TIMESTAMP, FOREIGN KEY (account_id) REFERENCES Account (id) ) PRIMARY KEY (id, account_id), INTERLEAVE IN PARENT Person ON DELETE CASCADE; CREATE TABLE AccountTransferAccount ( id INT64 NOT NULL, to_id INT64 NOT NULL, amount FLOAT64, create_time TIMESTAMP NOT NULL, order_number STRING(MAX), FOREIGN KEY (to_id) REFERENCES Account (id) ) PRIMARY KEY (id, to_id, create_time), INTERLEAVE IN PARENT Account ON DELETE CASCADE; CREATE OR REPLACE PROPERTY GRAPH FinGraph NODE TABLES (Account, Person) EDGE TABLES ( PersonOwnAccount SOURCE KEY (id) REFERENCES Person (id) DESTINATION KEY (account_id) REFERENCES Account (id) LABEL Owns, AccountTransferAccount SOURCE KEY (id) REFERENCES Account (id) DESTINATION KEY (to_id) REFERENCES Account (id) LABEL Transfers );
Mantenha as predefinições em Mostrar opções de encriptação.
Clique em Criar. Google Cloud A consola apresenta a página Vista geral da base de dados que criou.
Na página Spanner Studio, clique em
Novo separador ou use o separador do editor.Copie e cole as seguintes declarações de inserção de dados do gráfico nos nós e nas arestas.
INSERT INTO Account (id, create_time, is_blocked, nick_name) VALUES (7,"2020-01-10 06:22:20.222",false,"Vacation Fund"), (16,"2020-01-27 17:55:09.206",true,"Vacation Fund"), (20,"2020-02-18 05:44:20.655",false,"Rainy Day Fund"); INSERT INTO Person (id, name, birthday, country, city) VALUES (1,"Alex","1991-12-21 00:00:00","Australia","Adelaide"), (2,"Dana","1980-10-31 00:00:00","Czech_Republic","Moravia"), (3,"Lee","1986-12-07 00:00:00","India","Kollam"); INSERT INTO AccountTransferAccount (id, to_id, amount, create_time, order_number) VALUES (7,16,300,"2020-08-29 15:28:58.647","304330008004315"), (7,16,100,"2020-10-04 16:55:05.342","304120005529714"), (16,20,300,"2020-09-25 02:36:14.926","103650009791820"), (20,7,500,"2020-10-04 16:55:05.342","304120005529714"), (20,16,200,"2020-10-17 03:59:40.247","302290001255747"); INSERT INTO PersonOwnAccount (id, account_id, create_time) VALUES (1,7,"2020-01-10 06:22:20.222"), (2,20,"2020-01-27 17:55:09.206"), (3,16,"2020-02-18 05:44:20.655");
Clique em Executar. Quando a execução estiver concluída, o separador Resultados mostra que foram inseridas 3 linhas.
Na página Vista geral da base de dados, clique em Spanner Studio no menu de navegação.
Na página Spanner Studio, clique em
Novo separador ou use o separador do editor.Introduza a seguinte consulta no editor de consultas. A consulta encontra todas as pessoas a quem a Dana transferiu dinheiro e o valor dessas transferências.
GRAPH FinGraph MATCH (from_person:Person {name: "Dana"})-[:Owns]-> (from_account:Account)-[transfer:Transfers]-> (to_account:Account)<-[:Owns]-(to_person:Person) RETURN from_person.name AS from_account_owner, from_account.id AS from_account_id, to_person.name AS to_account_owner, to_account.id AS to_account_id, transfer.amount AS amount
Clique em Executar.
O separador Resultados apresenta os seguintes caminhos da Daniela, proprietária da conta número 20:
- Para
Account {id:7}
pertencente a Alex. Para
Account {id:16}
propriedade de Lee.
- Para
Na Google Cloud consola, aceda a Instâncias do Spanner.
Clique no nome da instância, por exemplo, Instância de teste.
Clique no nome da base de dados, por exemplo, example-db.
Na página Detalhes da base de dados, clique em Eliminar base de dados.
Confirme que quer eliminar a base de dados introduzindo o nome da base de dados e clicando em Eliminar.
Na Google Cloud consola, aceda à página Instâncias do Spanner.
Clique no nome da instância que quer eliminar, por exemplo, Instância de teste.
Clique em Eliminar instância.
Confirme que quer eliminar a instância introduzindo o nome da instância e clicando em Eliminar.
- Saiba mais sobre o Spanner Graph através de um codelab.
- Saiba mais sobre o esquema do gráfico do Spanner.
- Criar, atualizar ou eliminar um esquema do Spanner Graph.
- Inserir, atualizar ou eliminar dados do Spanner Graph.
- Vista geral das consultas do gráfico do Spanner.
- Migre para o Spanner Graph.
Crie uma instância do Spanner
Quando usa o Spanner pela primeira vez, tem de criar uma instância, que atribui recursos para bases de dados do Spanner. Esta secção mostra como criar uma instância através da Google Cloud consola.
Crie uma base de dados de grafos com um esquema
Esta secção mostra como criar uma base de dados do Spanner Graph usando um esquema do Spanner Graph. Pode usar a Google Cloud consola ou as bibliotecas de cliente.
Consola
Bibliotecas cliente
Python
Java
Go
C++
Inserir dados do gráfico
Depois de criar a base de dados, pode adicionar-lhe dados. Esta secção mostra-lhe como inserir dados no seu gráfico através da consola Google Cloud para uma interface gráfica ou através das bibliotecas cliente por programação.
Consola
Bibliotecas cliente
Python
Java
Go
C++
O gráfico seguinte mostra as pessoas, as contas, a propriedade das contas e as transferências de contas das inserções:
Execute uma consulta de gráfico
Depois de inserir dados no gráfico, pode consultá-los para encontrar padrões e relações. Esta secção mostra-lhe como executar consultas através da consola para uma interface gráfica ou através de programação com bibliotecas cliente.Google Cloud
Consola
Bibliotecas cliente
Python
Java
Go
C++
Limpar
Esta secção mostra-lhe como limpar os recursos que criou para evitar incorrer em custos na sua conta do Cloud Billing. Se planeia explorar outros exemplos do Spanner Graph na secção O que fazer a seguir, não execute estes passos ainda. A eliminação de uma instância do Spanner também elimina todas as bases de dados nessa instância.