Introdução ao Spanner em C++


Objetivos

Este tutorial orienta você nas seguintes etapas usando a biblioteca de cliente Spanner para C++:

  • Crie uma instância e um banco de dados do Spanner.
  • Escreva, leia e execute consultas SQL em dados no banco de dados.
  • Atualize o esquema do banco de dados.
  • Atualizar dados usando uma transação de leitura e gravação.
  • Adicione um índice secundário ao banco de dados.
  • Use o índice para ler e executar consultas SQL em dados.
  • Recupere dados usando uma transação somente leitura.

Custos

Este tutorial usa o Spanner, que é um componente faturável doGoogle Cloud. Para obter informações sobre o custo de uso do Spanner, consulte Preços .

Antes de começar

Conclua as etapas descritas em Configuração , que abrangem a criação e a configuração de um padrão Google Cloud projeto, habilitando o faturamento, habilitando a API do Cloud Spanner e configurando o OAuth 2.0 para obter credenciais de autenticação para usar a API do Cloud Spanner.

Em particular, certifique-se de executar gcloud auth application-default login para configurar seu ambiente de desenvolvimento local com credenciais de autenticação.

A seguir, é mostrado como executar uma consulta e realizar uma leitura na mesma transação somente leitura:

void ReadOnlyTransaction(google::cloud::spanner::Client client) {
  namespace spanner = ::google::cloud::spanner;
  auto read_only = spanner::MakeReadOnlyTransaction();

  spanner::SqlStatement select(
      "SELECT SingerId, AlbumId, AlbumTitle FROM Albums");
  using RowType = std::tuple<std::int64_t, std::int64_t, std::string>;

  // Read#1.
  auto rows1 = client.ExecuteQuery(read_only, select);
  std::cout << "Read 1 results\n";
  for (auto& row : spanner::StreamOf<RowType>(rows1)) {
    if (!row) throw std::move(row).status();
    std::cout << "SingerId: " << std::get<0>(*row)
              << " AlbumId: " << std::get<1>(*row)
              << " AlbumTitle: " << std::get<2>(*row) << "\n";
  }
  // Read#2. Even if changes occur in-between the reads the transaction ensures
  // that Read #1 and Read #2 return the same data.
  auto rows2 = client.ExecuteQuery(read_only, select);
  std::cout << "Read 2 results\n";
  for (auto& row : spanner::StreamOf<RowType>(rows2)) {
    if (!row) throw std::move(row).status();
    std::cout << "SingerId: " << std::get<0>(*row)
              << " AlbumId: " << std::get<1>(*row)
              << " AlbumTitle: " << std::get<2>(*row) << "\n";
  }
}

Execute o exemplo usando o argumento read-only-transaction .

bazel run //google/cloud/spanner/samples:samples -- \
    read-only-transaction $GCLOUD_PROJECT test-instance example-db

Você deverá ver uma saída semelhante a:

Read 1 results
SingerId: 2 AlbumId: 2 AlbumTitle: Forever Hold Your Peace
SingerId: 1 AlbumId: 2 AlbumTitle: Go, Go, Go
SingerId: 2 AlbumId: 1 AlbumTitle: Green
SingerId: 2 AlbumId: 3 AlbumTitle: Terrified
SingerId: 1 AlbumId: 1 AlbumTitle: Total Junk
Read 2 results
SingerId: 2 AlbumId: 2 AlbumTitle: Forever Hold Your Peace
SingerId: 1 AlbumId: 2 AlbumTitle: Go, Go, Go
SingerId: 2 AlbumId: 1 AlbumTitle: Green
SingerId: 2 AlbumId: 3 AlbumTitle: Terrified
SingerId: 1 AlbumId: 1 AlbumTitle: Total Junk

Limpar

Para evitar cobranças adicionais na sua conta do Cloud Billing pelos recursos usados ​​neste tutorial, elimine o banco de dados e exclua a instância que você criou.

Excluir o banco de dados

Se você excluir uma instância, todos os bancos de dados contidos nela serão excluídos automaticamente. Esta etapa mostra como excluir um banco de dados sem excluir uma instância (você ainda incorrerá em cobranças pela instância).

Na linha de comando

gcloud spanner databases delete example-db --instance=test-instance

Usando o Google Cloud console

  1. Vá para a página Instâncias do Spanner no Google Cloud console.

    Vá para a página Instâncias

  2. Clique na instância.

  3. Clique no banco de dados que você deseja excluir.

  4. Na página Detalhes do banco de dados , clique em Excluir .

  5. Confirme que deseja excluir o banco de dados e clique em Excluir .

Excluir a instância

A exclusão de uma instância remove automaticamente todos os bancos de dados criados nela.

Na linha de comando

gcloud spanner instances delete test-instance

Usando o Google Cloud console

  1. Vá para a página Instâncias do Spanner no Google Cloud console.

    Vá para a página Instâncias

  2. Clique na sua instância.

  3. Clique em Excluir .

  4. Confirme que deseja excluir a instância e clique em Excluir .

O que vem a seguir