1. 배경 지식

DB에서 Data Lake로 데이터를 복제할 때 개인정보를 제외하고 복제한다. 모든 개인정보가 암호화되어 있지만, 사용자를 식별할 수 있는 ‘개인정보’를 복제하는 것이 위험이라고 판단했기 때문이다. 그러나 개인정보 중에 유일하게 Data Lake로 복제하는 항목이 user_id이다. user_id는 대부분의 테이블들이 foreign key로 사용하기 때문에 복호화할 수 없게 hashing처리하여 저장했다.

[DW 개선] Data Mart를 위한 User Master Table Modeling 작업을 하면서 자주 사용하지 않는 snapshot 테이블의 user_id가 hashing처리되지 않은 것을 알 수 있었다. 그래서 hashing이 누락된 테이블의 7년치 partition에 hashing을 적용하는 migration을 진행한다.

2. 요구사항

3. 문제 정의 및 방향성

4. 해결 과정

<aside> 💡 Migration하는 Table을 A라고 칭한다.

</aside>

Untitled

백업

  1. Data Lake에 저장된 A Table의 데이터 원본을 temp_A 디렉토리로 이동한다.

    Untitled

복제

  1. Glue Data Catalog에서 A Table의 테이블 schema를 이용하여 temp_A Table을 생성한다.

    Untitled

  2. Spark로 temp_A Table에 MSCK REPAIR TABLE(Metastore Check) 쿼리를 사용하여 Partition 정보를 업데이트한다.

    1. AWS Glue의 Glue Data Catalog를 사용하기 때문에 Spark 환경에서 MSCK REPAIR TABLE을 이용할 수 있다.

    Untitled

  3. Glue Data Catalog에서 A Table을 삭제한다.

    Untitled

  4. temp_A Table의 partition을 읽어서 hashing 적용되지 않은 컬럼(user_id)에 hashing을 적용한다.

    Untitled