Transcoder des données de mainframe à distance sur Google Cloud

Le transcodage des données en local sur un mainframe est un processus gourmand en ressources processeur qui entraîne une forte consommation de millions d'instructions par seconde (MIPS). Pour éviter cela, vous pouvez utiliser Cloud Run pour déplacer et transcoder à distance les données de mainframe surGoogle Cloud au format ORC (Optimized Row Columnar), puis déplacer les données vers Cloud Storage. Cela libère votre mainframe pour les tâches critiques et réduit également la consommation de MIPS.

La figure suivante décrit comment déplacer vos données de mainframe versGoogle Cloud , les transcoder à distance au format ORC à l'aide de Cloud Run, puis déplacer le contenu vers BigQuery.

Transcoder des données de mainframe à distance
Transcoder à distance les données du mainframe

Avant de commencer

Déplacer des données de mainframe vers Google Cloud et les transcoder à distance à l'aide de Cloud Run

Pour déplacer vos données de mainframe vers Google Cloud et les transcoder à distance à l'aide de Cloud Run, vous devez effectuer les tâches suivantes :

  1. Lire et transcoder un ensemble de données sur un ordinateur central, puis l'importer dans Cloud Storage au format ORC. Le transcodage est effectué lors de l'opération gsutil cp, où un ensemble de données EBCDIC (Extended Binary Coded Decimal Interchange Code) de mainframe est converti au format ORC en UTF-8 lors de la copie dans un bucket Cloud Storage.
  2. Chargez l'ensemble de données dans une table BigQuery.
  3. (Facultatif) Exécutez une requête SQL sur la table BigQuery.
  4. (Facultatif) Exportez les données de BigQuery dans un fichier binaire dans Cloud Storage.

Pour effectuer ces tâches, procédez comme suit :

  1. Sur votre mainframe, créez un job pour lire l'ensemble de données sur votre mainframe et le transcoder au format ORC, comme suit. Lisez les données de l'ensemble de données INFILE et la mise en page de l'enregistrement à partir du DD COPYBOOK. L'ensemble de données d'entrée doit être un fichier QSAM (Queued Sequential Access Method) avec une longueur d'enregistrement fixe ou variable.

    Pour obtenir la liste complète des variables d'environnement compatibles avec Mainframe Connector, consultez Variables d'environnement.

    //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 vous souhaitez consigner les commandes exécutées au cours de ce processus, vous pouvez activer les statistiques de chargement.

  2. (Facultatif) Créez et envoyez un job de requête BigQuery qui exécute une lecture SQL à partir du fichier DD QUERY. En règle générale, la requête est une instruction MERGE ou SELECT INTO DML qui entraîne la transformation d'une table BigQuery. Notez que le connecteur Mainframe enregistre les métriques des jobs, mais n'écrit pas les résultats des requêtes dans un fichier.

    Vous pouvez interroger BigQuery de différentes manières : en ligne, avec un ensemble de données distinct à l'aide de DD ou avec un ensemble de données distinct à l'aide de 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/*
    /*
    

    Vous devez également définir la variable d'environnement BQ_QUERY_REMOTE_EXECUTION=true.

    Remplacez les éléments suivants :

    • PROJECT_NAME : nom du projet dans lequel vous souhaitez exécuter la requête.
    • LOCATION : emplacement où la requête sera exécutée. Nous vous recommandons d'exécuter la requête dans un emplacement proche des données.
  3. (Facultatif) Créez et envoyez un job d'exportation qui exécute une lecture SQL à partir du fichier DD QUERY et exporte l'ensemble de données résultant vers Cloud Storage en tant que fichier binaire.

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

    Remplacez les éléments suivants :

    • PROJECT_NAME : nom du projet dans lequel vous souhaitez exécuter la requête.
    • DATASET_ID : ID de l'ensemble de données BigQuery contenant la table que vous souhaitez exporter.
    • DESTINATION_TABLE : table BigQuery que vous souhaitez exporter.
    • BUCKET : bucket Cloud Storage qui contiendra le fichier binaire de sortie.

Étapes suivantes