La transcodificación de datos de forma local en un mainframe es un proceso que requiere mucha CPU y que conlleva un alto consumo de millones de instrucciones por segundo (MIPS). Para evitarlo, puedes usar Cloud Run para mover y transcodificar datos de mainframe de forma remota enGoogle Cloud. De esta forma, tu mainframe puede centrarse en tareas empresariales esenciales y también se reduce el consumo de MIPS.
Si quieres mover volúmenes de datos muy grandes (unos 500 GB al día o más) de tu mainframe a Google Cloudy no quieres usar tu mainframe para ello, puedes usar una solución de biblioteca de cintas virtual (VTL) habilitada para la nube para transferir los datos a un contenedor de Cloud Storage. Después, puedes usar Cloud Run para transcodificar los datos del cubo y moverlos a BigQuery.
En esta página se explica cómo leer datos de mainframe copiados en un segmento 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 puede mover los datos de su mainframe a un segmento de Cloud Storage mediante una solución de VTL, transcodificar los datos al formato ORC con Cloud Run y, a continuación, mover el contenido a BigQuery.

Antes de empezar
- Elige una solución de VTL que se adapte a tus requisitos y mueve los datos de tu mainframe a un segmento de Cloud Storage. Guárdalos como
.dat
. Asegúrese de añadir una clave de metadatos llamadax-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). - Despliega Mainframe Connector en Cloud Run.
- En tu mainframe, asigna a la variable de entorno
GCSDSNURI
el prefijo que has usado para los datos de tu mainframe en el segmento de Cloud Storage. Sustituye lo siguiente:export GCSDSNURI="gs://BUCKET/PREFIX"
- BUCKET: nombre del segmento de Cloud Storage.
- PREFIX: el prefijo que quiere usar en el segmento.
- Crea una cuenta de servicio o identifica una cuenta de servicio que ya tengas para usarla con Mainframe Connector. Esta cuenta de servicio debe tener permisos para acceder a los cubos de Cloud Storage, los conjuntos de datos de BigQuery y cualquier otro Google Cloud recurso que quieras usar.
- Asegúrate de que la cuenta de servicio que has creado tenga asignado el rol de invocador de Cloud Run.
Transcodificar datos de mainframe subidos a un segmento de Cloud Storage
Para transferir datos de mainframe a Google Cloud mediante VTL y transcodificar de forma remota, debes realizar las siguientes tareas:
- Lee y transcodifica los datos presentes en un segmento de Cloud Storage al formato ORC. La operación de transcodificación convierte un conjunto de datos EBCDIC de un mainframe al formato ORC en UTF-8.
- Carga el conjunto de datos en una tabla de BigQuery.
- Opcional: Ejecuta una consulta de SQL en la tabla de BigQuery.
- Opcional: Exporta datos de BigQuery a un archivo binario en Cloud Storage.
Para llevar a cabo estas tareas, sigue estos pasos:
En tu mainframe, crea una tarea para leer los datos de un archivo
.dat
de un segmento de Cloud Storage y transcodificarlos al formato ORC, como se indica a continuación.Para ver la lista completa de variables de entorno admitidas por Mainframe Connector, 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 /*
Haz los cambios siguientes:
PROJECT_NAME
: el nombre del proyecto en el que quieres ejecutar la consulta.INPUT_FILENAME
: el nombre del archivo.dat
que has subido a un segmento de Cloud Storage.
Si quieres registrar los comandos ejecutados durante este proceso, puedes habilitar las estadísticas de carga.
Opcional: Crea y envía un trabajo de consulta de BigQuery que ejecute una lectura de SQL desde el archivo DD de QUERY. Normalmente, la consulta será una instrucción
MERGE
oSELECT INTO DML
que dé como resultado la transformación de una tabla de BigQuery. Ten en cuenta que Mainframe Connector registra las métricas de los trabajos, pero no escribe los resultados de las consultas en un archivo.Puede consultar BigQuery de varias formas: de forma insertada, 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/* /*
Haz los cambios siguientes:
PROJECT_NAME
: el nombre del proyecto en el que quieres ejecutar la consulta.LOCATION
: la ubicación en la que se ejecutará la consulta. Te recomendamos que ejecutes la consulta en una ubicación cercana a los datos.
Opcional: Crea y envía una tarea de exportación que ejecute una lectura de SQL desde el archivo QUERY DD 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 /*
Haz los cambios siguientes:
PROJECT_NAME
: el nombre del proyecto en el que quieres ejecutar la consulta.DATASET_ID
: ID del conjunto de datos de BigQuery que contiene la tabla que quiere exportar.DESTINATION_TABLE
: la tabla de BigQuery que quiere exportar.BUCKET
: el segmento de Cloud Storage que contendrá el archivo binario de salida.