Para empresas com muitas origens de dados isoladas, o acesso aos dados empresariais em toda a organização, especialmente em tempo real, pode ser difícil. Isto resulta num mundo de acesso aos dados limitado e lento, o que impede a capacidade de introspeção da organização.
O fluxo de dados oferece acesso quase em tempo real a dados de alterações de várias origens de dados no local e baseadas na nuvem para criar acesso a dados organizacionais. O fluxo de dados fornece uma API de consumo unificada que democratiza o acesso da organização aos dados empresariais mais recentes disponíveis em toda a organização, o que permite cenários integrados quase em tempo real.
Um desses cenários é a transferência de dados de uma base de dados de origem para um serviço de armazenamento ou uma fila de mensagens baseados na nuvem e a transformação destes dados num formato legível por outras aplicações e serviços que comunicam com este serviço de armazenamento ou fila de mensagens.
Neste tutorial, vai aprender a usar o Datastream para transferir esquemas, tabelas e dados de uma base de dados Oracle de origem para uma pasta num contentor do Cloud Storage. O Cloud Storage é um serviço Web para armazenar e aceder a dados no Google Cloud. O serviço combina o desempenho e a escalabilidade da nuvem da Google com capacidades avançadas de segurança e partilha.
Como parte da transferência destas informações para uma pasta no contentor do Cloud Storage de destino, o Datastream traduz estas informações para o formato Avro. O Avro é definido por um esquema escrito em JavaScript Object Notation (JSON). Esta tradução permite-lhe ler dados de diferentes origens de dados de forma uniforme.
Objetivos
Neste tutorial, vai aprender a:- Defina variáveis de ambiente. Vai usar estas variáveis quando fizer pedidos ao Datastream para criar e gerir perfis de associação e uma stream.
- Crie e faça a gestão de perfis de associação para uma base de dados de origem e um contentor de destino no Cloud Storage. Ao criar estes perfis de associação, está a criar registos que contêm informações sobre a base de dados de origem e o contentor do Cloud Storage de destino. A stream no Datastream usa as informações nos perfis de associação para transferir dados da base de dados de origem para uma pasta no contentor de destino.
- Crie e faça a gestão de uma stream. O Datastream usa esta stream para transferir dados, esquemas e tabelas da base de dados de origem para uma pasta no contentor de destino.
- Verifique se o fluxo de dados transfere os dados e as tabelas associados a um esquema da base de dados Oracle de origem para uma pasta no contentor de destino e traduz estes dados para o formato de ficheiro Avro.
- Limpe os recursos que criou no fluxo de dados para que não ocupem quota e não lhe sejam faturados no futuro.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
- Cloud Storage
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
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 Datastream.
- Certifique-se de que tem a função de administrador do fluxo de dados atribuída à sua conta de utilizador.
- Certifique-se de que tem uma base de dados de origem à qual o Datastream pode aceder. Para este tutorial, é usada uma base de dados Oracle como origem.
- Configure a base de dados de origem para permitir ligações recebidas a partir de endereços IP públicos do Datastream. Consulte o artigo Listas de autorizações de IPs e regiões para aceder às localizações de todas as regiões do fluxo de dados e aos respetivos endereços IP públicos associados.
- Certifique-se de que configurou um contentor do Cloud Storage de destino ao qual o Datastream pode aceder através da lista de autorização de IPs, do túnel SSH encaminhado ou do método de conetividade de rede de peering de VPC.
- Certifique-se de que tem dados, tabelas e esquemas na base de dados de origem que o Datastream pode transferir para uma pasta no contentor do Cloud Storage de destino.
- Transfira e instale o Cloud Shell. Esta aplicação cliente oferece-lhe acesso à linha de comandos aos seus recursos na nuvem (incluindo o Datastream).
- Instale e configure o utilitário
jq
. Este utilitário é um processador JSON de linha de comandos simples e flexível. Vai usar este processador para apresentar comandoscURL
complexos em texto fácil de ler.
Definir variáveis de ambiente
Neste procedimento, vai definir as seguintes variáveis:
$PROJECT
: esta variável está associada ao seu Google Cloud projeto. Todos os recursos do Google Cloud que atribuir e usar têm de pertencer a um projeto.Google Cloud$TOKEN
: esta variável está associada a um token de acesso. O token de acesso fornece uma sessão que o Cloud Shell usa para realizar tarefas no Datastream através de APIs REST.
Inicie a aplicação Cloud Shell.
Depois de se autenticar na sua aplicação com a sua Conta Google, introduza o seguinte comando:
gcloud auth login
Na mensagem
Do you want to continue (Y/n)?
, introduzaY
.Abra um navegador de Internet e copie o URL para o navegador.
Autentique-se no SDK Google Cloud com a sua Conta Google. É apresentado um código na página Início de sessão. Este código é a sua chave de acesso.
Copie o token de acesso, cole-o no parâmetro
Enter verification code:
na sua aplicação Cloud Shell e primaEnter
.No comando, introduza
PROJECT=\"YOUR_PROJECT_NAME\"
para definir a variável de ambiente$PROJECT
para o seu projeto Google Cloud.No comando, introduza
gcloud config set project YOUR_PROJECT_NAME
para definir o projeto no qual quer trabalhar como o seu Google Cloud projeto.A linha de comandos é atualizada para refletir o seu projeto ativo e respeita este formato:
USERNAME@cloudshell:~ (YOUR_PROJECT_NAME)$
No comando, introduza
TOKEN=$(gcloud auth print-access-token)
para obter o token de acesso e armazená-lo como uma variável.No comando, introduza os seguintes comandos para garantir que as variáveis
$PROJECT
e$TOKEN
estão definidas corretamente:echo $PROJECT
echo $TOKEN
Agora que definiu as variáveis, pode fazer pedidos ao Datastream para criar e gerir perfis de associação e uma stream.
Crie e faça a gestão de perfis de associação
Nesta secção, cria e gere perfis de associação para uma base de dados Oracle de origem e um contentor de destino no Cloud Storage.
Quando cria estes perfis de associação, cria registos que contêm informações sobre a base de dados de origem e o contentor do Cloud Storage de destino. O Datastream usa as informações nos perfis de associação para transferir dados da base de dados de origem para uma pasta no contentor de destino.
A criação e a gestão de perfis de associação incluem:
- Criar perfis de associação para uma base de dados Oracle de origem e um contentor de destino no Cloud Storage
- A obter informações sobre um perfil de associação
- Modificar um perfil de associação
- Executar uma chamada API discover no perfil de ligação do Oracle de origem. Esta chamada permite-lhe analisar a base de dados para ver os objetos associados à mesma. Estes objetos incluem os esquemas e as tabelas que contêm os dados da base de dados. Quando usa a stream de dados para configurar uma stream, pode não querer extrair todos os objetos da base de dados, mas sim um subconjunto dos objetos (por exemplo, apenas determinadas tabelas e esquemas da base de dados). Use a API Discover para ajudar a encontrar (ou descobrir) o subconjunto de objetos da base de dados que quer extrair.
Crie perfis de ligação
Neste procedimento, cria dois perfis de ligação: um a uma base de dados Oracle de origem e outro a um contentor de destino no Cloud Storage.
- Crie um perfil de associação a uma base de dados Oracle de origem. No comando, introduza o seguinte comando:
ORACLE="{\"displayName\":\"DISPLAY_NAME\",\"oracle_profile\":{\"hostname\":\"HOSTNAME\",\" username\":\"USERNAME\",\"password\":\"PASSWORD\",\"database_service\":\"DATABASE_SERVICE\",\" port\":"PORT_NUMBER\"},\"no_connectivity\":{}}"
Use a tabela seguinte para ajudar a compreender os valores dos parâmetros da base de dados Oracle de origem:
Valor do parâmetro | Substituir por |
---|---|
DISPLAY_NAME | O nome a apresentar do perfil de associação à base de dados de origem. |
HOSTNAME | O nome do anfitrião do servidor da base de dados de origem. |
USERNAME | O nome de utilizador da conta da base de dados de origem (por exemplo, ROOT). |
PASSWORD | A palavra-passe da conta da base de dados de origem. |
DATABASE_SERVICE | O serviço que garante que a base de dados de origem está protegida e é monitorizada. Para bases de dados Oracle, o serviço de base de dados é normalmente ORCL. |
PORT_NUMBER | O número da porta reservado para a base de dados de origem. Para uma base de dados Oracle, o número da porta é normalmente 1521. |
No comando, introduza o comando
echo $ORACLE | jq
para ver o perfil de ligação de origem que criou em texto fácil de ler.{ "displayName": "DISPLAY_NAME", "oracle_profile": { "hostname": "HOSTNAME", "username": "USERNAME", "password": "PASSWORD", "database_service": "DATABASE_SERVICE", "port": PORT_NUMBER }, "no_connectivity": {} }
Envie o perfil de ligação do Oracle para que possa ser criado. No comando, introduza o seguinte comando:
curl -X POST -d $ORACLE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles? connection_profile_id=SOURCE_CONNECTION_PROFILE_ID Use a tabela seguinte para ajudar a compreender os valores dos parâmetros para este comando:
Valor do parâmetro Substituir por DATASTREAM_API_VERSION A versão atual da API Datastream (por exemplo, v1
).PROJECT_PATH O caminho completo do seu Google Cloud projeto (por exemplo, projects/$PROJECT/locations/YOUR_PROJECT_LOCATION
).SOURCE_CONNECTION_PROFILE_ID O identificador exclusivo reservado para este perfil de associação (por exemplo, cp-1). Verifique se vê as seguintes linhas de código:
{ "name": "PROJECT_PATH/operations/operation-SOURCE_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "datastream.googleapis.com/DATASREAM_VERSION/PROJECT_PATH/connectionProfiles/
SOURCE_CONNECTION_PROFILE_ID" , "verb": "create", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }Crie um perfil de associação a um contentor de destino no Cloud Storage. No comando, introduza o seguinte comando:
GOOGLECLOUDSTORAGE="{\"displayName\":\"DISPLAY_NAME\",\"gcs_profile\":{\"bucket_name\":\"BUCKET_NAME\",
\"root_path\":\"/FOLDER_PATH\"},\"no_connectivity\":{}}" Use a tabela seguinte para ajudar a compreender os valores dos parâmetros do contentor de destino:
Valor do parâmetro Substituir por DISPLAY_NAME O nome a apresentar do perfil de associação ao contentor de destino. BUCKET_NAME O nome do contentor de destino. FOLDER_PATH A pasta no contentor de destino para a qual o Datastream transfere dados da base de dados de origem (por exemplo, /root/path). No comando, introduza o comando
echo $GOOGLECLOUDSTORAGE | jq
para ver o perfil de ligação de destino que criou num texto fácil de ler.{ "displayName": "DISPLAY_NAME", "gcs_profile": { "bucket_name": "BUCKET_NAME", "root_path": "/FOLDER_PATH" }, "no_connectivity": {} }
Envie o perfil de ligação do Cloud Storage para que possa ser criado. No comando, introduza o seguinte comando:
curl -X POST -d $GOOGLECLOUDSTORAGE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles? connection_profile_id=DESTINATION_CONNECTION_PROFILE_ID Verifique se vê as seguintes linhas de código:
{ "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.
OperationMetadata" , "createTime": "DATE_AND_TIME_STAMP", "target": "datastream.googleapis.com/DATASTREAM_VERSION/PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID" , "verb": "create", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }Confirme que ambos os perfis de ligação são criados. No comando, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles Confirme se recebe dois resultados devolvidos para os perfis de ligação de origem e de destino.
{ "connectionProfiles": [ { "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "gcsProfile": { "bucketName": "BUCKET_NAME", "rootPath": "FOLDER_PATH" }, "noConnectivity": {} }, { "name": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "oracleProfile": { "hostname": "HOSTNAME", "port": PORT_NUMBER, "username": "USERNAME", "databaseService": "DATABASE_SERVICE" }, "noConnectivity": {} } ] }
Faça a gestão dos perfis de ligação
Neste procedimento, gere os perfis de ligação que criou para uma base de dados Oracle de origem e um contentor de destino no Cloud Storage. Isto inclui:
- A obter informações sobre o perfil de ligação do Cloud Storage de destino
- Modificar este perfil de associação. Para este tutorial, vai alterar a pasta do contentor do Cloud Storage de destino para /root/tutorial. O fluxo de dados transfere dados da base de dados de origem para esta pasta.
- Executar uma chamada API discover no perfil de ligação do Oracle de origem
Obtenha informações sobre o perfil de ligação do Cloud Storage de destino. No comando, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID Confirme que vê informações sobre este perfil de associação.
{ "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "gcsProfile": { "bucketName": "BUCKET_NAME", "rootPath": "FOLDER_PATH" }, "noConnectivity": {} }
Modifique este perfil de associação. Para tal, primeiro, defina uma variável UPDATE. Esta variável contém os valores do perfil de associação que quer alterar. Para este tutorial, vai alterar a pasta do contentor de destino para /root/tutorial.
Para definir a variável, na linha de comandos, introduza o seguinte comando:
UPDATE="{\"gcsProfile\":{\"rootPath\":\"/root/tutorial\"}}"
No comando, introduza o seguinte comando:
curl -X PATCH -d $UPDATE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID?update_mask=gcsProfile.rootPath Verifique se vê as seguintes linhas de código:
{ "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "verb": "update", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Confirme que o perfil de ligação é modificado. No comando, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID Verifique se a pasta do contentor de destino do perfil de ligação do Cloud Storage está agora /root/tutorial.
{ "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "gcsProfile": { "bucketName": "BUCKET_NAME", "rootPath": "/root/tutorial" }, "noConnectivity": {} }
Use a API Datastream Discover para descobrir os esquemas e as tabelas da base de dados Oracle de origem. O Datastream fornece acesso a esta base de dados através do perfil de associação de origem.
Descubra os esquemas da base de dados Oracle. No comando, introduza o seguinte comando:
curl -X POST -d "{\"connection_profile_name\":\"projects/YOUR_PROJECT_NUMBER/locations/
YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID\", \"oracle_rdbms\":{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}}" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles:discover Verifique se o Datastream obtém todos os esquemas da sua base de dados.
Obtenha as tabelas de um esquema na sua base de dados. Para este tutorial, vai usar a API Discover para obter as tabelas do esquema ROOT. No entanto, pode descobrir as tabelas de qualquer esquema na sua base de dados.
No comando, introduza o seguinte comando:
curl -X POST -d "{\"connection_profile_name\":\"projects/YOUR_PROJECT_NUMBER/locations/
YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID\", \"oracle_rdbms\":{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}}" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles:discover - Verifique se o Datastream obtém todas as tabelas do esquema que especificou (para este tutorial, o esquema ROOT).
Agora que criou e geriu perfis de associação para uma base de dados Oracle de origem e um contentor de destino no Cloud Storage, está pronto para criar e gerir uma stream no Datastream.
Criar e gerir uma stream
Nesta secção, cria e gere uma stream. O Datastream usa este stream para transferir dados, esquemas e tabelas da base de dados de origem para uma pasta no contentor do Cloud Storage de destino.
A criação e a gestão de uma stream incluem:
- Validar uma stream para garantir que é executada com êxito e que todas as verificações de validação são aprovadas. Estas verificações incluem:
- Se a origem está configurada corretamente para permitir que o fluxo de dados transmita dados a partir da mesma.
- Se a stream consegue estabelecer ligação à origem e ao destino.
- A configuração integral da stream.
- A criar a stream com as seguintes listas:
- Uma lista de autorizações. Esta lista especifica as tabelas e os esquemas na base de dados de origem que o Datastream pode transferir para uma pasta no contentor de destino no Cloud Storage. Para este tutorial, esta é a pasta /root/tutorial.
- Uma lista de rejeição. Esta lista especifica as tabelas e os esquemas na base de dados de origem cuja transferência para a pasta no contentor de destino do Cloud Storage está restrita ao Datastream.
- A obter informações sobre a stream
- Modificar a stream
- Iniciar a stream para que o Datastream possa transferir dados, esquemas e tabelas da base de dados de origem para uma pasta no contentor do Cloud Storage de destino.
- Usar a API Fetch Errors para detetar erros associados à stream
- Pausar a stream. Quando uma stream é pausada, o fluxo de dados não extrai novos dados da base de dados de origem para o contentor de destino.
- Retomar a stream pausada para que a stream de dados possa continuar a transferir dados para o contentor de destino.
Crie uma stream
Neste procedimento, cria uma stream a partir da base de dados Oracle de origem para uma pasta no contentor do Cloud Storage de destino. A stream que criar vai incluir uma lista de permissões e uma lista de rejeições.
Defina uma variável SCHEMAS. Esta variável define os esquemas que contêm os dados e as tabelas que quer que o Datastream obtenha da base de dados de origem e transfira para a pasta /root/tutorial do contentor de destino do Cloud Storage. Para este tutorial, vai definir a variável SCHEMAS para ser associada ao esquema ROOT.
No comando, introduza o seguinte comando:
SCHEMAS="{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}"
No comando, introduza o comando echo $SCHEMAS | jq para ver o esquema ROOT que definiu para esta variável num texto fácil de ler.
Crie uma stream. No comando, introduza o seguinte comando:
STREAM="{\"display_name\":\"DISPLAY_NAME\",\"source_config\":{\"source_connection_profile_name\":\"
PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID" ,\"oracle_source_config\":{\"allowlist\":$SCHEMAS,\"rejectlist\":{}}},\"destination_config\":{\"destination_connection_profile_name\" :\"PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID\",\"gcs_destination_config\": {\"file_rotation_mb\":5,\"file_rotation_interval\":{\"seconds\":15},\"avro_file_format\":{}}, \"backfill_all\":{}}}" No comando, introduza o comando
echo $STREAM | jq
para ver a stream que criou em texto fácil de ler.{ "display_name": "DISPLAY_NAME", "source_config": { "source_connection_profile_name": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "oracle_source_config": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destination_config": { "destination_connection_profile_name": "PROJECT_PATH/connectionProfiles/
DESTINATION_CONNECTION_PROFILE_ID" , "gcs_destination_config": { "file_rotation_mb": 5, "file_rotation_interval": { "seconds": 15 }, "avro_file_format": {} } }, "backfill_all": {} }Use esta tabela para ajudar a compreender os seguintes parâmetros da stream:
Parâmetro Descrição allowlist Os esquemas, que contêm tabelas e dados, que vão ser transferidos da base de dados de origem para uma pasta do contentor de destino do Cloud Storage. Para este tutorial, todas as tabelas e dados do esquema ROOT (e apenas deste esquema) vão ser transferidos para a pasta /root/tutorial do contentor de destino. rejectlist Todos os esquemas, que contêm tabelas e dados, que não vão ser transferidos para uma pasta do contentor de destino do Cloud Storage. Para este tutorial, o valor {} significa que não vai ser impedida a transferência de tabelas nem dados da base de dados de origem para o contentor de destino. file_rotation_mb O tamanho (em MB) dos ficheiros que contêm dados que estão a ser transferidos da base de dados de origem para uma pasta no contentor de destino do Cloud Storage. Para este tutorial, à medida que os dados são obtidos da base de dados de origem, são escritos em ficheiros de 5 MB. Se algum dado exceder este tamanho, os dados são segmentados em vários ficheiros de 5 MB. file_rotation_interval O número de segundos que decorrem antes de o Datastream fechar um ficheiro existente numa pasta do contentor de destino do Cloud Storage e abrir outro ficheiro para conter os dados que estão a ser transferidos da base de dados de origem. Para este tutorial, o intervalo de rotação de ficheiros está definido como 15 segundos. avro_file_format O formato dos ficheiros que o Datastream transfere da base de dados de origem para uma pasta do contentor de destino do Cloud Storage. Para este tutorial, o formato de ficheiro é Avro.
backfill_all Este parâmetro está associado ao preenchimento histórico. Se definir este parâmetro como um dicionário vazio ({}), o Datastream preenche:
- Dados do histórico, além das alterações contínuas aos dados, da base de dados de origem para o destino.
- Esquemas e tabelas, da origem para o destino.
Valide a stream para garantir que é executada com êxito e que todas as verificações de validação são aprovadas. No comando, introduza o seguinte comando:
curl -X POST -d $STREAM -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
"https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams?stream_id= STREAM_ID&validate_only=true" Verifique se vê a linha de código
{}
. Isto indica que a stream passou em todas as verificações de validação e não existem erros associados à stream.Envie a stream para que possa ser criada. No comando, introduza o seguinte comando:
curl -X POST -d $STREAM -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams?stream_id=STREAM_ID Verifique se vê as seguintes linhas de código:
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Confirme que a transmissão foi criada. No comando, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams Verifique se recebe um resultado devolvido para a stream que criou.
{ "streams": [ { "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID" , "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID" , "gcsDestinationConfig": { "fileRotationMb": 5, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "CREATED", "backfillAll": {} } ] }
Faça a gestão da stream
Neste procedimento, usa a stream que criou para transferir dados de uma base de dados Oracle de origem para uma pasta num contentor de destino do Cloud Storage. Isto inclui:
- A obter informações sobre a stream
- Modificar a stream
- Iniciar a stream
- Usar a API Fetch Errors para detetar erros associados à stream
- Pausar e retomar a stream
Obter informações sobre a stream. No comando, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifique se vê informações sobre esta stream.
{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID" , "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID" , "gcsDestinationConfig": { "fileRotationMb": 5, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "CREATED", "backfillAll": {} }Modifique esta stream. Para tal, primeiro, defina uma variável UPDATE. Esta variável contém os valores da stream que quer alterar. Para este tutorial, altere o tamanho (em MBytes) dos ficheiros que contêm dados que estão a ser transferidos da base de dados de origem para uma pasta no contentor de destino do Cloud Storage (de 5 MBytes para 100 MBytes). À medida que os dados são obtidos da base de dados de origem, são agora escritos em ficheiros de 100 MB. Se algum dado exceder este tamanho, os dados são segmentados em vários ficheiros de 100 MB.
Para definir a variável, na linha de comandos, introduza o seguinte comando:
UPDATE="{\"destination_config\":{\"gcs_destination_config\":{\"file_rotation_mb\":100}}}"
No comando, introduza o seguinte comando:
curl -X PATCH -d $UPDATE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID/ ?update_mask=destination_config.gcs_destination_config.file_rotation_mb Verifique se vê as seguintes linhas de código:
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "update", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Confirme que a stream foi modificada. No comando, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifique se o valor do parâmetro fileRotationMb para o perfil de ligação do Cloud Storage é agora
100
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID" , "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID" , "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "CREATED", "backfillAll": {} }Inicie a stream. Para isso:
Altere a variável
UPDATE
. No comando, introduza o seguinte comando:UPDATE="{\"state\":\"RUNNING\"}"
Em seguida, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID ?updateMask=state
Verifique se vê as seguintes linhas de código.
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Após alguns minutos, obtenha informações sobre a stream para confirmar que foi iniciada:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifique se o estado da stream foi alterado de
CREATED
paraRUNNING
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID" , "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID" , "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "RUNNING", "backfillAll": {} }Usar a API Fetch Errors para obter quaisquer erros associados à stream.
No comando, introduza o seguinte comando:
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/ STREAM_ID:fetchErrors Verifique se vê as seguintes linhas de código:
{ "name": "PROJECT_PATH/operations/operation-FETCH_ERRORS_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "fetchErrors", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
No comando, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/operations/ operation-FETCH_ERRORS_OPERATION_ID Verifique se vê as seguintes linhas de código:
{ "name": "PROJECT_PATH/operations/operation-FETCH_ERRORS_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION
.OperationMetadata" , "createTime": "DATE_AND_TIME_STAMP", "endTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "fetchErrors", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.FetchErrorsResponse" } }
Pausar a stream. Para isso:
Altere a variável
UPDATE
. No comando, introduza o seguinte comando:UPDATE="{\"state\":\"PAUSED\"}"
Em seguida, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID ?updateMask=state
Verifique se vê as seguintes linhas de código.
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Recupere informações sobre a stream para confirmar que está pausada.
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifique se o estado da stream foi alterado de
RUNNING
paraPAUSED
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID" , "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID" , "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "PAUSED", "backfillAll": {} }Retomar a stream pausada. Para isso:
Altere a variável
UPDATE
. No comando, introduza o seguinte comando:UPDATE="{\"state\":\"RUNNING\"}"
Em seguida, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID ?updateMask=state
Verifique se vê as seguintes linhas de código.
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Após alguns segundos, obtenha informações sobre a stream para confirmar que está novamente em execução.
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifique se o estado da stream foi alterado de
PAUSED
paraRUNNING
.{ "name": "PROJECT_PATH/streams/STREAM_ID", "createTime": "DATE_AND_TIME_STAMP", "updateTime": "DATE_AND_TIME_STAMP", "displayName": "DISPLAY_NAME", "sourceConfig": { "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION
/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID" , "oracleSourceConfig": { "allowlist": { "oracleSchemas": [ { "schema": "ROOT" } ] }, "rejectlist": {} } }, "destinationConfig": { "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID" , "gcsDestinationConfig": { "fileRotationMb": 100, "fileRotationInterval": "15s" "avroFileFormat": {} } }, "state": "RUNNING", "backfillAll": {} }
Agora que criou e geriu uma stream, confirmou que não existem erros associados à stream e que o estado da stream é RUNNING
, está tudo pronto para verificar se consegue transferir dados da base de dados de origem para uma pasta no contentor de destino do Cloud Storage.
Validar a stream
Neste procedimento, confirma que o Datastream:
- Transfere os dados de todas as tabelas associadas ao esquema
ROOT
da sua base de dados Oracle de origem para a pasta/root/tutorial
no contentor de destino do Cloud Storage. - Traduz os dados para o formato de ficheiro Avro.
Aceda à página do explorador de armazenamento no Cloud Storage.
Clique no link que contém o seu contentor.
Se o separador OBJETOS não estiver ativo, clique nele.
Clique na pasta raiz e, de seguida, na pasta tutorial.
Verifique se vê pastas que representam tabelas do esquema
ROOT
da sua base de dados Oracle de origem.Clique numa das pastas da tabela e explore os detalhes até ver dados associados à tabela.
Clique num ficheiro que represente os dados e clique em TRANSFERIR.
Abra este ficheiro numa ferramenta Avro (por exemplo, o Avro Viewer) para garantir que o conteúdo é legível. Isto confirma que o Datastream também traduziu os dados para o formato de ficheiro Avro.
Limpar
Depois de concluir este tutorial, pode limpar os recursos que criou no fluxo de dados para que não ocupem quota e não lhe sejam faturados no futuro. As secções seguintes descrevem como eliminar ou desativar estes recursos.
Elimine o projeto
A forma mais fácil de eliminar a faturação é eliminar o projeto que criou para o tutorial.
Para eliminar o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimine o contentor de destino do Cloud Storage
No painel de navegação do lado esquerdo do Cloud Storage, clique no item Navegador.
Selecione a caixa de verificação à esquerda do seu contentor e clique em ELIMINAR.
Na janela Eliminar contentor?, introduza o nome do contentor no campo de texto e clique em CONFIRMAR.
Elimine a stream
Certifique-se de que a aplicação Cloud Shell está ativa.
No comando, introduza o seguinte comando:
curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID Verifique se vê as seguintes linhas de código:
{ "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/streams/STREAM_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Confirme que a transmissão é eliminada. No comando, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams Verifique se é devolvido um valor
{}
nulo. Isto significa que já não existem streams no Datastream e que a stream que criou foi eliminada.
Elimine os perfis de ligação
Elimine o perfil de ligação à base de dados Oracle de origem. No comando, introduza o seguinte comando:
curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ SOURCE_CONNECTION_PROFILE_ID Verifique se vê as seguintes linhas de código:
{ "name": "PROJECT_PATH/operations/operation-SOURCE_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Elimine o perfil de ligação ao contentor de destino no Cloud Storage. No comando, introduza o seguinte comando:
curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/ DESTINATION_CONNECTION_PROFILE_ID Verifique se vê as seguintes linhas de código:
{ "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata", "createTime": "DATE_AND_TIME_STAMP", "target": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "DATASTREAM_API_VERSION" }, "done": false }
Confirme que ambos os perfis de ligação são eliminados. No comando, introduza o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles Verifique se é devolvido um valor
{}
nulo. Isto significa que já não existem perfis de associação no Datastream e que os perfis que criou foram eliminados.
O que se segue?
- Saiba mais sobre o fluxo de dados.
- Experimente outras Google Cloud funcionalidades. Consulte os nossos tutoriais.