Memindahkan data yang ditranskode secara lokal di mainframe ke Google Cloud

Halaman ini membahas cara mentranskode data mainframe secara lokal di mainframe ke format yang didukung, lalu memindahkan konten ke BigQuery. Transcoding adalah proses mengonversi informasi dari satu bentuk representasi berkode ke bentuk representasi berkode lainnya. Halaman ini membahas cara menggunakan Mainframe Connector untuk mentranskode data mainframe ke kolom baris yang dioptimalkan (ORC), lalu menyimpan data ke Cloud Storage.

Mainframe Connector menyediakan dua cara untuk mentranskode data mainframe secara lokal di mainframe.

Keunggulan perintah qsam

Perintah qsam memberikan keuntungan berikut:

  • Mendukung jenis data gabungan, termasuk klausa OCCURS (daftar), klausa REDEFINES, dan kumpulan data bertingkat. Untuk mengetahui informasi selengkapnya tentang jenis data ini, lihat referensi transcoding qsam.
  • Mendukung konfigurasi proses transcoding melalui file konfigurasi transcoder. Kemampuan ini menawarkan fleksibilitas yang lebih besar saat mendekode data ke Google Cloud, dan mengenkode data kembali ke mainframe.
  • Mendukung pembuatan set data tambahan, yang merupakan tabel error transcoding yang dapat digunakan untuk pemeriksaan error.
  • Mendukung beberapa format input dan output. Kemampuan ini memungkinkan Anda memuat data ke dan dari berbagai data warehouse.

Sebelum memulai

Instal Mainframe Connector ke set data yang dipartisi mainframe yang ingin Anda gunakan sebagai library prosedur (PROCLIB).

Pindahkan data yang ditranskode secara lokal di mainframe ke Google Cloud

Untuk mentranskode data secara lokal di mainframe, lalu memindahkannya ke BigQuery, Anda harus melakukan tugas berikut:

  1. Baca dan transkode set data di mainframe, lalu upload ke Cloud Storage dalam format ORC (untuk format lain yang hanya didukung oleh qsam commands, lihat TranscodeFormat). Transcoding dilakukan selama operasi qsam decode atau gsutil cp (berdasarkan perintah yang Anda pilih), dengan set data extended binary coded decimal interchange code (EBCDIC) mainframe dikonversi ke format ORC dalam UTF-8 selama penyalinan ke bucket Cloud Storage.
  2. Muat set data ke tabel BigQuery.
  3. (Opsional) Jalankan kueri SQL pada tabel BigQuery.
  4. (Opsional) Mengekspor data dari BigQuery kembali ke mainframe.

Bagian berikut menjelaskan secara mendetail cara memindahkan data yang ditranskode secara lokal di mainframe ke Google Cloud menggunakan perintah qsam dan perintah gsutil cp.

Mentranskode secara lokal menggunakan perintah qsam

Untuk mentranskode data mainframe secara lokal di mainframe menggunakan perintah qsam, gunakan langkah-langkah berikut:

  1. Buat tugas untuk membaca set data di mainframe dan transkode ke format ORC, seperti yang ditunjukkan dalam perintah berikut. Baca data dari set data INFILE, dan tata letak data dari COPYBOOK DD. Set data input harus berupa file metode akses berurutan (QSAM) dalam antrean dengan panjang data tetap atau variabel.

    Anda dapat mengubah perilaku default proses transcoding Mainframe Connector dengan memberikan file konfigurasi transcoder menggunakan argumen --transcode-configuration.

    //STEP01 EXEC BQSH
    //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY
    //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS
    //STDIN DD *
    BUCKET=BUCKET_NAME
    qsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename
    /*
    

    Ganti BUCKET_NAME dengan nama bucket Cloud Storage tempat Anda ingin menyalin data mainframe.

    Untuk menghindari penentuan variabel seperti project ID dan nama bucket di setiap prosedur job control language (JCL), Anda dapat menambahkannya di BQSH PROCLIB dan mereferensikannya di beberapa prosedur JCL sebagai variabel lingkungan. Pendekatan ini juga membantu memberikan transisi yang lancar antara lingkungan produksi dan non-produksi, karena variabel khusus lingkungan ditetapkan di BQSH PROCLIB lingkungan.

    Dalam contoh ini, DD DataPath digunakan untuk menentukan jalur konfigurasi copybook, input, dan transcoding. Lihat DataPath untuk mengetahui opsi lainnya.

    Jika ingin mencatat perintah yang dieksekusi selama proses ini, Anda dapat mengaktifkan statistik pemuatan.

  2. Buat dan kirim tugas pemuatan BigQuery yang memuat partisi file ORC dari tablename.orc ke MY_DATASET.MY_TABLE, sebagai berikut.

    Example JCL
    //STEP02 EXEC BQSH
    //STDIN DD *
    BUCKET=BUCKET_NAME
    PROJECT=PROJECT_NAME
    bq load --project_id=$PROJECT \
      myproject:MY_DATASET.MY_TABLE \
      gs://$BUCKET/tablename.orc/*
    /*
    

    Ganti kode berikut:

    • BUCKET_NAME: nama bucket Cloud Storage yang berisi file ORC yang ingin Anda muat ke BigQuery.
    • PROJECT_NAME: nama project tempat Anda ingin menjalankan kueri.
  3. (Opsional) Buat dan kirim tugas kueri BigQuery yang menjalankan pembacaan SQL dari file DD QUERY. Biasanya, kueri akan berupa pernyataan MERGE atau SELECT INTO DML yang menghasilkan transformasi tabel BigQuery. Perhatikan bahwa Mainframe Connector mencatat metrik tugas, tetapi tidak menulis hasil kueri ke file.

    Anda dapat membuat kueri BigQuery dengan berbagai cara - inline, dengan set data terpisah menggunakan DD, atau dengan set data terpisah menggunakan 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/*
    /*
    

    Ganti kode berikut:

    • PROJECT_NAME: nama project tempat Anda ingin menjalankan kueri.
    • LOCATION: Lokasi tempat kueri akan dijalankan. Sebaiknya jalankan kueri di lokasi yang dekat dengan data.
  4. (Opsional) Buat dan kirim tugas ekspor yang mengeksekusi pembacaan SQL dari file DD QUERY, dan ekspor set data yang dihasilkan ke mainframe sebagai file biner.

    Anda dapat mengubah perilaku default proses transcoding Mainframe Connector dengan memberikan file konfigurasi transcoder menggunakan argumen --transcode-configuration.

    //STEP04 EXEC BQSH
    //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY
    //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    
    PROJECT=PROJECT_NAME
    qsam encode \
      dd:QUERY
      dd:OUTFILE
      --copybook dd:COPYBOOK
      --transcode-configuration dd:CONFIG
      --input-format=BIGQUERY \
      --input-parameter project_id=PROJECT_NAME \
      --input-parameter location=LOCATION/*
    /*
    

    Ganti kode berikut:

    • PROJECT_NAME: nama project tempat Anda ingin menjalankan kueri.
    • LOCATION: Lokasi tempat kueri akan dijalankan. Sebaiknya jalankan kueri di lokasi yang dekat dengan data.

    Data diekspor ke set data OUTFILE DD. Tata letak data dijelaskan oleh COPYBOOK DD. Untuk opsi lain untuk jalur konfigurasi transcoding, file keluar, dan salinan buku, lihat DataPath.

Mentranskode secara lokal menggunakan perintah gsutil cp

Untuk mentranskode data mainframe secara lokal di mainframe menggunakan perintah gsutil cp, gunakan langkah-langkah berikut:

  1. Buat tugas untuk membaca set data di mainframe dan transkode ke format ORC, seperti yang ditunjukkan dalam perintah berikut. Baca data dari set data INFILE, dan tata letak data dari COPYBOOK DD. Set data input harus berupa file metode akses berurutan (QSAM) dalam antrean dengan panjang data tetap atau variabel.

    //STEP01 EXEC BQSH
    //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME
    //STDIN DD *
    BUCKET=BUCKET_NAME
    gsutil cp --replace gs://$BUCKET/tablename.orc
    /*
    

    Ganti BUCKET_NAME dengan nama bucket Cloud Storage tempat Anda ingin menyalin data mainframe.

    Untuk menghindari penentuan variabel seperti project ID dan nama bucket di setiap prosedur JCL, Anda dapat menambahkannya di BQSH PROCLIB dan mereferensikannya di beberapa prosedur JCL sebagai variabel lingkungan. Pendekatan ini juga membantu memberikan transisi yang lancar antara lingkungan produksi dan non-produksi, karena variabel khusus lingkungan ditetapkan di PROCLIB BQSH lingkungan. Untuk mengetahui daftar lengkap variabel lingkungan yang didukung oleh Mainframe Connector, lihat Variabel lingkungan.

    Dalam contoh ini, input standar (STDIN) disediakan sebagai data dalam streaming ke STDIN DD. Atau, Anda dapat memberikan input ini menggunakan nama sumber data (DSN), yang memudahkan pengelolaan penggantian simbol.

    Jika ingin mencatat perintah yang dieksekusi selama proses ini, Anda dapat mengaktifkan statistik pemuatan.

  2. Buat dan kirim tugas pemuatan BigQuery yang memuat partisi file ORC dari tablename.orc ke MY_DATASET.MY_TABLE, sebagai berikut.

    Example JCL
    //STEP02 EXEC BQSH
    //STDIN DD *
    BUCKET=BUCKET_NAME
    PROJECT=PROJECT_NAME
    bq load --project_id=$PROJECT \
      myproject:MY_DATASET.MY_TABLE \
      gs://$BUCKET/tablename.orc/*
    /*
    

    Ganti kode berikut:

    • BUCKET_NAME: nama bucket Cloud Storage yang berisi file ORC yang ingin Anda muat ke BigQuery.
    • PROJECT_NAME: nama project tempat Anda ingin menjalankan kueri.
  3. (Opsional) Buat dan kirim tugas kueri BigQuery yang menjalankan pembacaan SQL dari file DD QUERY. Biasanya, kueri akan berupa pernyataan MERGE atau SELECT INTO DML yang menghasilkan transformasi tabel BigQuery. Perhatikan bahwa Mainframe Connector mencatat metrik tugas, tetapi tidak menulis hasil kueri ke file.

    Anda dapat membuat kueri BigQuery dengan berbagai cara - inline, dengan set data terpisah menggunakan DD, atau dengan set data terpisah menggunakan 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/*
    /*
    

    Ganti kode berikut:

    • PROJECT_NAME: nama project tempat Anda ingin menjalankan kueri.
    • LOCATION: Lokasi tempat kueri akan dijalankan. Sebaiknya jalankan kueri di lokasi yang dekat dengan data.
  4. (Opsional) Buat dan kirim tugas ekspor yang mengeksekusi pembacaan SQL dari file DD QUERY, dan ekspor set data yang dihasilkan ke mainframe sebagai file biner.

    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
    bq export --project_id=$PROJECT \
      --dataset_id=$DATASET_ID \
      --destination_table=$DESTINATION_TABLE \
      --location="US" \
      --remoteHost <mainframe-connector-url>.a.run.app \
      --remotePort 443
    /*
    

    Ganti kode berikut:

    • PROJECT_NAME: Nama project tempat Anda ingin menjalankan kueri.
    • DATASET_ID: ID set data BigQuery yang berisi tabel yang ingin Anda ekspor.
    • DESTINATION_TABLE: Tabel BigQuery yang ingin Anda ekspor.

    Data diekspor ke set data OUTFILE DD. Tata letak data dijelaskan oleh COPYBOOK DD.