Database/AWS DMS

AWS SCT (Schema Conversion Tool)

mazerunner 2022. 7. 21. 23:05

기존 상용 DBMS 중심의 서비스에서 빅데이터 시대와 MSA 등과 같은 트렌드에 따라 이기종간의 데이터 호환 및 전환을

고려해야하는 일이 많아 지고 있다.

출처 : https://db-engines.com/en/ranking/relational+dbms

이를 위해 등장하는 솔루션이 CDC(Change Data Capture) 솔루션들이다.

가장 유명하고 평판이 좋은 OGG (Oracle GoldenGate)가 대표적인 CDC 솔루션 중 하나이다. (비싸서 문제...ㅎ)

 

하지만, 이기종 DBMS간의 전환시에는 데이터 뿐 아니라 관련된 모든 객체(objects)의 전환 시 호환성을 검토해야한다.

테이블 데이터 타입 호환 유무, 특정 SQL function, Procedure, Trigger 등 각각의 요소들이 서로 다른 DBMS간의 호환 유무를 판단하기란 쉬운일이 아니다.

 

이러한 전환을 좀 더 효율적으로 진행하고 이슈를 사전에 검토할 수 있도록 지원해주는 것이 AWS의 SCT(Schema Conversion Tool)이다. 이를 이용해 이기종 DBMS간의 전환 난이도 및 가능성등을 사전에 검증할 수 있다. "무료"로!

AWS Schema Conversion Tool

AWS Schema Conversion Tool은 서로 다른 데이터베이스 엔진간의 스키마 전환/변환을 지원해주는 솔루션.

 

1) 지원되는 DBMS 종류

관계형 OLTP, 데이터웨어하우스 까지의 변환을 지원하고 있으며, 지원되는 DBMS의 종류는 아래와 같다.

구분 DBMS
Source Target
OLTP IBM DB2 (version 12) Aurora MySQL, Aurora PostgreSQL
IBM DB2
(version 9.1,9.5,9.7,10.5,11.1,11.5)
Aurora MySQL, Aurora PostgreSQL, MariaDB, MySQL, PostgreSQL
Azure SQL Aurora MySQL, Aurora PostgreSQL, MySQL, PostgreSQL
Microsoft SQL Server
(Version 2008 R2 이상)
Aurora MySQL, Aurora PostgreSQL, Aurora PostgreSQL 용 바벨피쉬 (평가 보고서 전용), MariaDB, Microsoft SQL Server, MySQL, PostgreSQL
MySQL
(version 5.5 이상)
Aurora PostgreSQL, MySQL, PostgreSQL
Oracle
(version 10.2 이상)
Aurora MySQL, Aurora PostgreSQL, MariaDB, MySQL, Oracle, PostgreSQL
PostgreSQL
(version 9.1 이상)
Aurora MySQL, Aurora PostgreSQL, MySQL, PostgreSQL
SAP SAP ASE
(version 12.5,15.0,15.5,15.7,16.0)
Aurora MySQL, Aurora PostgreSQL, MariaDB, MySQL, PostgreSQL
DW Azure Synapse Analytics
(version 10)
Amazon Redshift
Greenplum Database
(version 4.3 and later)
Microsoft SQL Server
(version 2008 and later)
Netezza
(version 7.0.3 and later)
Oracle
(version 10.2 and later)
Teradata
(version 13 and later)
Vertica
(version 7.2 and later)
Snowflake
(version 3)
NoSQL Apache Cassandra
(versions 2.1.0, 2.1.20, and 3.11.4)
Amazon DynamoDB

2) AWS SCT 지원 OS

  • Micorosoft Windows
  • Ubuntu Linux
  • Fedora Linux

3) DBMS별 Driver Download
 전환하고자 하는 DBMS별 최신 JDBC 드라이버를 다운받아 SCT에 등록하게 된다.
(* 최신버전 JDBC는 하위 버전을 포함하므로, 최신 버전 다운을 권장함)

 

4) Application Code Conversion

SCT의 또 다른 장점 중 하나는 Application Code에 작성된 SQL을 자동으로 Convert 해주는 기능이다.

지원되는 Language는 C++, C#, Java, Proc*C를 지원하고 있다.
데이터베이스 전환도 마찬가지겠지만, 이 기능을 사용시 모든 SQL에 대한 기본적인 검증은 필수 이다.

데이터베이스 전환처럼 SQL 역시 일부 DBMS별로 호환되지 않는 함수나 기능에 의해 오류가 발생 될 수 있기 때문이다.

AWS Schema Conversion Tool 시작하기

1) 프로젝트 생성

SCT는 프로젝트 단위로 관리가 되며처음 시작하면 "New Project wizard"를 통해 프로젝트 생성하면 가이드를 통해 생성을 지원받을 수 있다.

> New project wizard 선택

 

> 프로젝트명, 관련된 데이터가 저장될 장소, 전환 대상 DBMS 및 옵션 선택

 

> Source Database 로그인 정보 기입

 

> 전환 하고자하는 스키마 선택

 

> 전환 Report을 열심히 생성하고 있다.

> 아래 AWS SCT 창 하단 메모리 사용율에 대한 정보를 확인할 수 있다.

> 각 DBMS별로 Report를 추출하는 과정이여서 꽤 오래 걸린다.

> 레포트는 총 3가지로 분류된다

 1) Database Switch Assessment
    - 현재 Amazon RDS에서 제공하는 DBMS별로 분석한 레포팅 결과 제공

 2) Like-to-Like Migration Assessment
    - 같은 DBMS의 RDS 전환에 대한 레포팅 결과

 3) Server-level Report

    - OS 수준에서 RDS 전환시 영향력 있는 부분 분석 레포팅 결과

> 예제 스키마의 레포팅 결과를 보면 DBMS 전환시 가장 적합한 DBMS는 PostgreSQL 계열임을 알 수 있다.

 

> 마지막으로 전환대상 데이터베이스 정보를 기입.

 

> 위 화면과 같이 좌측 (Source Database / Oracle) 우측 (Target Database / PostgreSQL)으로 나뉘어져 정보를 제공

 

> 변환하고자 하는 스키마만 선택하여 우클릭하면 여러 옵션을 확인할 수 있다.
> report 추출, convert schema, load schema 등...

 

> 좌측에서 스키마 선택 후 convert schema를 누르면 우측에 dms_sample이라는 스키마가 생성되면서 오브젝트들이 전송됨을 확인할 수 있다.

> 현 상태는 convert하여 전송은 하였지만 Target Database에 commit된 상태가 아니며, 여기서 일부 호환되지 않거나 오류가 생긴 오브젝트들에 대해 수정을 진행할 수 있다.

> 최종적으로 다 반영이 완료되었으면 "Apply to database"를 선택한다.

 

> 한가지 추가로 고려할 사항중 하나가 "Apply extention pack"[4] 이다.

이는 Target Database에서 Source Database의 기능을 제공하지 않는 것들에 대해 Function/Trigger/Procedure 등과 같이 대체 할 수 있는 기능을 구현해 놓은 스키마 objects의 집합체이다. 따라서, 이를 연결함으로서 더 원활한 전환을 지원받을 수 있다.

> 이처럼 Target Database인 Postgresql에 aws_oracle_ext라는 스키마를 통해 호환 시키기 위한 view, functions 등을 생성함을 알 수 있다.

 

이처럼 AWS의 Schema Convertion Tool을 통해 무료로 DBMS 전환을 시도해볼 수 있으며,

이를 통해 전환된 스키마의 Data Migration의 경우 AWS Data Migration Service(DMS)를 통해 진행할 수 있다.

(* DMS는 데이터를 이관하는 양만큼 비용을 지불하는 방식이다.)

 

이 다음 챕터에서 DMS에 대해 다뤄보도록 하겠다.

 

# References

[1] AWS Schema Conversion Tool이란 무엇인가요? - https://docs.aws.amazon.com/ko_kr/SchemaConversionTool/latest/userguide/CHAP_Welcome.html

[2] 설치, 확인 및 업데이트AWS SCT - AWS SCT 설치 - https://docs.aws.amazon.com/ko_kr/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.Procedure

[3] 설치, 확인 및 업데이트AWS SCT - 필요한 데이터베이스 드라이버 다운로드 - https://docs.aws.amazon.com/ko_kr/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.JDBCDrivers

[4] 사용AWS SCT확장 팩 - https://docs.aws.amazon.com/ko_kr/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html