Executar consultas federadas com o Data Boost

Nesta página, explicamos como usar o Data Boost do Spanner ao executar consultas federadas do BigQuery em um banco de dados do Spanner. Com o Data Boost, as consultas federadas são executadas com impacto mínimo nas cargas de trabalho atuais na instância provisionada do Spanner. As consultas do Data Boost do BigQuery para um banco de dados do Spanner podem unir dados do BigQuery com dados do Spanner.

A federação do Spanner permite que o BigQuery consulte dados que residem no Spanner em tempo real, sem copiar ou mover dados. Para saber mais sobre consultas federadas do Spanner, consulte Consultas federadas do Spanner. Para saber mais sobre o Data Boost, consulte a visão geral do Data Boost.

Antes de começar

Antes de executar consultas federadas com o Data Boost, conclua as seguintes tarefas:

Criar uma instância e um banco de dados do Spanner

Se você não tiver uma instância e um banco de dados do Spanner, siga as etapas em Criar e consultar um banco de dados usando o console do Google Cloud .

Ativar a API BigQuery Connection

Com a API BigQuery Connection, é possível gerenciar conexões do BigQuery com fontes de dados externas, como um banco de dados do Spanner.

  • Enable the BigQuery connection API.

    Enable the API

Para mais informações, consulte a API BigQuery Connection na documentação do BigQuery.

Conceder permissões do IAM para o Data Boost aos principais

Uma principal precisa receber as seguintes permissões para executar consultas federadas com o Data Boost:

  • spanner.instances.get: permite receber a configuração de uma instância.
  • spanner.databases.useDataBoost: permite usar os recursos de computação do Spanner Data Boost para processar consultas particionadas.

Para mais informações sobre as permissões do Spanner, consulte Permissões do Identity and Access Management (IAM).

Para conceder essas permissões necessárias, recomendamos que você use o papel do IAM Cloud Spanner Database Reader With DataBoost (roles/spanner.databaseReaderWithDataBoost). Você pode adicionar essa função a qualquer principal que precise executar consultas federadas com o Data Boost. Para saber mais sobre os papéis predefinidos no Spanner, consulte Papéis predefinidos. Para saber como criar um papel personalizado do IAM, consulte Criar um papel personalizado.

Executar uma consulta federada do Data Boost

Para executar uma consulta do Data Boost do BigQuery em uma fonte externa, você precisa de uma conexão do BigQuery com a fonte externa e o ID da conexão. Quando você executa uma consulta federada do Spanner com o Data Boost, a fonte externa é um banco de dados do Spanner. Depois de criar o ID de conexão, ele será usado pelo BigQuery para executar uma consulta do Data Boost de um banco de dados do Spanner.

Use uma das seguintes opções para criar um ID de conexão do BigQuery e, em seguida, use o ID para executar uma consulta do Data Boost no BigQuery:

  1. Começar no Spanner: crie o ID da conexão externa do BigQuery no console do Spanner. Depois que o ID da conexão for criado no console do Spanner, você será redirecionado para o console do BigQuery para executar uma consulta federada do Data Boost em um banco de dados do Spanner.

  2. Comece no BigQuery: crie o ID de conexão externa do Data Boost no console do BigQuery ou usando a ferramenta de linha de comando bq. Depois de criar o ID da conexão, você permanece no console do BigQuery para executar uma consulta federada do Data Boost em um banco de dados do Spanner.

Começar no Spanner para executar uma consulta do Data Boost

Para executar uma consulta federada do Data Boost no Spanner Studio, faça o seguinte:

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

    Acessar a página "Instâncias"

    O console mostra uma lista das suas instâncias do Spanner.

  2. Selecione uma instância do Spanner e um banco de dados.

  3. Na página Visão geral do banco de dados, no menu de navegação, clique em Spanner Studio.

  4. Clique em Abrir no BigQuery.

  5. Na caixa de diálogo Ver no BigQuery, insira um ID de conexão.

    O ID da conexão é usado para criar uma nova conexão externa do BigQuery com seu banco de dados do Spanner. Faça referência à sua conexão externa usando o seguinte padrão:

    PROJECT-ID.LOCATION.CONNECTION-ID
    

    Um erro vai ocorrer se o ID já existir.

  6. Preencha o restante da caixa de diálogo e faça o seguinte:

    • Selecione Ler dados em paralelo.
    • Selecione Usar o Data Boost do Spanner.
  7. Clique em Ver no BigQuery.

    O BigQuery Studio é aberto com a seguinte consulta:

    SELECT * FROM EXTERNAL_QUERY("PROJECT-ID.LOCATION.CONNECTION-ID", "SELECT * FROM INFORMATION_SCHEMA.TABLES;");
    

    Você pode substituir isso pela sua consulta federada. Por exemplo, você pode fazer uma consulta semelhante ao exemplo a seguir. Este exemplo faz uma consulta federada de uma tabela chamada orders em um banco de dados do Spanner e mescla os resultados com uma tabela do BigQuery chamada mydataset.customers.

    SELECT c.customer_id, c.name, rq.first_order_date
    FROM mydataset.customers AS c
    LEFT OUTER JOIN EXTERNAL_QUERY(
      'my-project.us.example-db',
      '''SELECT customer_id, MIN(order_date) AS first_order_date
      FROM orders
      GROUP BY customer_id''') AS rq
      ON rq.customer_id = c.customer_id
    GROUP BY c.customer_id, c.name, rq.first_order_date;

Começar no BigQuery para executar uma consulta do Data Boost

Para criar uma conexão de dados externa do BigQuery com um banco de dados do Spanner e usar essa conexão para executar uma consulta federada do Data Boost no BigQuery, selecione uma das seguintes opções:

Console

  1. Acesse Criar conexões do Spanner na documentação do BigQuery e siga as instruções na guia Console.

  2. No painel Fonte de dados externa, faça o seguinte:

    • Selecione Ler dados em paralelo.
    • Selecione Usar o Data Boost do Spanner.

bq

  1. Acesse Criar conexões do Spanner na documentação do BigQuery e siga as instruções na guia bq*.

  2. Defina as seguintes propriedades de conexão como true:

    • useParallelism
    • useDataBoost

O exemplo a seguir usa o comando bq mk para criar uma conexão chamada my_connection com as duas propriedades necessárias para o Data Boost:

bq mk --connection --connection_type='CLOUD_SPANNER' --location='us' \
--properties='{"database":"projects/my-project/instances/my-instance/databases/my-database", "useParallelism":true, "useDataBoost": true}' my_connection

A seguir