Java Database Connectivity (JDBC) para o modelo do Pub/Sub

O modelo de Java Database Connectivity (JDBC) para Pub/Sub é um pipeline de processamento em lote que carrega dados da origem JDBC e escreve os registos resultantes num tópico do Pub/Sub pré-existente como uma string JSON.

Requisitos do pipeline

  • A origem JDBC tem de existir antes de executar o pipeline.
  • O tópico de saída do Pub/Sub tem de existir antes de executar o pipeline.

Parâmetros de modelos

Parâmetros obrigatórios

  • driverClassName: o nome da classe do controlador JDBC. Por exemplo, com.mysql.jdbc.Driver.
  • connectionUrl: a string do URL de ligação JDBC. Pode transmitir este valor como uma string encriptada com uma chave do Cloud KMS e, em seguida, codificada em Base64. Por exemplo: 'echo -n "jdbc:mysql://some-host:3306/sampledb" | gcloud kms encrypt --location=
  • driverJars: caminhos do Cloud Storage separados por vírgulas para controladores JDBC. Por exemplo, gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar.
  • consulta: a consulta a executar na origem para extrair os dados. Por exemplo, select * from sampledb.sample_table.
  • outputTopic: o tópico do Pub/Sub para publicação. Por exemplo, projects/<PROJECT_ID>/topics/<TOPIC_NAME>.

Parâmetros opcionais

  • username: o nome de utilizador a usar para a ligação JDBC. Pode transmitir este valor como uma string encriptada com uma chave do Cloud KMS e, em seguida, codificada em Base64. Por exemplo, echo -n 'some_username' | glcloud kms encrypt --location=my_location --keyring=mykeyring --key=mykey --plaintext-file=- --ciphertext-file=- | base64.
  • password: a palavra-passe a usar para a ligação JDBC. Pode transmitir este valor como uma string encriptada com uma chave do Cloud KMS e, em seguida, codificada em Base64. Por exemplo, echo -n 'some_password' | glcloud kms encrypt --location=my_location --keyring=mykeyring --key=mykey --plaintext-file=- --ciphertext-file=- | base64.
  • connectionProperties: a string de propriedades a usar para a ligação JDBC. O formato da string tem de ser [propertyName=property;]*. Por exemplo, unicode=true;characterEncoding=UTF-8.
  • KMSEncryptionKey: a chave de encriptação do Cloud KMS a usar para desencriptar o nome de utilizador, a palavra-passe e a string de ligação. Se for transmitida uma chave do Cloud KMS, o nome de utilizador, a palavra-passe e a string de ligação têm de ser transmitidos encriptados e codificados em Base64. Por exemplo, projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key.
  • disabledAlgorithms: algoritmos separados por vírgulas a desativar. Se este valor estiver definido como none, nenhum algoritmo é desativado. Use este parâmetro com cuidado, porque os algoritmos desativados por predefinição podem ter vulnerabilidades ou problemas de desempenho. Por exemplo, SSLv3, RC4.
  • extraFilesToStage: caminhos do Cloud Storage ou Secrets do Secret Manager separados por vírgulas para ficheiros a serem preparados no trabalhador. Estes ficheiros são guardados no diretório /extra_files em cada trabalhador. Por exemplo, gs://<BUCKET_NAME>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID>.

Execute o modelo

Consola

  1. Aceda à página Dataflow Criar tarefa a partir de um modelo.
  2. Aceda a Criar tarefa a partir de modelo
  3. No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
  4. Opcional: para Ponto final regional, selecione um valor no menu pendente. A região predefinida é us-central1.

    Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte o artigo Localizações do Dataflow.

  5. No menu pendente Modelo do fluxo de dados, selecione the JDBC to Pub/Sub template.
  6. Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
  7. Clique em Executar tarefa.

gcloud

Na shell ou no terminal, execute o modelo:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Jdbc_to_PubSub \
    --region REGION_NAME \
    --parameters \
driverClassName=DRIVER_CLASS_NAME,\
connectionURL=JDBC_CONNECTION_URL,\
driverJars=DRIVER_PATHS,\
username=CONNECTION_USERNAME,\
password=CONNECTION_PASSWORD,\
connectionProperties=CONNECTION_PROPERTIES,\
query=SOURCE_SQL_QUERY,\
outputTopic=OUTPUT_TOPIC,\
KMSEncryptionKey=KMS_ENCRYPTION_KEY

Substitua o seguinte:

  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • REGION_NAME: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • DRIVER_CLASS_NAME: o nome da classe do controlador
  • JDBC_CONNECTION_URL: o URL de ligação JDBC
  • DRIVER_PATHS: os caminhos do Cloud Storage separados por vírgulas dos controladores JDBC
  • CONNECTION_USERNAME: o nome de utilizador da ligação JDBC
  • CONNECTION_PASSWORD: a palavra-passe da ligação JDBC
  • CONNECTION_PROPERTIES: as propriedades da ligação JDBC, se necessário
  • SOURCE_SQL_QUERY: a consulta SQL a ser executada na base de dados de origem
  • OUTPUT_TOPIC: o Pub/Sub para publicar
  • KMS_ENCRYPTION_KEY: a chave de encriptação do Cloud KMS

API

Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos de autorização, consulte projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
  "launchParameter": {
    "jobName": "JOB_NAME",
    "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Jdbc_to_PubSub"
    "parameters": {
      "driverClassName": "DRIVER_CLASS_NAME",
      "connectionURL": "JDBC_CONNECTION_URL",
      "driverJars": "DRIVER_PATHS",
      "username": "CONNECTION_USERNAME",
      "password": "CONNECTION_PASSWORD",
      "connectionProperties": "CONNECTION_PROPERTIES",
      "query": "SOURCE_SQL_QUERY",
      "outputTopic": "OUTPUT_TOPIC",
      "KMSEncryptionKey":"KMS_ENCRYPTION_KEY"
    },
    "environment": { "zone": "us-central1-f" }
  }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde quer executar a tarefa do Dataflow Google Cloud
  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • LOCATION: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • DRIVER_CLASS_NAME: o nome da classe do controlador
  • JDBC_CONNECTION_URL: o URL de ligação JDBC
  • DRIVER_PATHS: os caminhos do Cloud Storage separados por vírgulas dos controladores JDBC
  • CONNECTION_USERNAME: o nome de utilizador da ligação JDBC
  • CONNECTION_PASSWORD: a palavra-passe da ligação JDBC
  • CONNECTION_PROPERTIES: as propriedades da ligação JDBC, se necessário
  • SOURCE_SQL_QUERY: a consulta SQL a ser executada na base de dados de origem
  • OUTPUT_TOPIC: o Pub/Sub para publicar
  • KMS_ENCRYPTION_KEY: a chave de encriptação do Cloud KMS

O que se segue?