Transcodifica los datos de la unidad central que se movieron a Google Cloud con la biblioteca de cintas virtuales

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.

Si deseas mover grandes volúmenes de datos (alrededor de 500 GB por día o más) de tu mainframe a Google Cloud y no quieres usarlo para esta tarea, puedes usar una solución de biblioteca de cintas virtuales (VTL) habilitada para la nube para transferir los datos a un bucket de Cloud Storage. Luego, puedes usar Cloud Run para transcodificar los datos presentes en el bucket y moverlos a BigQuery.

En esta página, se explica cómo leer datos de mainframe copiados en un bucket de Cloud Storage, transcodificarlos del conjunto de datos de código de intercambio decimal codificado en binario extendido (EBCDIC) al formato ORC en UTF-8 y cargar el conjunto de datos en una tabla de BigQuery.

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

Cómo transcodificar datos de mainframe de forma remota con VTL
Cómo transcodificar datos de mainframe de forma remota con VTL

Antes de comenzar

  • Elige una solución de VTL que se adapte a tus requisitos y mueve tus datos de mainframe a un bucket de Cloud Storage y guárdalos como .dat. Asegúrate de agregar una clave de metadatos llamada x-goog-meta-lrecl al archivo .dat subido y de que la longitud de la clave de metadatos sea igual a la longitud del registro del archivo original, por ejemplo, 80.
  • Implementa Mainframe Connector en Cloud Run.
  • En tu mainframe, establece la variable de entorno GCSDSNURI en el prefijo que usaste para los datos de mainframe en el bucket de Cloud Storage.
    export GCSDSNURI="gs://BUCKET/PREFIX"
    
    Reemplaza lo siguiente:
    • BUCKET: Es el nombre del bucket de Cloud Storage.
    • PREFIX: Es el prefijo que deseas usar en el bucket.
  • Crea una cuenta de servicio o identifica una cuenta de servicio existente para usarla con Mainframe Connector. Esta cuenta de servicio debe tener permisos para acceder a los buckets de Cloud Storage, a los conjuntos de datos de BigQuery y a cualquier otro recurso de Google Cloud que desees usar.
  • Asegúrate de que la cuenta de servicio que creaste tenga asignado el rol de invocador de Cloud Run.

Transcodifica los datos de la unidad central subidos a un bucket de Cloud Storage

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

  1. Lee y transcodifica los datos presentes en un bucket de Cloud Storage al formato ORC. La operación de transcodificación convierte un conjunto de datos EBCDIC de mainframe al formato ORC en UTF-8.
  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 mainframe, crea un trabajo para leer los datos de un archivo .dat en un bucket de Cloud Storage y transcódelos al formato ORC, como se indica a continuación.

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

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

    Reemplaza lo siguiente:

    • PROJECT_NAME: Es el nombre del proyecto en el que deseas ejecutar la consulta.
    • INPUT_FILENAME: Es el nombre del archivo .dat que subiste a un bucket de Cloud Storage.

    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/*
    /*
    

    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.