클라우드 기반 SQL Azure 데이터베이스에 DatabaseSpy를 연결하는 방법

뉴올리언스에서 열린 Tech-Ed 컨퍼런스에서 6월에는 마이크로소프트의 클라우드 기반 SQL Azure 데이터베이스를 실제 운영 환경에 도입하는 데 도움이 되는 팁과 기술들이 주요 주제로 다루어졌습니다. SQL Azure는 마이크로소프트 SQL Server 기술을 기반으로 구축되었으며, 마이크로소프트 클라우드에서 제공하는 고가용성 및 확장성을 갖춘 데이터베이스 서비스를 제공하도록 설계되었습니다. SQL Azure에 데이터베이스를 배포하는 개발자는 관계형 데이터베이스 소프트웨어를 설치, 설정, 패치 또는 관리할 필요 없이, 자신의 데이터베이스 구조와 내용만 관리하면 됩니다. 자동적인 중복 처리 및 오류 복구 기능이 내장되어 있으며, 별도의 물리적인 관리 작업은 필요하지 않습니다.

DatabaseSpy다른 Altova 도구를 사용하여 수동으로 연결 문자열을 구성하고, SQL Server 구문 및 데이터 유형을 활용하여 SQL Azure 데이터베이스에 연결함으로써 일반적인 데이터베이스 개발 및 유지 관리 작업을 수행할 수 있습니다. 이 블로그 게시물에서는 DatabaseSpy를 사용하여 SQL Azure 데이터베이스에 연결하는 방법을 설명하고, 기존 데이터베이스를 클라우드로 이전하는 과정에서 수행할 수 있는 몇 가지 일반적인 작업을 예시로 보여줍니다. 이러한 단계를 직접 따라하려면 SQL Azure 계정이 필요하거나, SQL Azure 계정 소유자가 생성한 로그인 정보(아이디 및 비밀번호)가 필요합니다. SQL Azure 계정을 설정하는 방법에 대한 자세한 내용은 Microsoft 웹사이트를 방문하십시오 SQL Azure 홈페이지. 또한, "SQL Server Native Client 10.0 (또는 그 이후 버전)"을 설치해야 합니다. SQL Azure는 로컬 SQL Server 데이터베이스와 완전히 동일하게 작동하지 않으므로, Altova SQL Server 연결 마법사를 사용할 수 없습니다. 대신 ODBC 연결을 사용하겠습니다.

새로운 연결 문자열을 만드는 과정의 모든 세부 사항을 여기서는 설명하지 않겠습니다. 위에 표시된 대화 상자에 기존 연결 문자열을 복사하여 붙여넣을 수 있습니다.

SQL Azure에 처음 연결하면, DatabaseSpy 프로젝트 파일이 연결 설정, 자주 사용하는 SQL 스크립트, 데이터베이스 디자인 파일, 그리고 데이터베이스 비교 결과를 하나의 편리한 묶음으로 저장할 수 있습니다. 이렇게 저장된 프로젝트는 나중에 쉽게 다시 불러와 사용할 수 있습니다. 아래 스크린샷은 MySQL 환경의 Sakila 데이터베이스와 SQL Azure 클라우드 환경의 Sakila 데이터베이스를 동시에 연결한 새로운 DatabaseSpy 프로젝트를 보여줍니다.

Microsoft는 사용자들이 기존 데이터베이스를 SQL Azure 플랫폼으로 이전하는 데 도움이 되는 다양한 변환 도구를 제공합니다. 저희는 Microsoft의 SQL Server 마이그레이션 어시스턴트 for MySQL을 사용하여 로컬 MySQL Sakila 샘플 데이터베이스를 SQL Azure 계정으로 변환했습니다. DatabaseSpy는 사용자가 동시에 여러 연결을 열 수 있도록 지원하며, 심지어 서로 다른 유형의 데이터베이스에도 연결할 수 있습니다. DatabaseSpy의 데이터베이스 비교 기능은 Sakila 데이터베이스 변환 결과를 확인하는 데 이상적인 도구입니다. 먼저 데이터베이스 스키마 비교 기능을 열고, 비교의 왼쪽 부분에 MySQL 데이터베이스에서 몇 개의 테이블을 선택합니다.

SQL Azure 버전에서 해당 테이블을 선택하면, 선택된 테이블들이 데이터베이스 스키마 비교 창에 표시됩니다.

화면 왼쪽 상단에 있는 녹색 "비교" 버튼을 클릭하면, DatabaseSpy는 데이터베이스 구조를 비교하고, 차이점을 강조 표시하며, 메시지 창에 요약 정보를 생성합니다.

일부 차이점은 데이터베이스마다 다른 데이터 유형 정의를 나타냅니다. 예를 들어, MySQL의 "unsigned small int" 데이터 유형은 SQL Server에서 정확히 동일한 유형이 없기 때문에, 변환 도구는 "film" 테이블의 "film_id" 열에 "int" 데이터 유형을 사용했습니다. 또한, MySQL에서 "release_year" 열에 할당된 "year" 데이터 유형은 SQL Azure에서 "smallint"로 변환되었습니다. 이렇게 하면 SQL Azure 버전의 데이터베이스가 더 미래 지향적으로 만들어질 것으로 예상됩니다. 왜냐하면 MySQL에서 "year" 데이터 유형의 최대값이 2155인 반면, SQL Azure에서는 32,767까지의 연도를 지원할 수 있기 때문입니다. 두 데이터베이스에 포함된 데이터를 비교하려면, 오른쪽 클릭 메뉴에서 선택을 통해 선택한 테이블을 새 데이터 비교 창에서 열어 확인할 수 있습니다.

데이터 비교 결과, 테이블의 내용이 서로 동일하지 않음을 알 수 있습니다.

결과 창을 열면, 설명 항목이 제대로 이전되지 않았음을 확인할 수 있습니다.

데이터베이스 스키마 비교 창을 살펴보면, 설명(description) 열의 길이가 0으로 설정되어 있음을 알 수 있습니다. 이는 결과 창에서 MySQL의 설명 열에서 SQL Azure의 설명 열로 향하는 빨간색 화살표를 설명하는 부분입니다. 정의된 길이가 0인 열에는 어떤 텍스트도 입력할 수 없습니다. 대신, 새로운 디자인 창에서 SQL Azure 버전의 영화 테이블을 열어보겠습니다.

설정 창의 설명 필드 크기를 늘리고, 그 결과로 생성된 변경 스크립트를 실행할 수 있습니다.

다음으로, 데이터를 다시 비교했을 때, 데이터가 변환된 것을 확인했지만, 이전에 정의된 필드 길이를 0으로 설정했기 때문에 데이터가 보이지 않았습니다.

지연 문제 DatabaseSpy를 사용하여 클라우드 데이터베이스와 로컬 복사본 간의 지연 문제를 분석할 수 있습니다. 위에서 제시된 데이터 비교 결과를 통해 두 데이터베이스의 테이블에 1,000개의 동일한 데이터 행이 포함되어 있음을 확인할 수 있습니다. SQL Azure와 로컬 MySQL 데이터베이스에서 데이터를 가져오는 SELECT 문을 반복적으로 실행하여 실행 시간을 측정할 수 있습니다. DatabaseSpy의 SQL 편집기 메시지 창에 실행 시간이 표시됩니다.

위의 SELECT 문을 SQL Azure 버전의 sakila 데이터베이스에서 연속으로 다섯 번 실행했을 때, 결과는 60.632초에서 63.851초 사이로 나타났습니다. 동일한 영화 테이블에 대한 SELECT 문을 로컬 MySQL 데이터베이스에서 실행했을 때, 다음과 같은 결과가 나왔습니다

로컬 환경에서 테스트를 반복한 결과, 유사한 응답 시간이 나타났습니다. 개발자들에게 중요한 점은 데이터베이스 기반 애플리케이션을 클라우드로 이전할 때, 네트워크 지연 시간을 고려해야 한다는 것입니다. Altova DatabaseSpy의 무료 체험판을 통해 SQL Azure와의 연결을 직접 테스트해 보세요.