SVN 및 CVS에 대한 경험을 바탕으로 많은 가정을하고있는 것 같습니다.
Git과 Mercurial은 기본적으로 SVN 및 CVS와 같습니다.
git과 CVS를 비교하는 것은 iPad와 Atari를 비교하는 것과 같습니다. CVS는 공룡들이 지구를 돌아 다닐 때 만들어졌습니다 . Subversion은 기본적으로 CVS의 개선 된 버전입니다. git 및 Mercurial과 같은 최신 버전 제어 시스템이 이와 같이 작동한다고 가정하면 의미가 거의 없습니다.
관계형 데이터베이스는 단일 목적 데이터베이스보다 효율적입니다.
왜? 관계형 데이터베이스는 실제로 복잡하며 단일 목적 데이터베이스만큼 효율적이지 않을 수 있습니다. 내 머리 꼭대기와 약간의 차이가 있습니다.
- 어쨌든 동시에 여러 커밋을 수행 할 수 없으므로 버전 제어 시스템은 복잡한 잠금이 필요하지 않습니다.
- 로컬 데이터베이스는 저장소의 전체 사본이므로 분산 버전 제어 시스템은 매우 공간 효율적이어야합니다.
- 버전 관리 시스템은 몇 가지 특정 방식 (작성자, 수정본 ID, 때로는 전체 텍스트 검색)으로 만 데이터를 조회하면됩니다. 저자 / 수정 ID 검색을 처리 할 수있는 자체 데이터베이스를 만드는 것은 쉽지 않으며 전체 텍스트 검색은 내가 시도한 관계형 데이터베이스에서 그리 빠르지 않습니다.
- 버전 관리 시스템은 여러 플랫폼에서 작동해야합니다. 따라서 MySQL 또는 PostgreSQL과 같은 서비스로 설치 및 실행해야하는 데이터베이스를 사용하기가 더 어려워집니다.
- 로컬 컴퓨터의 버전 제어 시스템은 커밋과 같은 작업을 수행 할 때만 실행하면됩니다. 커밋을 수행하려는 경우를 대비 하여 MySQL과 같은 서비스를 항상 실행 하는 것은 낭비입니다.
- 대부분의 경우 버전 제어 시스템은 히스토리를 삭제하지 않고 추가하기 만하면됩니다. 이는 서로 다른 최적화 및 무결성 보호 방법으로 이어질 수 있습니다.
관계형 데이터베이스가 더 안전합니다
또 왜? 데이터가 파일에 저장되기 때문에 git 및 Mercurial과 같은 버전 제어 시스템에는 원자 커밋 이 없지만 그렇게합니다. 관계형 데이터베이스 는 데이터베이스를 파일로 저장합니다. CVS 가 원자 커밋을 수행 하지 않는다는 점에서 주목할 만하지 만 관계형 데이터베이스를 사용하지 않기 때문에 암흑기 때문일 가능성이 큽니다.
데이터베이스에 데이터가 들어 오면 손상으로부터 데이터를 보호하는 문제도 있으며, 그 대답은 같습니다. 파일 시스템이 손상된 경우 사용중인 데이터베이스는 중요하지 않습니다. 파일 시스템이 손상되지 않은 경우 데이터베이스 엔진이 손상되었을 수 있습니다. 왜 버전 제어 데이터베이스가 관계형 데이터베이스보다 더 쉬운 지 알 수 없습니다.
모든 복제본에서 전체 저장소를 복원 할 수 있기 때문에 분산 버전 제어 시스템 (git 및 Mercurial과 같은)이 중앙 집중식 버전 제어보다 데이터베이스를 보호하는 것이 좋습니다. 따라서 모든 백업과 함께 중앙 서버가 자발적으로 타는 git init
경우 새 서버에서 실행 한 다음 개발자의 머신git push
에서 복원하여 복원 할 수 있습니다 .
바퀴를 재발견하는 것은 나쁘다
당신은 그냥 있기 때문에 할 수 있는 저장 문제에 대한 관계형 데이터베이스를 사용하면 의미하지 않는다 해야한다 . 관계형 데이터베이스 대신 구성 파일을 사용하는 이유는 무엇입니까? 관계형 데이터베이스에 데이터를 저장할 수 있는데 왜 파일 시스템에 이미지를 저장합니까? 관계형 데이터베이스에 코드를 모두 저장할 수 있는데 왜 파일 시스템에 코드를 보관해야합니까?
"만약 당신이 가지고있는 망치라면 모든 것이 못처럼 보입니다."
오픈 소스 프로젝트 수 있다는 사실도 있습니다 여유 가 편리 할 때마다 상업적인 프로젝트를 수행하는 것이 당신이 자원 제약의 같은 종류를 가지고 있지 않기 때문에, 바퀴를 재발견 할 수는. 데이터베이스 작성 전문가 인 자원 봉사자가 있다면 왜 그것을 사용하지 않습니까?
개정 제어 시스템의 작성자가 자신이하는 일을 알 수있는 이유는 무엇입니까. 다른 VCS에 대해서는 말할 수 없지만 Linus Torvalds 가 파일 시스템을 이해하고 있다고 확신합니다 .
왜 일부 상용 버전 제어 시스템은 관계형 데이터베이스를 사용합니까?
아마도 다음과 같은 조합이 될 것입니다.
- 일부 개발자는 데이터베이스를 작성 하고 싶지 않습니다 .
- 상용 버전 제어 시스템 개발자는 시간과 리소스 제약이 있으므로 이미 원하는 것에 가까운 데이터베이스를 작성할 수 없습니다. 또한 개발자는 비용이 많이 들고 데이터베이스 개발자 (데이터베이스를 쓰는 사람과 마찬가지로)는 아마도 더 비쌉니다. 대부분의 사람들은 그런 경험이 없기 때문입니다.
- 상용 버전 제어 시스템 사용자는 이미 관계형 데이터베이스가 있기 때문에 관계형 데이터베이스를 설정하고 실행하는 오버 헤드에 대해 신경 쓰지 않을 것입니다.
- 상용 버전 제어 시스템 사용자는 개정 데이터를 백업하는 관계형 데이터베이스 를 원할 가능성이 높습니다 . 예를 들어 백업과 같이 프로세스와 더 잘 통합 될 수 있기 때문입니다.