트랜잭션 NTFS 사용에 대한 대안
- 추상
- 소개
- TxF by Scenario 대한 대안
- "문서와 유사한" 데이터 사용하여 단일 파일을 업데이트하는 애플리케이션
- 여러 파일 및/또는 레지스트리 하이브 대한 업데이트를 수행하는 애플리케이션
- 구조화된 데이터 집합을 관리하는 애플리케이션
- 로컬 NTFS 볼륨의 파일과 외부 SQL 데이터베이스의 테이블이 포함된 트랜잭션이 있는 애플리케이션
- 종료 & 권장 작업
요약
Microsoft는 개발자가 향후 버전의 Windows에서 사용할 수 없는 API 플랫폼을 채택하는 대신 논의된 대안(또는 경우에 따라 다른 대안을 조사)을 활용하는 방법을 조사하는 것이 좋습니다.
소개
TxF는 Windows에 원자성 파일 트랜잭션을 도입하기 위한 수단으로 Windows Vista와 함께 도입되었습니다. 이를 통해 Windows 개발자는 단일 파일을 사용하는 트랜잭션, 여러 파일이 포함된 트랜잭션 및 여러 원본(예: 레지스트리(TxR을 통해) 및 데이터베이스(예: SQL)에 걸친 트랜잭션에서 파일 작업에 대한 트랜잭션 원자성을 가질 수 있습니다. TxF는 강력한 API 집합이지만 Windows Vista는 주로 복잡성과 개발자가 애플리케이션 개발의 일부로 고려해야 하는 다양한 뉘앙스 때문에 이 API 플랫폼에 대한 개발자의 관심이 매우 제한적이었습니다. 그 결과, Microsoft는 향후 버전의 Windows에서 TxF API를 더 이상 사용하지 않는 것을 고려하고 있으며, 대부분의 고객에게 더 많은 가치를 지닌 다른 기능과 API에 대한 개발 및 유지 관리 노력을 집중하고 있습니다. 다음 섹션에서는 여러 유형의 애플리케이션 시나리오에서 TxF와 유사한 결과를 얻기 위한 샘플 대체 방법을 설명합니다.
시나리오별 TxF에 대한 대안
위에서 설명한 제한 사항으로 개발자는 TxF에서 충족되지 않는 애플리케이션 시나리오를 다루기 위해 TxF에 대한 대안을 조사해야 합니다. 여기서는 개발자가 고려해야 할 TxF의 일반적인 용도에 대한 몇 가지 제안된 대안이 설명되어 있습니다. 이 목록은 포괄적이지도 않고 완전하지도 않습니다.
"문서와 유사한" 데이터를 사용하여 단일 파일을 업데이트하는 애플리케이션
"문서와 유사한" 데이터를 처리하는 많은 애플리케이션은 전체 문서를 메모리에 로드하고, 작업한 다음, 변경 내용을 저장하기 위해 다시 작성하는 경향이 있습니다. 여기서 필요한 원자성은 일관성 없는 상태가 파일을 손상시킬 수 있으므로 변경 내용이 완전히 적용되거나 전혀 적용되지 않는다는 것입니다. 일반적인 방법은 문서를 새 파일에 쓴 다음 원본 파일을 새 파일로 바꾸는 것입니다. 이 작업을 수행하는 한 가지 방법은 ReplaceFile API를 사용하는 것입니다.
여러 파일 및/또는 레지스트리 하이브에 대한 업데이트를 수행하는 애플리케이션
파일 집합 및 레지스트리에 대한 업데이트를 원자성으로 수행해야 하는 많은 애플리케이션이 있습니다. 이 시나리오는 Windows Installer와 같은 설치 관리자 애플리케이션을 통해 가장 일반적으로 수행됩니다. Windows Installer에 대한 자세한 내용은 Windows Installer참조하세요.
구조화된 데이터 집합을 관리하는 애플리케이션
많은 애플리케이션은 데이터를 저장하기 위한 수단으로 다양한 형식의 일부 독점 데이터 구조 집합을 관리합니다. 이러한 애플리케이션의 중요한 과제는 업데이트 작업 중에 오류가 발생하는 경우 내부 포인터/참조의 무결성을 유지하는 프로세스입니다. 이에 대한 메커니즘을 만드는 것은 실제로 "어려운 문제"이므로 대부분의 애플리케이션은 실제 데이터베이스 서버를 사용하여 데이터 세트를 관리합니다.
구조화된 데이터를 관리하는 데 도움이 되는 두 가지 제안은 다음과 같습니다.
- Microsoft는 애플리케이션이 트랜잭션된 데이터 업데이트 및 검색 작업을 수행할 수 있도록 Windows에서 ESE(Extensible Storage Engine)를 제공합니다. ESE(Extensible Storage Engine)에 대한 자세한 내용은 https://msdn.microsoft.com/library/gg269259.aspx참조하세요.
- 더 강력하고 강력하며 확장 가능한 데이터베이스 공급자가 필요한 애플리케이션의 경우 고객은 Microsoft SQL Server에서 사용할 수 있는 Filestream 기능을 사용하는 것이 좋습니다. SQL Filestreams에 대한 자세한 내용은 https://technet.microsoft.com/library/bb933993.aspx참조하세요.
로컬 NTFS 볼륨의 파일과 외부 SQL 데이터베이스의 테이블을 포함하는 트랜잭션이 있는 애플리케이션
큰 데이터 세트가 필요하거나 외부 데이터베이스 및 로컬 스토리지와 관련된 작업에 트랜잭션 원자성이 있어야 하는 애플리케이션 클래스가 있습니다. 이 시나리오에서는 개발자가 SQL Filestreams를 사용하여 트랜잭션 파일 작업을 수행하는 것이 좋습니다. SQL Filestreams에 대한 자세한 내용은 https://technet.microsoft.com/library/bb933993.aspx참조하세요.
& 닫기 권장 작업
TxF는 타사 애플리케이션에서 일반적으로 사용되지 않는 복잡하고 미묘한 API 집합입니다. 이후 버전의 Windows에서 이러한 API를 사용할 수 없을 수도 있고 TxF가 개발된 많은 시나리오를 달성할 수 있는 더 간단한 대안이 있다는 사실 때문에 Microsoft는 개발자에게 애플리케이션에서 TxF에 대한 종속성을 만드는 대신 이러한 대체 방법을 조사할 것을 강력히 권장합니다.