데이터 차이점화
Data differencing컴퓨터 과학과 정보 이론에서, 데이터 차이점화 또는 차등 압축은 출처와 대상의 두 데이터 집합 사이의 차이에 대한 기술적 설명을 생산하고 있다. 형식적으로 데이터 차이점화 알고리즘은 입력 소스 데이터와 목표 데이터로 간주하고, 소스 데이터와 차이 데이터를 주어진 경우, 목표 데이터를 재구성할 수 있는 ("타겟을 생성하기 위한 차이로 소스")하는 차이 데이터를 생성한다.
예
데이터 차이점의 가장 잘 알려진 예 중 하나는 디프 유틸리티로, 텍스트 파일(그리고 일부 구현에서는 바이너리 파일)의 라인별 차이를 생성하여 범용 차이점 보관 도구가 된다. 일반 이진 파일의 차이점은 델타 부호화(delta incoding)의 루브릭(rubric) 아래에 있으며, 널리 사용되는 예는 rsync에서 사용되는 알고리즘이다. 표준화된 일반 차이점 보관 형식은 VCDIFF이며 Xdelta 버전 3과 같은 유틸리티에서 구현된다. 고효율(작은 패치 파일) 차이점 보관 프로그램은 bsdiff로, bzip2를 생성된 델타에 대한 최종 압축 단계로 사용한다.[1]
걱정
데이터 차이에 대한 주요 관심사는 가용성 및 공간 효율성(패치 크기)이다.
단순히 소스와 패치가 주어진 대상을 재구성하고자 하는 경우, 단순히 패치에 전체 대상을 포함시키고 소스를 폐기하고 패치에 포함된 대상을 출력함으로써 패치를 "적용"할 수 있으며, 마찬가지로 소스와 대상이 동일한 크기를 갖는 경우 XORing 소스에 의한 단순한 패치를 생성하여 타르지를 만들 수도 있다.t. 이 두 경우 모두 패치가 대상만큼 클 것이다. 이러한 예에서 알 수 있듯이, 대상의 재구성이 유일한 관심사라면, 이는 큰 패치를 희생하여 쉽게 이루어지며, 범용 바이너리 차이점화의 주요 관심사는 패치 크기를 줄이는 것이다.
특히 구조화된 데이터의 경우, "사용성"에 크게 해당하는 다른 문제가 있는데, 예를 들어, 두 문서를 비교하는 경우, 일반적으로 어떤 섹션이 변경되었는지 또는 일부 섹션이 이동되었는지 알고 싶어하며, 문서는 어떻게 다른지 이해하고 싶어 한다. 예를 들어 "여기서 'cat'은 'dog'로 변경되었고, 13항은 14항으로 변경되었다." 또한 강력한 차이를 가질 수 있다. 예를 들어, A와 B 두 문서가 13항에서 다른 경우, A의 7항을 변경했더라도 이 패치를 적용할 수 있기를 바랄 수 있다. 이것의 예는 diff인데, 이것은 어떤 선이 바뀌었는지, 그리고 어디에서 컨텍스트 형식이 견고함을 허용하고 인간의 가독성을 향상시키는지 보여준다.
다른 우려 사항으로는 데이터 압축과 관련하여 컴퓨팅 효율성이 있다. 작은 패치를 찾는 것은 매우 시간과 메모리 집약적일 수 있다.
최적의 결과는 비교되는 데이터와 다른 제약조건에 대한 지식을 가지고 있을 때 발생한다: diff는 회선 지향 텍스트 파일, 특히 소스 코드에 대해 설계되고, 이것들에 가장 잘 작동한다; rsync 알고리즘은 소스 및 타겟이 서로 네트워크를 가로지르고, 통신이 느리기 때문에 반드시 거쳐야 하는 데이터를 최소화한다.구글 크롬에 대한 업데이트는 프로그램 데이터의 보관 및 실행 가능한 형식에 따라 사용자 정의된 알고리즘을 사용한다.[2][3]
데이터 압축 연결
데이타 압축. 데이터의 특별한 경우로 differencing[4][5]– 자료는 차이점과 감압은 targe를 생산하는으로 구성된 압축 파일 대상을 생산하는 동안 데이터 압축 가타카나, 패치를 표적이 소스와 차이가 주어진 제작에, 소스와 대상을 받는으로 구성되어 있differencing 볼 수 있다.t을 준다압축된 파일만. 따라서 데이터 압축은 "무(無)와의 차이"에 해당하는 압축 파일인 빈 소스 데이터를 가진 데이터 차이점이라고 생각할 수 있다. 이는 (데이터 압축에 대응) 절대 엔트로피를 초기 데이터가 없는 상대 엔트로피(데이터 차이에 대응)의 특수한 경우로서 고려하는 것과 같다.
연결을 강조하고자 할 때, 데이터 차이점을 언급하기 위해 차등 압축이라는 용어를 사용할 수 있다.
두 분야의 전문용어 간 번역 사전은 다음과 같이 주어진다.
| 압축 | 차이점의 |
|---|---|
| 없는 | 출처 |
| 압착되지 않은 | 표적으로 삼다 |
| 압축된 | 차이, 델타 |
| 압축 | 차이점의 |
| 감압 | 패치 적용 |
참조
- ^ 콜린 퍼시벌, 실행 가능한 코드의 순진한 차이, http://www.daemonology.net/bsdiff/, 2003.
- ^ 크롬 블로그: 작은 것이 더 빠르고 안전하다
- ^ 소프트웨어 업데이트: 쿠르겟(크롬 프로젝트)
- ^ RFC 3284
- ^ Korn, D.G.; Vo, K.P. (1995), B. Krishnamurthy (ed.), Vdelta: Differencing and Compression, Practical Reusable Unix Software, John Wiley & Sons
