스키마 마이그레이션 : SQL Server 데이터 도구 및 Liquibase 및 Flyway


11

이것은 어리석은 질문처럼 보일 수 있지만 Liquibase 및 Flyway와 같은 스키마 마이그레이션을위한 오픈 소스 솔루션을 살펴 보았습니다.

그러나 상사는 SQL Server Data Tools (SSDT)가 동일한 작업을 수행한다고 말했습니다. 동의하는지 확실하지 않지만 인터넷에서 Liquibase 및 / 또는 Flyway와 직접 비교하는 정보는 거의 없습니다.

SSDT는 SQL Server를위한 개발, 데이터 모델링 및 디자인 도구이며 스키마 비교 (및 스크립트 생성)와 소스 제어도 지원합니다. 스키마 마이그레이션의 일부 측면에서 Liquibase / Flyway와 일부 겹칠 수 있지만 다른 문제를 해결합니다. 그러나 전체 스키마 마이그레이션 도구 인 Liquibase 및 Flyway는 완전 전용 도구 인 반면 SSDT는 데이터베이스 설계 및 개발에 더 적합합니다.

SSDT가 스키마 마이그레이션 도구 자체가 아니라는 말만으로도 의견을 보내 주시면 감사하겠습니다.

답변:


17

SSDT는 다른 방식으로 접근하지만 Liquibase / Flyway와 비교할 수 있습니다. SSDT를 사용하면 개발 환경을 구축 할 수 있으므로 프로젝트를 dacpac로 컴파일 한 다음 dacpac을 데이터베이스에 배포 할 수있을뿐만 아니라 정의로 이동하여 참조 및 인텔리전트를 찾을 수 있습니다.

deloyment를 수행하는 SSDT 방식 (및 redgate sql compare 방식)은 다음과 같은 테이블을 변경하려는 경우 원하는 것을 선언하는 것입니다.

create table a(id int)

다음과 같은 테이블에

create table a(id int, another_column varchar(12))

SSDT를 사용하면 테이블 정의를 두 번째로 변경하고 SSDT가 업그레이드 방법에 대해 걱정하게하십시오 (테이블을 변경하거나 열을 추가하거나 열 순서를 변경하여 테이블을 다시 작성해야 함).

Liquibase (DbUp, ReadyRoll, 수동 방법 등)를 사용하면이 경우 alter table을 직접 작성하고 스크립트를 올바른 순서로 실행해야합니다. 다음 시나리오를 고려하십시오.

  1. 릴리스 1-테이블에 hello 열 작성
  2. 릴리스 2-열 hello의 이름을 joe_blogs로 바꿉니다.
  3. 릴리스 3-joe_blogs 열 이름을 hello로 변경
  4. 릴리스 4-joe_blogs 열 작성

릴리스 중 하나라도 빠지면 다음 릴리스 중 어느 것도 계속할 수 없습니다.

업그레이드 스크립트의 장점 (Liquibase, DbUp 등) :

  • 스크립트를 완전히 제어 할 수 있습니다
  • DBA / 개발자는 이것에 익숙합니다.

비교 / 병합의 장점 (SSDT, Redgate SQL 비교) :

  • 업그레이드 스크립트를 작성할 필요가 없습니다
  • 특정 버전으로 쉽게 이동하여 해당 버전을 비교하고 병합하기 만하면됩니다

업그레이드 스크립트의 단점 :

  • 순서대로 실행해야합니다
  • 실수하지 않고 인간에게 의지하십시오
  • 변경 사항이 많은 경우 특히 느려질 수 있습니다
  • 팀이 다른 환경 (개발, 테스트, 스테이징, 자극 등)에서 고도로 훈련 된 데이터베이스가 아닌 한 테스트가 유효하지 않게되는 경우가 종종 있습니다
  • 릴리스를 다운 그레이드한다는 것은 이미 작성한 모든 스크립트의 역순을 쓰는 것을 의미합니다

비교 / 병합 사용의 단점 :

  • 도구는 100 % 신뢰할 수 없으며 불공평 할 수 있습니다
  • SSDT에는 작업중 인 프로젝트가 필요합니다. 많은 많은 데이터베이스에 실제로 컴파일하거나 실행하지 않는 코드가 있습니다 (삭제 된 테이블을 생각하지만 절차는 아닙니다). 나는 상속받은 약 8/10 데이터베이스에서 이것을 보았습니다 :)
  • 많은 DBA / 개발자는 SSMS / 메모장 개발을 포기하는 것을 주저합니다

개인적으로 저는 SSDT가 전문 개발 환경이라고 생각합니다. 이는 결국 그 자체로 목적을 달성 할 수있는 업그레이드 스크립트를 작성하는 대신 유용한 코드 및 테스트 작성에 집중할 수 있음을 의미합니다.

당신은 의견을 요구했습니다.

에드


1
SSDT가 SQL Server 이외의 다른 장치와 작동합니까? 예를 들어 Postgres?
a_horse_with_no_name

3
"SQL 서버 데이터 도구"없음 :)
Ed Elliott

1
왜 안돼? SSIS 패키지는 대부분 모든 ODBC 소스를 전송할 수 있습니다
a_vlad

내가 잘못 이해하지 않으면 ssis 패키지를 만드는 대신 데이터베이스 스키마 관리에 대해 이야기하고 있다고 생각합니까? 기쁜
Ed Elliott

1
SSIS는 데이터를 이동시키기 위해 다양한 시스템에 대한 연결 을 지원 합니다. SSDT는 SQL Server 데이터베이스 프로젝트의 개발 및 유지 관리를위한 것입니다. 대상 SQL Server 버전에서 스크립트의 호환성을 확인하고 T-SQL 구문에 대한 모든 참조, 프로세스 등을 확인하는 빌드 프로세스가 있습니다.
Dave

2

나는 단지 사전 준비 답변입니다.

Flyway 웹 사이트에 설명 된 가장 큰 차이점은 다음과 같습니다.

하나의 문제 만 해결하고 잘 해결합니다. Flyway는 데이터베이스를 마이그레이션하므로 더 이상 걱정할 필요가 없습니다.

Visual Studio + SSDT + SSIS = 하나의 실제 단점 만있는 최대 전력 ETL 도구 – Windows에서만 작동 패키지를 실행하려면 Windows + SQL Server가 필요하지만 대부분의 모든 소스에서 작동합니다.

데이터 전송 / 마이그레이션-시장에 나와있는 많은 제품. 상업, 오픈 소스, 커뮤니티 / 익스프레스 등

마이그레이션 코드의 경우 모두 좋지 않습니다. 소프트웨어가 "문제없이 트리거, 프로 시저 및 기능 변환"을 약속하더라도 실제로는 가장 간단하고 코드 마이그레이션 만 가능합니다.


2

나는 SQL 서버 데이터 도구와 플라이 웨이를 모두 사용했다. SSDT를 사용하면 다음과 같은 이점이 있습니다.

  1. 데이터베이스 프로젝트를 컴파일 할 수 있습니다. 의미, 뷰, 함수 또는 저장된 procs에 의해 참조되는 열을 삭제할 염려가 없습니다. 과거에는 출시 이후에만 그러한 누락에 대해 발견했기 때문에 이것은 훌륭한 기능입니다.
  2. 성공적인 빌드 후 SSDT는 "DACPAC"를 생성합니다. 버전이있는 msi를 생각해보십시오.

  3. 버전 5와 같은 특정 dacpac은 Dacpac 버전 1,2,3,4 또는 6,7,8 등의 데이터베이스에 적용될 수 있습니다. 1-4에 적용되면 데이터베이스가 업그레이드됩니다. 6,7 등에 적용하면 DB가 다운 그레이드 / 롤백됩니다. 데이터 손실이 발생하면 억제 할 수있는 경고가 표시됩니다. 따라서 플라이 웨이 등과 같은 다른 도구로는 사용할 수없는 훌륭한 롤백 기능이 제공됩니다. 플라이 웨이에서는 롤백을위한 새로운 스크립트 세트를 제공해야합니다.

  4. DACPAC는 하나의 트랜잭션에서 모든 변경 사항을 적용합니다. 업그레이드에서 5 개의 테이블 변경이 있고 그 중 하나가 실패하면 전체 트랜잭션이 롤백됩니다. Flyway는이를 지원하지만 모든 파일을 지원합니다.

그러나 SSDT 및 DACPAC는 Microsoft SQL Server에 따라 다릅니다. flyway는 다양한 데이터베이스에 사용될 수 있습니다.

결론적으로 SQL Server 만 사용하는 경우 SSDT 및 DACPAC를 사용하는 것이 매우 쉬운 결정입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.