메인프레임에서 로컬로 데이터를 트랜스코딩하는 것은 CPU 집약적인 프로세스이므로 MIPS(초당 백만 명령) 소비량이 높아집니다. 이를 방지하려면 Cloud Run을 사용하여 Google Cloud에서 원격으로 메인프레임 데이터를 이동하고 트랜스코딩하면 됩니다. 이렇게 하면 비즈니스에 중요한 작업을 위한 메인프레임이 확보되고 MIPS 소비가 줄어듭니다.
다음 다이어그램은 메인프레임 데이터를 Cloud Storage 버킷으로 이동하고, Cloud Run을 사용하여 데이터를 ORC 형식으로 트랜스코딩한 후, 콘텐츠를 BigQuery로 이동하는 방법을 보여줍니다.
시작하기 전에
- Cloud Run에 Mainframe Connector를 배포합니다.
- 서비스 계정을 만들거나 Mainframe Connector에 사용할 기존 서비스 계정을 식별합니다. 이 서비스 계정에는 Cloud Storage 버킷, BigQuery 데이터 세트, 사용하려는 기타 Google Cloud 리소스에 액세스할 수 있는 권한이 있어야 합니다.
- 만든 서비스 계정에 Cloud Run 호출자 역할이 할당되어 있는지 확인합니다.
메인프레임 데이터를 Google Cloud로 이동하고 Cloud Run을 사용하여 원격으로 트랜스코딩
메인프레임 데이터를 Google Cloud로 이동하고 Cloud Run을 사용하여 원격으로 트랜스코딩하려면 다음 태스크를 수행해야 합니다.
- 메인프레임에서 데이터 세트를 읽고 트랜스코딩한 후 ORC 형식으로 Cloud Storage에 업로드합니다. 트랜스코딩은
cp
작업 중에 수행됩니다. 여기서 메인프레임 확장 바이너리 코딩 십진수 교환 코드(EBCDIC) 데이터 세트는 Cloud Storage 버킷에 복사하는 동안 UTF-8의 ORC 형식으로 변환됩니다. - 데이터 세트를 BigQuery 테이블에 로드합니다.
- (선택사항) BigQuery 테이블에서 SQL 쿼리를 실행합니다.
- (선택사항) BigQuery의 데이터를 Cloud Storage의 바이너리 파일로 내보냅니다.
이 태스크를 수행하려면 다음 단계를 따르세요.
메인프레임에서 다음과 같이 메인프레임의 데이터 세트를 읽고 ORC 형식으로 트랜스코딩하는 작업을 만듭니다. INFILE 데이터 세트에서 데이터를 읽고 COPYBOOK DD의 레코드 레이아웃을 읽습니다. 입력 데이터 세트는 레코드 길이가 고정되었거나 가변적인 큐에 추가된 순차 액세스 메서드(QSAM) 파일이어야 합니다.
Mainframe Connector에서 지원하는 환경 변수의 전체 목록은 환경 변수를 참조하세요.
//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 \ --remoteHost <mainframe-connector-url>.a.run.app \ --remotePort 443 /*
이 프로세스 중에 실행된 명령어를 로깅하려면 로드 통계를 사용 설정하면 됩니다.
(선택사항) QUERY DD 파일에서 SQL 읽기를 실행하는 BigQuery 쿼리 작업을 만들고 제출합니다. 일반적으로 쿼리는 BigQuery 테이블을 변환하는
MERGE
또는SELECT INTO DML
문이 됩니다. Mainframe Connector는 작업 측정항목에 로깅되지만 쿼리 결과를 파일에 쓰지 않습니다.DD를 사용하는 별도의 데이터세트 또는 DSN을 사용하는 별도의 데이터세트를 사용하는 등 다양한 방법으로 BigQuery를 인라인으로 쿼리할 수 있습니다.
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/* /*
다음을 바꿉니다.
PROJECT_NAME
: 쿼리를 실행할 프로젝트의 이름입니다.LOCATION
: 쿼리가 실행되는 위치입니다. 데이터와 가까운 위치에서 쿼리를 실행하는 것이 좋습니다.
(선택사항) QUERY DD 파일에서 SQL 읽기를 실행하는 내보내기 작업을 만들어 제출하고 결과 데이터 세트를 Cloud Storage에 바이너리 파일로 내보냅니다.
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 /*
다음을 바꿉니다.
PROJECT_NAME
: 쿼리를 실행할 프로젝트의 이름입니다.DATASET_ID
: 내보내려는 테이블이 포함된 BigQuery 데이터 세트 ID입니다.DESTINATION_TABLE
: 내보내려는 BigQuery 테이블입니다.BUCKET
: 출력 바이너리 파일이 포함될 Cloud Storage 버킷입니다.
다음 단계
- 로컬로 트랜스코딩된 메인프레임 데이터를 Google Cloud로 이동
- Google Cloud에서 원격으로 메인프레임 데이터 트랜스코딩
- 가상 테이프 라이브러리를 사용하여 Google Cloud로 이동된 메인프레임 데이터 트랜스코딩