QueryPie 자체 쿼리 실행 로직 및 개선

QueryPie 자체 쿼리 실행 로직 및 개선

 

개요

  • 정책 적용, 구문 분석 등의 이유로 사용자가 쿼리를 실행하기 전 QueryPie에서 실행하는 쿼리에 대한 로직 설명

  • 10.2.8 이상 버전에서 QueryPie가 실행하는 쿼리에 대한 개선점 설명

 

로직

QueryPie는 다음과 같은 이유로 사용자가 쿼리를 실행할 때 마다 항상 information_schema를 조회하는 쿼리를 실행합니다.

EXECUTE statement12 USING 'I_MKT_BIDW', 'DIM_ACCOUNT_USER_PALSONIC' ; SELECT c.column_name , IF((t.table_type = 'BASE TABLE'), 't', 'v') table_type , c.ordinal_position FROM (CDP_HIVE.information_schema.tables t INNER JOIN CDP_HIVE.information_schema.columns c ON ((t.table_name = c.table_name) AND (t.table_schema = c.table_schema) AND (t.table_catalog = c.table_catalog))) WHERE ((UPPER(t.table_schema) = UPPER(?)) AND (UPPER(t.table_name) = UPPER(?)));

상세 로직

  • 해당 로직은 정책의 유무와 상관 없으며 모든 벤더에서 동일하게 동작합니다.

  • 쿼리의 역할은 아래와 같습니다.

    • 테이블, 컬럼을 분석하여 정책 활성화 시 적용 (Data Access, Data Masking, DML Snapshot ..)

    • Audit Log 활성화 시 로그가 남겨질 때 Table 명 제공을 위한 구문 분석

    • 사용 쿼리에 계정의 패스워드가 존재할 경우 로깅 시 마스킹

 

개선 로직

  • 10.2.8 버전에서 QueryPie가 실행하는 쿼리의 성능 이슈로 인해 아래 내용이 개선되었습니다.

    • 두 테이블의 JOIN 연산 수행의 부하 원인으로 테이블과 컬럼 정보를 별도 쿼리로 나눠서 가져오도록 개선