Transcoder les données de mainframe transférées vers Google Cloud à l'aide d'une bibliothèque de bandes virtuelles

La transcodification de données localement sur un mainframe est un processus gourmand en processeur qui entraîne une consommation élevée de millions d'instructions par seconde (MIPS). Pour éviter cela, vous pouvez utiliser Cloud Run pour déplacer et transcoder des données de mainframe à distance sur Google Cloud. Cela libère votre mainframe pour les tâches critiques pour l'entreprise et réduit également la consommation de MIPS.

Si vous souhaitez déplacer d'importants volumes de données (environ 500 Go par jour ou plus) depuis votre mainframe vers Google Cloud, et que vous ne souhaitez pas l'utiliser pour Pour cela, vous pouvez utiliser une solution cloud de bibliothèque de bandes virtuelles (VTL) afin de transférer les données vers un bucket Cloud Storage. bucket. Vous pouvez ensuite utiliser Cloud Run pour transcoder les données présentes dans le et le déplacer vers BigQuery.

Cette page explique comment lire les données de mainframe copiées dans un bucket Cloud Storage, les transcoder du format EBCDIC (Extended Binary Coded Decimal Interchange Code) au format ORC en UTF-8, puis les charger dans une table BigQuery.

Le schéma suivant montre comment déplacer vos données de mainframe vers un bucket Cloud Storage à l'aide d'une solution VTL, transcoder les données au format ORC à l'aide de Cloud Run, puis déplacer le contenu vers BigQuery.

Transcoder à distance des données de mainframe à l'aide de VTL
Transcoder à distance des données de mainframe à l'aide d'un VTL

Avant de commencer

  • Choisissez une solution VTL adaptée à vos besoins et déplacez votre mainframe dans un bucket Cloud Storage et les enregistrer en tant que .dat. Assurez-vous d'ajouter une clé de métadonnées nommée x-goog-meta-lrecl au fichier .dat importé et que la longueur de la clé de métadonnées est égale à la longueur d'enregistrement du fichier d'origine, par exemple 80.
  • Déployez le connecteur de mainframe sur Cloud Run.
  • Dans votre mainframe, définissez la variable d'environnement GCSDSNURI sur la valeur que vous avez utilisé pour vos données de mainframe dans le bucket Cloud Storage.
    export GCSDSNURI="gs://BUCKET/PREFIX"
    
    Remplacez les éléments suivants :
    • BUCKET: nom du bucket Cloud Storage.
    • PREFIX: préfixe que vous souhaitez utiliser dans le bucket.
  • Créez un compte de service ou identifiez un compte de service existant à utiliser avec Mainframe Connector. Ce compte de service doit être autorisé à accéder aux buckets Cloud Storage, Ensembles de données BigQuery et toute autre ressource Google Cloud de votre choix utiliser.
  • Assurez-vous que le rôle Demandeur Cloud Run est attribué au compte de service que vous avez créé.

Transcoder les données de mainframe importées dans un bucket Cloud Storage

Pour déplacer des données de mainframe vers Google Cloud à l'aide de VTL et effectuer une transcodage à distance, vous devez effectuer les tâches suivantes :

  1. Lire les données présentes dans un bucket Cloud Storage et les transcoder dans l'environnement ORC . L'opération de transcodage convertit un ensemble de données EBCDIC du mainframe au format Format ORC en UTF-8.
  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 des données de BigQuery vers un fichier binaire dans Cloud Storage.

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

  1. Dans votre mainframe, créez un job pour lire les données à partir d'un .dat. dans un bucket Cloud Storage, puis transcodez-le au format ORC, comme indiqué ci-dessous.

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

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

    Remplacez les éléments suivants :

    • PROJECT_NAME : nom du projet dans lequel vous souhaitez exécuter la requête.
    • INPUT_FILENAME: nom du .dat que vous avez importé dans un bucket Cloud Storage.

    Si vous souhaitez consigner les commandes exécutées au cours de ce processus, vous pouvez activer les statistiques de charge.

  2. (Facultatif) Créez et envoyez un job de requête BigQuery qui exécute une lecture SQL à partir de le fichier QUERY DD. Généralement, la requête est de type MERGE ou SELECT INTO DML. entraînant la transformation d'une table BigQuery. Notez que le connecteur Mainframe consigne les métriques de tâche, mais n'écrit pas les résultats de la requête 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/*
    /*
    

    Remplacez les éléments suivants :

    • PROJECT_NAME: nom du projet dans lequel vous voulez exécuter la requête.
    • LOCATION: emplacement correspondant à la requête exécuté. Nous vous recommandons d'exécuter la requête dans un endroit proche du données.
  3. (Facultatif) Créez et envoyez une tâche d'exportation qui exécute une lecture SQL à partir du fichier DD QUERY et exporte le jeu de données obtenu 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 qui contient 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.