기존 상용 DBMS 중심의 서비스에서 빅데이터 시대와 MSA 등과 같은 트렌드에 따라 이기종간의 데이터 호환 및 전환을
고려해야하는 일이 많아 지고 있다.
이를 위해 등장하는 솔루션이 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