[AWS Aurora] Babelfish를 사용하여 MS SQL 쿼리를 변경 없이 PostgreSQL에서 사용하기
- SSRS에서 Babelfish를 사용하여 쿼리 수정없이 리포트 실행 가능
l Version : AWS Aurora Babelfish
앞에서 다루었던 AWS SCT (Schema Conversion Tool)과 AWS DMS (Database Migration Service) 서비스를 사용하여 이기종 간의 데이터베이스 스키마 전환 및 실시간 데이터베이스 마이그레이션에 대해서 살펴 보았다.
l [AWS SCT] AWS SCT를 활용하여 이기종 데이터베이스 스키마 전환하기 : https://sungwookkang.com/1497
l [AWS DMS] AWS DMS를 활용하여 데이터 마이그레이션 과정에서 데이터 마스킹 하기 : https://sungwookkang.com/1496
이렇게 이기종 데이터베이스 마이그레이션 작업이 진행되면, 기존 데이터베이스를 사용하던 애플리케이션 또한 새로운 데이터베이스에 맞게 변경 작업이 필요하다. 그런데 기업 입장에서 보면 이러한 변경에 따른 개발 리소스 비용이 증가하게 되어 부담되는 것이 현실이다. 만약 기존에 사용중인 데이터베이스가 Microsoft SQL Server이며 마이그레이션된 데이터베이스가 Aurora PostgreSQL이라면, AWS Aurora에서 제공하는 Babelfish를 사용하여 기존 SQL Server에서 사용하던 쿼리 그대로 PostgreSQL에서 사용할 수 있다. 이번 포스트에서는 AWS에서 제공하는 Babelfish에 대해서 알아본다.
Babelfish for Aurora PostgreSQL는 Amazon Aurora PostgreSQL 호환 에디션의 새로운 기능으로, 이를 통해 Aurora는 Microsoft SQL Server용으로 작성된 애플리케이션의 명령을 이해할 수 있다. Aurora PostgreSQL은 Babelfish를 통해 Microsoft SQL Server의 전용 SQL 언어인 T-SQL을 이해하고 동일한 통신 프로토콜을 지원한다. 따라서 원래 SQL Server용으로 작성된 앱을 최소한의 코드 변경으로 Aurora에서 사용할 수 있다. 결과적으로, SQL Server 2005 이상에서 실행되는 애플리케이션을 수정하고 Aurora로 이동하는 데 필요한 작업이 줄어들기 때문에 마이그레이션 속도를 높이고 위험을 낮추며 비용 효율성을 개선할 수 있다.
Babelfish는 Amazon Aurora의 기본 제공 기능으로, 추가 비용 없이 사용할 수 있으며, RDS 관리 콘솔에서 클릭 몇 번으로 Amazon Aurora 클러스터에서 Babelfish를 사용하도록 설정할 수 있다. 아래 그림은 Babelfish for Aurora PostgreSQL로 마이그레이션 되었을 때, 기존의 SQL Server에서 사용하던 애플리케이션과 Aurora PostgreSQL을 사용하는 애플리케이션이 어떻게 연결되고 통신하는지에 대한 다이어그램이다. 그림을 살펴보면, SQL Server 드라이버를 사용하는 애플리케이션은 Babelfish를 통하여 Aurora에 접근하게 되고, PostgreSQL 드라이버를 사용하는 애플리케이션은 PostgreSQL 커넥션을 사용하여 Aurora에 접근되는 것을 알 수 있다.
Babelfish는 Aurora PostgreSQL에 대한 SQL Server 데이터 형식, 구문 및 함수를 지원하여 T-SQL 및 Microsoft SQL Server 동작을 지원한다. 이 방법을 사용하면 Aurora는 Aurora PostgreSQL 및 SQL Server SQL 언어를 모두 지원할 수 있다. 또한 Babelfish는 SQL Server 와이어 레벨 프로토콜(TDS)을 지원하므로 SQL Server 애플리케이션이 Aurora PostgreSQL과 기본적으로 통신할 수 있다. 이렇게 하면 데이터베이스 객체, 저장 프로시저 및 애플리케이션 코드를 거의 변경하지 않고 마이그레이션할 수 있다.
Babelfish는 T-SQL을 완벽하게 지원하지는 않지만 Aurora PostgreSQL SQL 명령을 사용하여 이러한 명령에서 일반적으로 처리하는 많은 작업을 수행할 수 있다. 예를 들어 Babelfish에서 지원하지 않는 특정 T-SQL 명령을 정기적으로 사용이 필요할 경우 Aurora PostgreSQL 포트에 연결하고 PostgreSQL SQL 명령을 사용할 수 있다. Aurora PostgreSQL은 일반적으로 사용되는 많은 SQL Server 기능을 대체하는 기능을 제공한다.
아래 표는 Aurora PostgreSQL에서 사용 가능한 PostgreSQL 기능으로 대체할 수 있는 SQL Server 기능의 몇 가지 예시이다.
SQL Server 기능 | 비교 가능한 PostgreSQL 기능 |
SQL Server 대량 복사 | PostgreSQL COPY 기능 |
SQL Server Group By (Babelfish에서는 지원되지 않음) | PostgreSQL Group By |
SQL Server JSON 지원 | PostgreSQL JSON 함수 및 연산 |
SQL Server XML 지원 | PostgreSQL XML 함수 |
SQL Server 전체 텍스트 검색 | PostgreSQL 전체 텍스트 검색 |
SQL Server 지역 데이터 형식 | PostGIS 확장 (지역 데이터 작업용) |
Babelfish가 아직은 완벽히 T-SQL을 지원하는 것은 아니므로 일부 시스템 함수나 일부 SQL Server의 고유 함수는 지원되지 않는다. T-SQL 제한 사항 및 지원되지 않는 기능에 대해서는 Babelfish 버전에 따라 변경될 수 있으므로 아래 공식 문서를 참고한다. (현재 이 글을 쓰는 시점에서는 Babelfish 1.0.0과 1.1.0 두 버전이 있다.)
l T-SQL 제한 사항 및 지원되지 않는 기능 : https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/babelfish-compatibility.html
l Babelfish 버전 및 버전에 따른 명령어 지원 여부 : https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/babelfish-releases-updates.html
아래 링크는 Babelfish를 사용한 Aurora PostgreSQL 클러스터를 생성하는 방법과, MS SQL 서버 기반 앱을 Babelfish로 연결하여 MS SQL 쿼리를 실행하는 방법을 설명한다.
l Babelfish for Aurora PostgreSQL 정식 출시 – 레거시 MS SQL 서버 기반 앱 호환 기능 제공 : https://aws.amazon.com/ko/blogs/korea/goodbye-microsoft-sql-server-hello-babelfish/
아래 그림은 실제로 필자가 실습한 내용으로 MS SQL Server의 AdventureWorks2016 데이터베이스를 AWS DMS를 사용하여 Babelfish for Aurora PostgreSQL로 마이그레이션 후 SSRS(SQL Server Reporting Service)에서 SQL Native Client 드라이버를 사용하여 MS SQL 쿼리를 사용하여 리포트를 생성하여 실행한 화면이다. 정상적으로 쿼리가 동작하고 리포트가 생성되는 것을 확인할 수 있다.
이처럼 Babelfish를 활용하면 기존의 SQL Server사용시 발생할 수 있는 라이선스 비용을 저렴한 Aurora PostgreSQL로 전환하며, 기존 애플리케이션에 대한 코드 변경을 최소화하고, 빠르고 경제적으로 플랫폼 환경을 전환할 수 있다.
[참고자료]
l [AWS SCT] AWS SCT를 활용하여 이기종 데이터베이스 스키마 전환하기 : https://sungwookkang.com/1497
l [AWS DMS] AWS DMS를 활용하여 데이터 마이그레이션 과정에서 데이터 마스킹 하기 : https://sungwookkang.com/1496
l T-SQL 제한 사항 및 지원되지 않는 기능 : https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/babelfish-compatibility.html
l Babelfish 버전 및 버전에 따른 명령어 지원 여부 : https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/babelfish-releases-updates.html
l Babelfish for Aurora PostgreSQL 정식 출시 – 레거시 MS SQL 서버 기반 앱 호환 기능 제공 : https://aws.amazon.com/ko/blogs/korea/goodbye-microsoft-sql-server-hello-babelfish/
l https://aws.amazon.com/rds/aurora/babelfish/?nc1=h_ls
2022-04-08 / Sungwook Kang / http://sungwookkang.com
AWS Babelfish, AWS SCT, Schema Migration, 스키마 변경, 스키마 마이그레이션, 스키마 추출, 스키마 변환, 이기종 쿼리 실행
'AWS' 카테고리의 다른 글
[AWS RDS] AWS RDS for Oracle 교차 리전 자동 백업 – Part 1/2 (0) | 2022.04.13 |
---|---|
[AWS CloudWatch] CloudWatch를 활용한 SQL Server RDS 데드락 모니터링 (0) | 2022.04.12 |
[AWS SCT] AWS SCT를 활용하여 이기종 데이터베이스 스키마 전환하기 (0) | 2022.04.07 |
[AWS DMS] AWS DMS를 활용하여 데이터 마이그레이션 과정에서 데이터 마스킹 하기 (0) | 2022.04.03 |
[AWS S3] AWS S3 Storage Lens (0) | 2022.03.28 |