Babelfish 아키텍처
Babelfish가 켜진 상태에서 Aurora PostgreSQL 클러스터를 생성하면 Aurora는 babelfish_db
라는 PostgreSQL 데이터베이스로 클러스터를 프로비저닝합니다. 이 데이터베이스에는 마이그레이션된 모든 SQL Server 객체 및 구조가 상주합니다.
참고
Aurora PostgreSQL 클러스터에서 babelfish_db
데이터베이스 이름은 Babelfish용으로 예약되어 있습니다. Babelfish DB 클러스터에 자체 'babelfish_db' 데이터베이스를 생성하면 Aurora가 Babelfish를 성공적으로 프로비저닝하지 못합니다.
TDS 포트에 연결하면 세션이 babelfish_db
데이터베이스에 배치됩니다. T-SQL에서 구조는 SQL Server 인스턴스에 연결되는 것과 비슷합니다. master
, msdb
, tempdb
데이터베이스와 sys.databases
카탈로그가 표시됩니다. USE 문을 사용하여 추가 사용자 데이터베이스를 생성하고 데이터베이스 간에 전환할 수 있습니다. SQL Server 사용자 데이터베이스를 생성하면 babelfish_db
PostgreSQL 데이터베이스에 병합됩니다. 데이터베이스는 SQL Server에서 제공하는 것과 같거나 유사한 교차 데이터베이스 구문 및 의미 체계를 유지합니다.
단일 데이터베이스 또는 여러 데이터베이스에서 Babelfish 사용
Babelfish와 함께 사용할 Aurora PostgreSQL 클러스터를 생성하면 자체적으로 단일 SQL Server 데이터베이스를 사용하거나 여러 SQL Server 데이터베이스를 함께 사용할 것인지 선택할 수 있습니다. 선택 사항은 babelfish_db
데이터베이스 내부의 SQL Server 스키마의 이름이 Aurora PostgreSQL에서 나타나는 방식에 영향을 미칩니다. 마이그레이션 모드는 migration_mode
파라미터에 저장됩니다. 이전에 생성한 모든 SQL 객체에 대한 액세스 권한이 손실될 수 있으므로, 클러스터를 생성한 후에는 이 파라미터를 변경하지 않아야 합니다.
단일 데이터베이스 모드에서는 SQL Server 데이터베이스의 스키마 이름이 PostgreSQL의 babelfish_db
데이터베이스에서도 그대로 유지됩니다. 단일 데이터베이스만 마이그레이션하도록 선택하면, 마이그레이션된 사용자 데이터베이스의 스키마 이름을 SQL Server에서 사용한 것과 동일한 이름으로 PostgreSQL에서 참조할 수 있습니다. 예를 들어 dbo
및 smith
스키마는 dbA
데이터베이스 내부에 상주합니다.
TDS를 통해 연결할 때 SQL 서버에서와 마찬가지로 T-SQL에서 dbo
및 dev
스키마를 보려면 USE dba
를 실행할 수 있습니다. 변경되지 않은 스키마 이름은 PostgreSQL에서 볼 수 있습니다.
다중 데이터베이스 모드에서 사용자 데이터베이스의 스키마 이름은 PostgreSQL에서 액세스하는 경우 dbname_schemaname
이 됩니다. T-SQL에서 액세스하는 경우에도 스키마 이름은 동일하게 유지됩니다.
이미지에서 볼 수 있듯이 다중 데이터베이스 모드와 단일 데이터베이스 모드는 TDS 포트를 통해 연결하고 T-SQL을 사용할 때 SQL Server와 동일합니다. 예를 들어, USE dbA
은 SQL Server에서와 같이 스키마 dbo
및 dev
를 나열합니다. 매핑된 스키마 이름(예: dba_dbo
및 dba_dev
)은 PostgreSQL에서 볼 수 있습니다.
각 데이터베이스에는 여전히 스키마가 포함되어 있습니다. 각 데이터베이스의 이름이 SQL Server 스키마 이름 앞에 추가되며 밑줄을 구분 기호로 사용합니다. 예를 들면 다음과 같습니다.
-
dba
가dba_dbo
및dba_dev
를 포함합니다. -
dbb
가dbb_dbo
및dbb_test
를 포함합니다. -
dbc
가dbc_dbo
및dbc_prod
를 포함합니다.
babelfish_db
데이터베이스 내부에서 T-SQL 사용자는 계속 USE
dbname
을 실행하여 데이터베이스 컨텍스트를 변경하므로 모양과 느낌이 SQL Server와 비슷하게 유지됩니다.
마이그레이션 모드 선택
각 마이그레이션 모드에는 장점과 단점이 있습니다. 보유한 사용자 데이터베이스 수와 마이그레이션 계획에 따라 마이그레이션 모드를 선택합니다. Babelfish와 함께 사용할 클러스터를 생성한 후에는 마이그레이션 모드를 변경하지 않아야 합니다. 이전에 생성한 모든 SQL 객체에 대한 액세스 권한을 잃을 수 있습니다. 마이그레이션 모드를 선택할 때는 사용자 데이터베이스 및 클라이언트의 요구 사항을 고려하세요.
Babelfish와 함께 사용할 클러스터를 만들면 Aurora PostgreSQL은 시스템 데이터베이스 master
및 tempdb
를 생성합니다. 시스템 데이터베이스(master
또는 tempdb
)에서 객체를 생성하거나 수정한 경우 새 클러스터에서 해당 객체를 다시 생성해야 합니다. SQL 서버와 달리 Babelfish는 클러스터 재부팅 후 tempdb
를 다시 초기화하지 않습니다.
다음과 같은 경우 단일 데이터베이스 마이그레이션 모드를 사용합니다.
-
단일 SQL Server 데이터베이스를 마이그레이션하는 경우. 단일 데이터베이스 모드의 경우 PostgreSQL에서 액세스될 때 마이그레이션된 스키마 이름은 원래 SQL Server 스키마 이름과 동일합니다. 따라서 PostgreSQL 연결에서 실행되도록 기존 SQL 쿼리를 최적화하려는 경우 기존 SQL 쿼리에 대한 코드 변경이 줄어듭니다.
-
최종 목표가 기본 Aurora PostgreSQL로 완전히 마이그레이션하는 경우. 마이그레이션하기 전에 스키마를 단일 스키마(
dbo
)로 통합한 다음, 단일 클러스터로 마이그레이션하여 필요한 변경 사항을 줄입니다.
다음과 같은 경우 여러 데이터베이스 마이그레이션 모드를 사용합니다.
-
동일한 인스턴스에서 여러 사용자 데이터베이스를 사용하는 기본 SQL Server 경험을 원하는 경우
-
여러 사용자 데이터베이스를 함께 마이그레이션해야 하는 경우