Transcodifica datos de la unidad central de procesamiento de forma remota en Google Cloud

La transcodificación de datos de forma local en un mainframe es un proceso intensivo en la CPU que genera un alto consumo de millones de instrucciones por segundo (MIPS). Para evitar esto, puedes usar Cloud Run para mover y transcodificar datos de unidades centrales de forma remota en Google Cloud. Esto libera el mainframe para tareas empresariales esenciales y también reduce el consumo de MIPS.

En el siguiente diagrama, se muestra cómo puedes mover tus datos de la unidad central a un bucket de Cloud Storage, transcodificarlos al formato ORC con Cloud Run y, luego, mover el contenido a BigQuery.

Cómo transcodificar datos de la unidad central de forma remota
Transcodifica datos de mainframe de forma remota

Antes de comenzar

Cómo mover datos de unidades centrales a Google Cloud y transcodificarlos de forma remota con Cloud Run

Para mover tus datos de la unidad central a Google Cloud y transcodificarlos de forma remota con Cloud Run, debes realizar las siguientes tareas:

  1. Lee y transcodifica un conjunto de datos en un mainframe, y súbelo a Cloud Storage en formato ORC. La transcodificación se realiza durante la operación cp, en la que un conjunto de datos de código de intercambio decimal codificado binario extendido (EBCDIC) de mainframe se convierte al formato ORC en UTF-8 durante la copia en un bucket de Cloud Storage.
  2. Carga el conjunto de datos en una tabla de BigQuery.
  3. Ejecuta una consulta en SQL en la tabla de BigQuery (opcional).
  4. (Opcional) Exporta datos de BigQuery a un archivo binario en Cloud Storage.

Para realizar estas tareas, sigue estos pasos:

  1. En tu computadora central, crea un trabajo para leer el conjunto de datos y transcódjalo al formato ORC, como se indica a continuación. Lee los datos del conjunto de datos INFILE y el diseño de registro del DD COPYBOOK. El conjunto de datos de entrada debe ser un archivo de método de acceso secuencial en cola (QSAM) con una longitud de registro fija o variable.

    Para obtener la lista completa de las variables de entorno compatibles con el conector de Mainframe, consulta Variables de entorno.

    //STEP01 EXEC BQSH
    //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME
    //STDIN DD *
    gsutil cp --replace gs://mybucket/tablename.orc --remote \
      --remoteHost <mainframe-connector-url>.a.run.app \
      --remotePort 443
    /*
    

    Si deseas registrar los comandos ejecutados durante este proceso, puedes habilitar las estadísticas de carga.

  2. (Opcional) Crea y envía un trabajo de consulta de BigQuery que ejecute una operación de lectura de SQL desde el archivo DD de QUERY. Por lo general, la consulta será una sentencia MERGE o SELECT INTO DML que genera la transformación de una tabla de BigQuery. Ten en cuenta que Mainframe Connector registra las métricas de trabajo, pero no escribe los resultados de la consulta en un archivo.

    Puedes consultar BigQuery de varias maneras: intercalada, con un conjunto de datos independiente mediante DD o con un conjunto de datos independiente mediante 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 \
      --remoteHost <mainframe-connector-url>.a.run.app \
      --remotePort 443/*
    /*
    

    Además, debes configurar la variable de entorno BQ_QUERY_REMOTE_EXECUTION=true.

    Reemplaza lo siguiente:

    • PROJECT_NAME: Es el nombre del proyecto en el que deseas ejecutar la consulta.
    • LOCATION: Es la ubicación en la que se ejecutará la consulta. Te recomendamos que ejecutes la consulta en una ubicación cercana a los datos.
  3. (Opcional) Crea y envía un trabajo de exportación que ejecute una operación de lectura de SQL desde el archivo DD de QUERY y exporte el conjunto de datos resultante a Cloud Storage como un archivo binario.

    Example JCL
    //STEP04 EXEC BQSH
    //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    PROJECT=PROJECT_NAME
    DATASET_ID=DATASET_ID
    DESTINATION_TABLE=DESTINATION_TABLE
    BUCKET=BUCKET
    bq export --project_id=$PROJECT \
      --dataset_id=$DATASET_ID \
      --destination_table=$DESTINATION_TABLE \
      --location="US" \
      --bucket=$BUCKET \
      --remoteHost <mainframe-connector-url>.a.run.app \
      --remotePort 443
    /*
    

    Reemplaza lo siguiente:

    • PROJECT_NAME: Es el nombre del proyecto en el que deseas ejecutar la consulta.
    • DATASET_ID: El ID del conjunto de datos de BigQuery que contiene la tabla que deseas exportar.
    • DESTINATION_TABLE: Es la tabla de BigQuery que deseas exportar.
    • BUCKET: Es el bucket de Cloud Storage que contendrá el archivo binario de salida.

¿Qué sigue?