어. 대답은 실제로 많은 ArcSDE 배경이 필요한 복잡한 답변이므로 가능한 한 간략하게 노력하겠습니다.
참고 ESRI 사이트에서 찾을 수 있는 매우 훌륭한 버전 화 백서 의 일부 다이어그램을 참조하겠습니다 . 버전 관리를 다루는 경우이를 읽어 보는 것이 좋습니다.
그런 다음 상태 (예 : 상태 트리의 노드)와 명명 된 버전 (예 : 상태를 가리키는 레이블 ) 사이의 관계가 무엇인지 이해해야합니다 .
일반적인 데이터베이스는 아래의 상태 다이어그램처럼 보일 수 있습니다.
여기에는 데이터베이스에 버전 A, 버전 B, 버전 C 및 DEFAULT의 네 가지 버전이 있습니다. 그러나 아마도 나는 나보다 조금 앞서고있다. 상태 가 무엇인지부터 시작하겠습니다 .
상태를 "트랜잭션"이라고 생각할 수 있습니다. 하나 또는 여러 개의 테이블에 대한 여러 편집 내용이 포함 된 논리 단위입니다 . 그것은이 개 포함 삽입 "FeatureClass A"로하는 삭제 "기능 클래스 B"과에서 수정 "기능 클래스 X"로 (효과적으로 삭제 + 삽입을). 모두 하나로 그룹화됩니다.
상태 ID 0에서 시작하는 작고 간단한 ArcSDE 상태 다이어그램을 살펴 보겠습니다.
상태 0에서 시작하고 편집 조작에서 하나 이상의 테이블을 편집하는 경우 하위 상태 1을 작성하고이를 현재 활성 상태 id로 만듭니다. 이후의 다른 편집 그룹은 하위 상태 2를 만듭니다. 실행 취소하려는 경우 어떤 방식 으로든 상태 ID를 수정할 필요가 없습니다. 현재 활성 상태 ID를 1 또는 0으로 변경하기 만하면됩니다. 당신이 가고 싶은 거리). 다시 실행은 반대입니다. 현재 활성 상태 ID를 앞으로 이동합니다.
이것이 ArcSDE 버전 관리에서 실행 취소 / 다시 실행 방법입니다.
알았어 수정 사항을 영구적으로 작성하고 싶다고 가정하십시오 (예 : 저장). 무엇을해야합니까? 글쎄, 저장은 버전 레이블을 잡고 특정 상태로 옮기는 것입니다. 스탬프를 찍고 "이것은 버전 A의 모습입니다"라고 말하는 것과 같습니다. 따라서 첫 번째 다이어그램을 다시 살펴보면 네 개의 명명 된 버전 이 있음을 알 수 있습니다 .
이는 ArcMap / ArcCatalog에 표시되는 상위-하위 관계입니다. 목적 은 조정할 수있는 버전 을 제한 하는 것입니다. 이 시점에서 당신은 (정확하게) 스스로에게 물어볼 수 있습니다. 왜 내가 이것을 필요로합니까? 답은 버전 관리 워크 플로에 있습니다. 사람들은 꽤 오랫동안 버전 관리를 사용하고 있으며이를 구성하는 방법에 대한 몇 가지 바람직한 방법이 있지만 오늘 질문에 대답하고 싶은 또 다른 주제입니다. :)
계속 ...
좋아,이 명명 된 버전은 다른 무엇을 하는가? 압축 이라는이 프로세스의 작동 방식에 영향을줍니다 .
압축은 필요하지 않은 중간 상태를 잡아서 불필요한 상태를 제거하고 결합하는 것입니다. ArcCatalog를 통해 ArcSDE 압축 작업을 트리거하고, 한 번에 하나씩 수행하는 서비스를 설정하고, 일부 ArcMap 편집 작업은 미니 압축 작업을 트리거합니다 (예 : 사용중인 작은 분기에 대해서만).
왼쪽의 다이어그램은 압축되기 전의 상태 트리를 나타내고 오른쪽의 다이어그램은 압축 된 직후의 상태 트리를 보여줍니다.
이해해야 할 중요한 개념 (마지막으로 질문에 대답하면 참조 할 것임)은 레이블 (예 : 명명 된 버전) 이있는 상태를 제외하고 모든 단일 상태가 압축 될 수있는 잠재적 후보 라는 점입니다.
압축하기 전에 불필요한 추가 상태가 있음을 알 수 있습니다. 실제로 전체 [3,4,5] 지점이 제거되었습니다. 5시에 명명 된 버전이 있었다면 최종 결과는 매우 달라졌을 것입니다.
더 이상 필요하지 않은 레코드를 제거하여 데이터베이스의 공간을 절약하기 위해 압축 조작이 있습니다.
알았어
마지막으로 이해해야 할 개념은 조정 입니다. 효과적으로 두 분기를 하나로 병합합니다.
첫 번째 다이어그램으로 돌아가 봅시다. SDE.DEFAULT에 대해 버전 A를 조정한다고 가정하십시오.
다양한 상태 ID를 가리키는 4 개의 명명 된 버전을 살펴 보겠습니다. 먼저해야 할 일은 대상 버전에서 자식 상태를 만드는 것이므로 상태 ID 4에서 자식 상태를 만듭니다.이 예에서는 상태 ID 20이라고합니다.
다음 단계는 두 버전 사이의 차이점을 계산하는 것입니다 (세부 사항이 너무 길지만 차이점 커서 로 완료되었음을 알 수 있습니다 ). 그러한 차이점을 새 상태 ID 20 (파란색 선)에 적용하십시오.
더 많은 편집을하기로 결정했거나 충돌을 발견하여 한 버전 또는 다른 버전에서 행을 선택한다고 가정하십시오. 중요하지 않습니다. 그것들은 새로운 편집일 뿐이며 병합 한 브랜치 아래에 자식 상태가 있기 때문에 편집 작업 내에서 수행됩니다. 이 예에서는 조정 후 두 번의 추가 편집 그룹을 추가로 수행했습니다.
아름다운.
이제 버전을 " 게시 " 할 준비가되었다고 말합니다 . 그게 무슨 뜻이야? 그것은 단지 레이블을 잡고 동일한 상태 ID를 가리 키는 것입니다. 여기서는 버전 A를 SDE.DEFAULT에 게시하려고합니다. 이것은 다음과 같습니다
타다 아아! 따라서 버전 A와 SDE.DEFAULT는 동일한 상태 ID를 가리 키므로 동일하게 보입니다.
자, 이제 마침내 귀하의 질문에 대답 할 수 있습니다.
게시물을 취소 할 수 있습니까? ArcGIS 문서는 아무 말도 하지 않습니다. 이 논리를 어지럽히 기 때문에 수행하지 마십시오. 수행중인 작업을 모르면 데이터가 손상 될 수 있습니다.
그러나 실제로 필요한 것은 ArcSDE 버전 관리 테이블 중 하나 인 VERSIONS 테이블 을 한 번 업데이트 하고 레이블 항목 (일명 이름이 지정된 버전)을 수정하는 것입니다. 이 예에서는 상태 ID 21을 가리키고 전체 편집 작업을 취소했습니다. 3으로 설정하면 전체 조정이 취소됩니다. 5로 설정하면 이제 완전히 다른 위치에 있습니다. 충돌이 있는지 없는지 여부는 관련이 없습니다.
물론 이것은 압축이 발생하지 않았다고 가정합니다. SDE 테이블을 업데이트하는 것과 동시에 압축이 수행되는 경우를 고려하십시오. 게시 한 후 압축을 실행하면 트리가 다음과 같습니다.
압축 후 조정을 취소 할 수 있습니까? 글쎄요,이 경우에는 아닙니다 . 압축이 전체 브랜치를 날려 버렸으므로 취소 할 수 없습니다. 해당 데이터가 제거되었습니다. 해당 브랜치에 다른 이름의 버전이 있었으면 압축이 해당 브랜치를 파괴하지 않았을 것입니다. 지금까지 이것이 의미가 있기를 바랍니다.
그래서 당신은 이것을해야합니까? 자신이하는 일을 모르는 경우 압축 후 데이터를 쉽게 잃을 수 있습니다.