Mover dados de mainframe transcodificados localmente para Google Cloud

Nesta página, explicamos como transcodificar dados de mainframe localmente no mainframe para um formato compatível e mover o conteúdo para o Google Cloud.

Antes de começar

Instale o Mainframe Connector em qualquer conjunto de dados particionado de mainframe que você queira usar como uma biblioteca de procedimentos (PROCLIB).

Os comandos qsam e vsam

A transcodificação é o processo de conversão de informações de uma forma de representação codificada para outra. O Mainframe Connector fornece os comandos qsam e vsam para transcodificar dados localmente no mainframe.

Os comandos qsam decode e vsam decode usam um copybook COBOL para converter os registros de um conjunto de dados de mainframe em um formato de arquivo como ORC, CSV, JSONL ou AVRO e gravar a saída localmente ou em um bucket do Cloud Storage. Por exemplo, é possível converter um conjunto de dados QSAM codificado em EBCDIC em arquivos ORC UTF-8. Para conferir todos os formatos de saída compatíveis, consulte TranscodeFormat.

O comando qsam encode faz o oposto: converte dados CSV, JSONL, ORC ou AVRO, ou os resultados de uma consulta do BigQuery, em um conjunto de dados QSAM. Para todos os formatos de entrada compatíveis, consulte TranscodeInputFormat.

Esses comandos oferecem os seguintes recursos:

Transcodificar dados de mainframe localmente e movê-los para o Google Cloud

O Mainframe Connector permite transcodificar dados localmente no mainframe e movê-los para o Cloud Storage. Siga estas etapas:

  1. Crie um job para ler o conjunto de dados no mainframe e transcodificá-lo para o formato ORC. Leia os dados do conjunto de dados INFILE e o layout do registro do COPYBOOK DD.

    É possível modificar o comportamento padrão do processo de transcodificação do Mainframe Connector fornecendo um arquivo de configuração do transcodificador usando o argumento --transcode-configuration.

    • Se o conjunto de dados de entrada for um arquivo de método de acesso sequencial em fila (QSAM, na sigla em inglês) com um comprimento de registro fixo ou variável, use o seguinte comando:

      //STEP01 EXEC BQSH
      //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
      //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY
      //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS
      //STDIN DD *
      BUCKET=BUCKET_NAME
      qsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename
      /*
      
    • Se o conjunto de dados de entrada for um arquivo do método de acesso de armazenamento virtual (VSAM, na sigla em inglês) com um comprimento de registro fixo ou variável, use o seguinte comando:

      //STEP01 EXEC BQSH
      //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
      //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY
      //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS
      //STDIN DD *
      BUCKET=BUCKET_NAME
      vsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename
      /*
      

      Substitua BUCKET_NAME pelo nome do bucket do Cloud Storage para o qual você quer copiar os dados do mainframe.

    Neste exemplo, o DD DataPath é usado para especificar o caminho do copybook, da entrada e da configuração de transcodificação. Consulte DataPath para ver outras opções.

    Para evitar a especificação de variáveis como IDs de projeto e nomes de bucket em cada procedimento de linguagem de controle de jobs (JCL, na sigla em inglês), é possível adicioná-las ao PROCLIB do BQSH e referenciá-las em vários procedimentos de JCL como variáveis de ambiente. Essa abordagem também simplifica a transição entre ambientes de produção e de não produção, já que as variáveis específicas do ambiente são definidas no PROCLIB do BQSH do ambiente.

    Se você quiser registrar os comandos executados durante esse processo, ative as estatísticas de carregamento.

  2. Crie e envie um job de carregamento do BigQuery que carregue o arquivo transcodificado para o BigQuery. Por exemplo, se você transcodificou os dados para o formato ORC, é possível carregar as partições de arquivo ORC de tablename.orc em MY_DATASET.MY_TABLE, da seguinte maneira:

    Example JCL
    //STEP02 EXEC BQSH
    //STDIN DD *
    BUCKET=BUCKET_NAME
    PROJECT=PROJECT_NAME
    bq load --project_id=$PROJECT \
      myproject:MY_DATASET.MY_TABLE \
      gs://$BUCKET/tablename.orc/*
    /*
    

    Substitua:

    • BUCKET_NAME: o nome do bucket do Cloud Storage que contém os arquivos ORC que você quer carregar no BigQuery.
    • PROJECT_NAME: o nome do projeto em que você quer executar a consulta.
  3. Opcional: crie e envie um job de consulta do BigQuery que execute uma leitura SQL do arquivo DD QUERY. Normalmente, a consulta é uma instrução MERGE ou SELECT INTO DML que resulta na transformação de uma tabela do BigQuery. O Mainframe Connector registra as métricas do job, mas não grava os resultados da consulta em um arquivo.

    É possível consultar o BigQuery de várias maneiras: inline, com um conjunto de dados separado usando DD ou com um conjunto de dados separado usando DSN.

    Example JCL
    //STEP03 EXEC BQSH
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    PROJECT=PROJECT_NAME
    LOCATION=LOCATION
    bq query --project_id=$PROJECT \
    --location=$LOCATION/*
    /*
    

    Substitua:

    • PROJECT_NAME: o nome do projeto em que você quer executar a consulta.
    • LOCATION: o local onde a consulta será executada. Recomendamos que você execute a consulta em um local próximo aos dados.
  4. Opcional: crie e envie um job de exportação que execute uma leitura SQL do arquivo QUERY DD e exporte o conjunto de dados resultante para um mainframe como um arquivo binário.

    //STEP04 EXEC BQSH
    //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY
    //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    
    PROJECT=PROJECT_NAME
    qsam encode \
      dd:QUERY
      dd:OUTFILE
      --copybook dd:COPYBOOK
      --transcode-configuration dd:CONFIG
      --input-format=BIGQUERY \
      --input-parameter project_id=PROJECT_NAME \
      --input-parameter location=LOCATION/*
    /*
    

    Substitua:

    • PROJECT_NAME: o nome do projeto em que você quer executar a consulta.
    • LOCATION: o local onde a consulta será executada. Recomendamos que você execute a consulta em um local próximo aos dados.

    É possível modificar o comportamento padrão do processo de transcodificação do Mainframe Connector fornecendo um arquivo de configuração do transcodificador usando o argumento --transcode-configuration.

    Os dados são exportados para o conjunto de dados OUTFILE DD. O layout do registro é descrito pelo COPYBOOK DD. Para outras opções de caminhos de configuração de copybook, arquivo de saída e transcodificação, consulte DataPath.