데이터베이스 스키마를 어떻게 버전화합니까?
SQL Delta를 어떻게 준비합니까?스키마를 변경하는 각 SQL을 수동으로 델타 폴더에 저장합니까? 아니면 자동화된 분산 프로세스가 있습니까?
소스 코드와 함께 데이터베이스 스키마를 버전화하는 규칙에 관심이 있습니다.스키마를 구분하는 프리 커밋 후크?
또한 DbDeploy 이외에 어떤 델타 분산 옵션이 있습니까?
편집: 델타를 사용한 데이터베이스 이행을 실행하기 위한 표준 스킴을 숙지하고 있음을 명확히 하고 싶습니다.제 질문은 델타 자체를 만드는 것입니다. 가급적 자동으로 만드는 것입니다.
또한 버전 관리는 PHP와 MySQL을 위한 것입니다.(루비 솔루션은 사용하지 마십시오).
봐
데이터베이스 구조 변경에 대한 버전 관리 시스템이 있습니까?
SVN에서 MS SQL 데이터베이스를 버전하려면 어떻게 해야 하나요?
Jeff의 기사
당신의 고통을 느끼고 더 나은 답이 있었으면 좋겠어요.이것은 당신이 찾고 있던 것에 가까울지도 모릅니다.
일반적으로, 나는 이것에 대해 적절하고 받아들여지는 해결책이 없다고 느끼고, 나는 이 분야에서 내 자신의 해결책을 제시한다.
유사한 다른 스레드를 볼 수 있습니다.SVN에서 MS SQL 데이터베이스를 버전하려면 어떻게 해야 합니까?
아직 옵션을 찾고 있다면: neXtep designer를 참조하십시오.버전 관리 개념을 기반으로 한 무료 GPL 데이터베이스 개발 환경입니다.환경에서는 항상 버전화된 엔티티와 함께 작업하며 데이터 모델 개발에 집중할 수 있습니다.릴리스가 완료되면 버전 관리 시스템에 연결된 SQL 생성 엔진은 두 버전 사이에서 필요한 모든 델타를 생성할 수 있으며 필요한 경우 전달 메커니즘을 제공합니다.
특히 개발 중에 데이터베이스 동기화 및 역동기화, 데이터 모델 다이어그램 작성, 통합 SQL 클라이언트 사용 데이터베이스 쿼리 등이 가능합니다.
자세한 것은, Wiki 를 참조해 주세요.http://www.nextep-softwares.com/wiki
현재 Oracle, MySql 및 PostgreSql을 지원하며 Java 버전이기 때문에 Windows, Linux 및 Mac에서 제품을 실행할 수 있습니다.
난 삼각주를 관리하지 않아.마스터 데이터베이스를 변경하고 마스터 데이터베이스를 기반으로 XML 기반 빌드 스크립트를 작성하는 도구를 사용합니다.
기존 데이터베이스를 업그레이드할 때 XML 기반 빌드 스크립트를 사용하여 새 데이터베이스와 베어 테이블을 만드는 프로그램이 있습니다.그런 다음 INSERT INTO x SELECT FROM y를 사용하여 이전 데이터베이스에서 데이터를 복사한 다음 모든 인덱스, 제약 조건 및 트리거를 적용합니다.
새 테이블, 새 열, 삭제된 열 모두 자동으로 처리되며 복사 루틴을 조정하기 위한 몇 가지 트릭으로 열 이름 변경, 열 유형 변경 및 기타 기본 리팩터링을 처리할 수 있습니다.
대량의 데이터를 가진 데이터베이스에서는 이 솔루션을 권장하지 않지만 400개의 테이블로 1GB가 넘는 데이터베이스를 정기적으로 업데이트하고 있습니다.
스키마 변경은 항상 부가적입니다.그래서 저는 열과 표를 떨어뜨리지 않습니다. 그러면 데이터가 동기화되어 나중에 롤백할 수 없기 때문입니다.이렇게 하면 데이터나 기능을 잃지 않고 데이터베이스를 사용하는 코드를 롤백할 수 있습니다.
테이블과 열이 아직 존재하지 않는 경우 이를 데이터로 채우는 문이 포함된 마이그레이션 스크립트가 있습니다.
마이그레이션 스크립트는 프로덕션 코드가 업데이트될 때마다 그리고 새로 설치한 후에 실행됩니다.
폐기하고 싶은 경우 데이터베이스 설치스크립트와 이행스크립트에서 삭제함으로써 오래된 스키마 요소가 새로운 설치에서 단계적으로 폐지됩니다.단, 신규 설치는 설치 전에 이전 버전으로 다운그레이드할 수 없습니다.
물론 이러한 스크립트를 사용하여 DDL을 실행하고 동기화를 위해 데이터베이스에서 직접 실행하지는 않습니다.
어떤 RDBMS를 사용하고 있는지에 대해서는 언급하지 않았습니다만, MS SQL Server라면 Red-Gate의 SQL Compare는 오브젝트 작성 스크립트 간의 델타 작성에 불가결합니다.
I'm not one to toot my own horn, but I've developed an internal web app to track changes to database schemas and create versioned update scripts.
This tool is called Brazil and is now open source under a MIT license. Brazil is ruby / ruby on rails based and supports change deployment to any database that Ruby DBI supports (MySQL, ODBC, Oracle, Postgres, SQLite).
Support for putting the update scripts in version control is planned.
http://bitbucket.org/idler/mmp - schema versioning tool for mysql, writed in PHP
We're exporting the data to a portable format (using our toolchain), then importing it to a new schema. no need for delta SQL. Highly recommended.
I use Firebird database for most development and I use FlameRobin administration tool for it. It has a nice option to log all changes. It can log everything to a one big file, or one file per database change. I use this second option, and then I store each script in version control software - earlier I used Subversion, now I use Git.
I assume you can find some MySQL tool that has the same logging feature like FlameRobin does for Firebird.
In one of database tables, I store the version number of the database structure, so I can upgrade any database easily. I also wrote a simple PHP script that executes those SQL scripts one by one on any target database (database path and username/password are supplied on the command line).
There's also an option to log all DML (insert, update delete) statements, and I activate this while modifying some 'default' data that each database contains.
I wrote a nice white paper on how I do all this in detail. You can download the paper in .pdf format along with demo PHP scripts from here.
I also developed a set of PHP scripts where developers can submit their deltasql scripts to a central repository.
In one of the database tables (called TBSYNCHRONIZE), I store the version number of the latest executed script, so I can upgrade any database easily by using the web interface or a client developed on purpose for Eclipse.
웹 인터페이스를 통해 여러 프로젝트를 관리할 수 있습니다.또한 데이터베이스 "브런치"도 지원합니다.
응용 프로그램은 http://www.gpu-grid.net/deltasql 에서 테스트할 수 있습니다(패스워드 testdbsync 를 사용하여 admin 으로 로그인한 경우).이 애플리케이션은 오픈 소스이며, http://sourceforge.net/projects/deltasql 에서 다운로드할 수 있습니다.
deltasql은 스위스와 인도에서 생산적으로 사용되며 일본에서는 인기가 있습니다.
몇 달 전에 MySQL 스키마 버전을 위한 툴을 검색했습니다.저는 많은 유용한 도구들을 찾았습니다. 예를 들어, 독트린 마이그레이션, RoR 마이그레이션, Java와 Python에서 작성된 도구들이 있습니다.
하지만 그들 중 누구도 내 요구를 만족시키지 못했다.
요건:
- 요구사항 없음, PHP 및 MySQL 제외
- Schema.yml과 같은 스키마 구성 파일이 없습니다.
- 다른 애플리케이션 설치에서 동일한 스키마를 나타내는 것보다 연결에서 현재 스키마를 읽고 새 마이그레이션 스크립트를 생성할 수 있습니다.
이행 툴을 작성하기 시작했는데, 오늘은 베타 버전이 나왔습니다.
이 주제에 관심이 있으시다면 한번 시도해 보세요.향후 요청과 버그리포트를 보내주세요.
소스 코드: bitbucket.org/idler/mmp/src 개요(영어: bitbucket.org/idler/mmp/wiki/Home 개요(러시아어: antonoff.info/development/mysql-migration-with-php-project)
http://code.google.com/p/oracle-ddl2svn/ 를 사용하고 있습니다.
저도 이 주제에 관심이 있어요.
장고 위키에는 이 주제에 대한 몇 가지 논의가 있습니다.
흥미롭게도, 그것은 케이크처럼 생겼다.PHP에는 스키마 버전 관리 기능이 내장되어 있습니다.cake schema generate명령어를 입력합니다.
데이터베이스 스키마의 엄격한 버전 관리(별도의 테이블로 추적)를 사용하고 있습니다.스크립트는 버전 제어에 저장되지만 변경하기 전에 모두 현재 스키마 버전을 확인합니다.
SQL Server에 대한 완전한 구현은 다음과 같습니다(필요에 따라 MySQL에도 동일한 솔루션을 개발할 수 있습니다).SQL Server 데이터베이스 스키마 버전 유지 보수 방법
MySQL의 경우
새 DB에 도착하면:
먼저 구조를 확인합니다.
mysqldump --no-data --skip-comments --skip-extended-insert -h __DB_HOSTNAME__ -u __DB_USERNAME__ -p __DB1_NAME__ | sed 's/ AUTO_INCREMENT=[0-9]*//g' > FILENAME_1.sql mysqldump --no-data --skip-comments --skip-extended-insert -h __DB_HOSTNAME__ -u __DB_USERNAME__ -p __DB2_NAME__ | sed 's/ AUTO_INCREMENT=[0-9]*//g' > FILENAME_2.sql diff FILENAME_1.sql FILENAME_2.sql > DIFF_FILENAME.txt cat DIFF_FILENAME.txt | lessstackoverflow 사용자 덕분에 이 빠른 스크립트를 작성하여 구조 차이를 찾을 수 있었습니다.
src : https://stackoverflow.com/a/8718572/4457531 및 https://stackoverflow.com/a/26328331/4457531
에서는 데이터를 한 합니다.mysqldiff이지만, 금금 php php php php php php php php php php on on on on on on on on on on on on on on 에 기반한 information_schema는 반드시 .
버전 관리에서는 동일한 방법을 사용하지만 결과가 다른 SQL 업데이트스크립트(업그레이드 또는 롤백)를 포맷하고 버전 번호 표기법(몇 가지 변경으로 버전 번호는 IP 주소처럼 보입니다)을 사용합니다.
initial version : 1.0.0
^ ^ ^
| | |
structure change: - | |
datas added: -------- |
datas updated: --------
언급URL : https://stackoverflow.com/questions/175451/how-do-you-version-your-database-schema
'programing' 카테고리의 다른 글
| JavaScript 어레이를 쉼표로 구분된 목록으로 쉽게 변환할 수 있습니까? (0) | 2022.11.04 |
|---|---|
| 도커 컨테이너 실행 후 mysql 데이터 소유권이 systemd-journal-remote로 변경된 이유 (0) | 2022.11.04 |
| 스트링 내추럴 소트 기능이 내장되어 있나요? (0) | 2022.11.04 |
| 함수를 호출할 때 "throws Exception"이 필요한 이유는 무엇입니까? (0) | 2022.11.04 |
| Larabel 알 수 없는 열 'updated_at' (0) | 2022.11.04 |