본문 바로가기

SQL Server/SQL Server 형상 관리

[Sequel Safe] 개요

데이터베이스에서 버전 관리의 대상이 되는 것은 무엇일까요?

1. Stored Procedure
2. User Defined Function
3. Trigger
4. DATABASE Snapshot


그러나 현업에서 상기의 요소들에 대해 버전 관리가 체계적으로 이뤄지는 경우는 많지 않습니다.

SQL Server 개체에 대한 버전 관리의 필요성을 인식하지 못하거나, 필요성을 느끼더라도 마땅한 방법을 찾지 못했기 때문이겠죠.

개발자로부터 DB에 대한 이런 불만을 들으면서, 필요성에 대해서는 확실히 인지할 수 있었습니다.

"내가 작성한 소스 코드는 빌드 과정을 통해 버전 관리를 하고 있는데, DB는 빌드라는 개념이 없다보니 배포할 때 항상 불안하다. 심지어 DB가 누군가에 의해 수정되더라도 그 사실을 알아챌 수 없더라."


" 작년에 일본에 게임 서버와 DB를 배포했다. 한국은 그 이후로 여러차례 버전이 업데이트됐고 당연히 DB도 바뀌었는데, 이번에 일본에서도 버전 업데이트를 요청해왔다. DB를 어떻게 마이그레이션하지?"


이런 문제는 단순히 Visual Source Safe나 SVN과 같은 전통적인 도구를 사용해서 해결할 수 없습니다.


개발 데이터베이스 (Dev DB)는 모델링한 테이블 및 뷰가 최초로 생성되는 곳이자, 프로젝트를 진행하면서 새로 작성 및 수정되는 각종 DB Programmabilities가 위치하는 곳입니다.

이 곳에서 데이터베이스 객체에 대한 생성, 수정, 삭제가 이뤄지고, 이런 작업들에 DDL문이 사용됩니다.

Seqlue Safe는 Dev DB에 DDL 트리거를 만들어 DDL문을 SQLSafe라는 데이터베이스에 수집하는 방식을 기초로합니다.

수집한 DDL문은 소스 컨트롤과 버저닝이 가능하도록, 아래와 같은이 모델에 파싱하여 저장합니다.


Sequel Safe는 SSMS상에서 다음과 같은 기능을 지원합니다.

- Programmabilities 목록 / 체크아웃, 체크인



- 특정 Programmability의 변경 이력



- 특정 버전의 Programmability 소스 조회



- 데이터베이스 빌드 및 빌드 이력 조회



- 하위 버전에서 상위 버전으로의 마이그레이션 스크립트 출력



- 특정 버전의 데이터베이스를 생성하는 스크립트 출력


- 그 밖의 주요 기능
테이블 명세서 출력 (HTML, Wiki Tag 포맷)
Stored Procedure 명세서 출력 (HTML, Wiki Tag 포맷)
테이블 - Stored Procedure 참조 관계 출력 (HTML, Wiki Tag 포맷)
CRUD 프로시저 소스 코드 자동 생성
코딩 컨벤션 검사
데이터베이스 일일 빌드