직원 팀이 데이터베이스 스키마 변경을 추적하는 데 도움이되는 버전 관리 방법은 무엇입니까?
직원 팀이 데이터베이스 스키마 변경을 추적하는 데 도움이되는 버전 관리 방법은 무엇입니까?
답변:
몇 분 전에 나는 이것을 확인했다 : 데이터베이스가있는 모든 프로젝트에 존재 해야하는 테이블 은 실제로 넣을만큼 단순 해 보인다.
이를 schema_version (또는 마이그레이션 또는 적합한 항목)이라고하며 데이터베이스의 구조적 또는 데이터 변경 사항을 추적하는 것이 목적입니다. 가능한 구조 (MySQL의 예)는 다음과 같습니다.
create table schema_version ( `when` timestamp not null default CURRENT_TIMESTAMP, `key` varchar(256) not null, `extra` varchar(256), primary key (`key`) ) ENGINE=InnoDB;
schema_version (
key
,extra
) 값에 삽입하십시오 ( '001', 'schema version');프로젝트 시작에서이 테이블을 추가하든 또는 첫 번째 버전을 스테이징 또는 프로덕션 서버에 배치 한 직후에 사용자에게 달려 있습니다.
데이터베이스 구조를 변경하거나 데이터 마이그레이션을 수행하기 위해 SQL 스크립트를 실행해야 할 때마다 해당 테이블에 행을 추가해야합니다. 그리고 해당 스크립트의 시작 또는 끝에있는 insert 문을 통해이를 수행하십시오 (프로젝트의 코드 저장소에 커밋 됨).
…
가장 좋은 방법은 데이터베이스를 빌드 프로세스의 일부로 생성하는 것 입니다. 나머지 코드를 사용하여 모든 스크립트를 소스 제어 상태로 유지하면 모든 사람이 자신의 환경을 책임집니다.
실패하면 RedGate는 소스 제어를 SSMS에 통합하는 도구를 가지고 있으며 SQL Compare 는 MS SQL Server 스키마를 비교 / 동기화하는 데 유용합니다. Visual Studio Database Edition에는 기본 제공 스키마 비교 도구도 있습니다.
또 다른 SO 질문 은 마이그레이터 도트 네트로 연결 되어 있으며, 나는 자유 시간 동안 조사를 시작할 것입니다. 그것은 좋은 방법처럼 보이지만, 당신이 기꺼이 만드는 것보다 더 많은 시간 / 오버 헤드 투자 일 수 있습니다.
eiefai은 이미 데이터베이스가있는 모든 프로젝트에 존재해야하는 테이블을 언급했습니다 . 이것은 훌륭한 블로그 게시물이지만 IMO는 데이터베이스 개정 관리를위한 효과적인 솔루션으로의 일부일뿐입니다. 실제로이 질문에 "답변"하려는 시도는 VCS 및 데이터베이스에 대한 다른 정보를 고려해야합니다.
이 질문에 접근하기 위해서는 몇 가지 다른 각도가 있다고 생각합니다. "도구 우선"각도는 플랫폼과 개인 취향에 따라 달라질 것입니다. 적절한 예 : MS Visual Studio에서 데이터베이스 프로젝트를 사용하고 있지만 이것이 MySQL에 훌륭한 솔루션인지 확실하지 않습니다. 또한 Redgate, Erwin, Embarcadero 등 자신이 좋아하는 도구로 꽤 팔리는 사람들도 알고 있습니다.
이 질문에 대한 "프로세스 우선"각도가 있으며,이 질문은 이후 질문에서이 사이트에서 다시 검토 될 것입니다. 이 프로세스의 핵심은 스키마를 소스 제어하에 가져오고 변경 사항을 관리하여 필요에 따라 버전 "x"에서 버전 "y"로 스키마 변경 사항을 적용 할 수 있습니다.
이 주제에 대한 확실한 대답은 책처럼 보이는 끝날 것입니다, 그래서 하나를 참조하여 밖으로 시작 아마 가치 : 레드 게이트는 최근 "라는 무료 전자 책 출판 SQL Server 팀 기반의 개발에 레드 게이트 가이드 가있는 동안", 및 토론 할 곳이 많기 때문에 토론을 시작하기에 좋은 곳입니다 (IMO). 이름과는 달리,이 책의 많은 자료는 모든 SQL Server뿐만 아니라 도구 세트 (Redgate뿐만 아니라)에도 적용 할 수있을 정도로 일반적입니다. 이걸 아직 보지 못했다면 적어도 탈지 가치가 있습니다.
마지막으로 stackoverflow의 "레거시 답변"에 연결하는 것이 좋습니다.
SchemaCrawler 는 모든 데이터베이스 스키마 객체로 텍스트 파일을 생성하는 도구입니다. 이 텍스트 출력은 사람이 읽을 수 있고 다른 서버의 유사한 출력과 비교할 수 없도록 설계되었습니다.
실제로, 내가 찾은 것은 데이터베이스 스키마의 텍스트 파일을 출력하는 것이 빌드의 일부로 수행 될 때 유용하다는 것입니다. 이런 방식으로 텍스트 파일을 소스 코드 제어 시스템으로 체크인하고 시간이 지남에 따라 스키마가 어떻게 발전했는지에 대한 버전 기록을 가질 수 있습니다. SchemaCrawler는 명령 줄에서이를 자동화하도록 설계되었습니다.