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

O modelo de Java Database Connectivity (JDBC) para Pub/Sub é um pipeline 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 do fluxo de dados 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 as 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?