WinFS
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
WinFS는 마이크로소프트가 개발을 중단한 관계형 파일 시스템으로, 파일 시스템에 저장된 데이터의 의미와 관계를 파악하여 파일 검색 및 관리를 개선하는 것을 목표로 했다. 1990년대 중반 카이로 프로젝트에서 시작되어, 2006년 개발 중단 전까지 베타 버전까지 공개되었으나, Windows Vista에 탑재되지 못하고 개발이 종료되었다. WinFS는 메타데이터, 데이터 모델, 데이터 검색, 데이터 공유 등의 특징을 가지고 있었으며, 데이터베이스 기술을 활용하여 데이터 항목 간의 관계를 정의하고, 다양한 데이터 형식의 통합 관리를 지원하고자 했다.
더 읽어볼만한 페이지
- 마이크로소프트 API - 윈도우 API
윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다. - 마이크로소프트 API - XAML
XAML은 마이크로소프트에서 개발한 XML 기반의 마크업 언어로, 사용자 인터페이스, 데이터 바인딩, 이벤트 처리 등을 정의하며 WPF, Silverlight, WF, WinRT API 앱, Xamarin.Forms 등에서 UI 개발에 널리 사용된다.
| WinFS | |
|---|---|
| 기본 정보 | |
![]() | |
| 개발사 | 마이크로소프트 |
| 운영체제 | 윈도우 비스타 (초기 계획), 이후 취소 |
| 종류 | 파일 시스템 |
| 라이선스 | 독점 소프트웨어 |
| 상세 정보 | |
| 상태 | 개발 중단 |
| 출시일 | 미출시 |
| 주요 특징 | |
| 데이터 저장 방식 | 관계형 데이터베이스 기반 |
| 주 사용 언어 | C# |
| 인터페이스 | .NET Framework |
| 프로젝트 관련 | |
| 프로젝트 코드명 | Indigo |
2. 동기
일반적인 파일 시스템(예: 최신 마이크로소프트 윈도우 버전에서 사용되는 NTFS)은 파일 및 기타 개체를 바이트 스트림으로만 저장하며, 파일에 저장된 데이터에 대한 정보는 거의 또는 전혀 가지고 있지 않다.[6][7] 이러한 파일 시스템은 디렉터리와 파일 이름을 통해서만 파일을 구성할 수 있다.[6][7]
WinFS는 단순한 파일 저장을 넘어, 데이터 간의 관계를 정의하고 활용하는 것을 목표로 하는 파일 시스템이다. 기존 파일 시스템이 파일 이름과 폴더 구조에 의존하여 데이터를 관리하는 것과 달리, WinFS는 각 파일의 속성(메타데이터)을 활용하여 파일의 의미와 내용을 파악한다.
파일 시스템이 저장하는 데이터에 대해 알지 못하기 때문에,[6] 응용 프로그램은 종종 자체적이고 독점적인 파일 형식을 사용하는 경향이 있다. 이는 여러 응용 프로그램 간의 데이터 공유를 방해한다. 프로그래머가 모든 파일의 구조와 의미를 이해해야 하기 때문에 여러 파일 형식의 정보를 처리하는 응용 프로그램을 만드는 것이 어려워진다.[8] 공통 파일 형식을 사용하는 것은 이 문제에 대한 해결책이지만, 모든 응용 프로그램이 해당 형식을 사용한다는 보장이 없으므로 보편적인 해결책은 아니다. XML 문서 및 관계형 데이터와 같이 표준화된 스키마를 가진 데이터는 표준화된 구조와 런타임 요구 사항을 가지고 있기 때문에 더 나은 결과를 얻는다.[9]
기존의 파일 시스템은 데이터에 대한 유일한 정보가 파일 이름이기 때문에 파일 이름을 기반으로만 데이터를 검색할 수 있다.[8] 더 나은 해결책은 파일을 설명하는 특성으로 태그를 지정하는 것이다. 특성은 파일의 메타데이터이며, 파일 유형(예: '문서', '사진', '음악', '제작자' 등)과 같은 정보를 포함한다.[6] 이를 통해 폴더 계층 구조를 사용하지 않고 특성을 기반으로 파일을 검색할 수 있다. (예: '사람 X가 있는 사진')[6] 특성은 파일 시스템에서 기본적으로 인식하거나 일부 확장을 통해 인식할 수 있다.[6] 데스크톱 검색 응용 프로그램은 이 개념을 발전시켜 파일에서 특성을 포함한 데이터를 추출하여 색인을 만든다. 각 파일 형식에 대한 필터를 사용하여 데이터를 추출하므로, 파일의 특성과 데이터를 기반으로 검색할 수 있다.[6]
그러나 이것만으로는 관련 데이터를 관리하는 데 도움이 되지 않는데, 서로 다른 항목 간의 관계가 정의되어 있지 않기 때문이다. 예를 들어, '아카풀코에 살고 사진 컬렉션에 100회 이상 등장하며 지난 한 달 동안 이메일을 주고받은 모든 사람의 전화번호'를 검색하는 것은 불가능하다. 이러한 검색은 데이터의 의미론과 관계가 모두 정의된 데이터 모델을 기반으로 하지 않는 한 수행할 수 없다.[6][7] WinFS는 이러한 데이터 모델과 데이터를 저장하고 데이터 모델에 따라 데이터 항목 간의 관계를 저장하는 데 사용할 수 있는 런타임 인프라를 만족할 만한 성능 수준으로 제공하는 것을 목표로 한다.
3. 특징
WinFS는 '사진', '이메일', '문서' 등 다양한 유형의 데이터를 인식하며, 각 데이터는 '이력서'처럼 '이름', '학력' 등의 속성으로 구조화된다. 이러한 데이터들은 서로 '작성자'와 같은 관계로 연결될 수 있으며, 이러한 관계 또한 속성으로 나타난다.[7][10]
WinFS는 XML 및 관계형 데이터 외에도 준구조화 데이터(비구조화 비트스트림과 구조화된 메타데이터를 갖는 이미지)와 비구조화 데이터(파일)도 지원한다.[10] 내부적으로 관계형 데이터베이스를 사용하여 데이터를 관리하지만, 특정 데이터 모델에 종속되지는 않는다. WinFS 런타임은 스키마를 관계형 모드로 매핑[6]하여 유형을 저장할 테이블과 관계를 나타내는 데 필요한 기본 키 및 외부 키를 정의한다.
관계 탐색은 이러한 테이블에 대한 조인으로 수행된다. WinFS는 또한 이러한 테이블에 인덱스를 자동으로 생성하여 정보에 대한 빠른 접근을 가능하게 한다.[10] 인덱싱은 조인 속도를 크게 높여 관련 데이터를 검색하기 위해 관계를 탐색하는 작업이 매우 빠르게 수행되도록 돕고, 정보 검색 중에도 사용된다.
WinFS는 Microsoft SQL Server 2005의 기반 엔진인 Yukon(개발 코드명) 기술을 기반으로 한다. 파일과 폴더(디렉터리)를 관리하는 데 그치지 않고, 파일 시스템 자체가 검색 기능을 가지고 있어 다양한 유형의 데이터를 즉시 추출할 수 있다.
3. 1. 메타데이터
일반적인 파일 시스템(예: 최신 마이크로소프트 윈도우 버전에서 사용되는 NTFS)은 파일 및 기타 개체를 바이트 스트림으로만 저장하며, 파일에 저장된 데이터에 대한 정보는 거의 없다. 이러한 파일 시스템은 디렉터리와 파일 이름을 통해서만 파일을 구성한다.[6][7]
파일 시스템이 저장하는 데이터에 대해 알지 못하므로,[6] 응용 프로그램은 종종 자체적인 독점적인 파일 형식을 사용한다. 이는 여러 응용 프로그램 간의 데이터 공유를 방해하며, 프로그래머가 모든 파일의 구조와 의미론을 이해해야 하므로 여러 파일 형식의 정보를 처리하는 응용 프로그램을 만드는 것이 어려워진다.[8] 공통 파일 형식을 사용하는 것은 이 문제에 대한 해결책이지만 보편적인 해결책은 아니다. 모든 응용 프로그램이 해당 형식을 사용한다는 보장은 없기 때문이다. XML 문서 및 관계형 데이터와 같이 표준화된 스키마를 가진 데이터는 표준화된 구조와 런타임 요구 사항을 가지고 있기 때문에 더 나은 결과를 얻는다.[9]
기존의 파일 시스템은 데이터에 대한 유일한 정보가 파일 이름이기 때문에 파일 이름을 기반으로만 데이터를 검색할 수 있다.[8] 더 나은 해결책은 파일을 설명하는 특성으로 태그를 지정하는 것이다. 특성은 파일의 메타데이터이며, 파일 유형(예: '문서', '사진', '음악', '제작자' 등)과 같은 정보를 포함한다.[6] 이를 통해 폴더 계층 구조를 사용하지 않고도 특성을 기반으로 파일을 검색할 수 있다(예: ''"사람 X가 있는 사진"''). 특성은 파일 시스템에서 기본적으로 인식하거나 일부 확장을 통해 인식할 수 있다.[6] 데스크톱 검색 응용 프로그램은 이 개념을 발전시켜 파일에서 특성을 포함한 데이터를 추출하여 색인을 만든다. 각 파일 형식에 대한 필터를 사용하여 데이터를 추출하므로, 파일의 특성과 데이터를 기반으로 검색할 수 있다.[6]
하지만 이것만으로는 관련 데이터를 관리하는 데 충분하지 않다. 서로 다른 항목 간의 관계가 정의되어 있지 않기 때문이다. 예를 들어, ''"아카풀코에 살고 사진 컬렉션에 100회 이상 등장하며 지난 한 달 동안 이메일을 주고받은 모든 사람의 전화번호"''를 검색하는 것은 불가능하다. 이러한 검색은 데이터의 의미론과 관계가 모두 정의된 데이터 모델을 기반으로 하지 않는 한 수행할 수 없다.[6][7]
WinFS는 이러한 데이터 모델과 데이터를 저장하고 데이터 모델에 따라 데이터 항목 간의 관계를 저장하는 데 사용할 수 있는 런타임 인프라를 제공하는 것을 목표로 한다. WinFS는 원시 바이트 스트림 대신 '사진', '이메일', '문서', '오디오', '비디오', '캘린더', '연락처' 등 다양한 유형의 데이터를 기본적으로 인식한다. 시스템에 의해 저장 및 관리되는 데이터는 WinFS 런타임에 의해 인식되는 데이터 유형의 인스턴스이다. 데이터는 속성을 통해 구조화된다. 예를 들어, '이력서' 유형의 인스턴스는 '이름', '학력', '경력'과 같은 속성을 통해 데이터를 표시한다. 각 속성은 단순 유형('문자열', '정수', '날짜') 또는 복합 유형('연락처')일 수 있다.[8][10] 다른 데이터 유형은 다른 속성을 노출한다.
또한, WinFS는 서로 다른 데이터 인스턴스가 서로 관련될 수 있도록 허용한다. 예를 들어, 문서와 연락처는 '작성자' 관계로 연결될 수 있다.[7][10] 관계 또한 속성으로 노출된다. 문서가 '작성자' 관계로 연락처와 관련된 경우, 문서에는 '작성자' 속성이 있으며, 접근될 때 관계가 탐색되고 관련 데이터가 반환된다.[10] 관계를 따라 모든 관련 데이터에 접근할 수 있다.[7] WinFS는 모든 애플리케이션이 해당 스키마와 함께 데이터 유형에 액세스할 수 있도록 함으로써 애플리케이션 간의 데이터 공유를 촉진한다.[8] 애플리케이션이 WinFS 유형을 사용하려는 경우, 스키마를 사용하여 데이터 구조를 찾고 정보를 사용할 수 있다. 따라서 개발자가 서로 다른 데이터 형식을 인식하는 파서를 작성할 필요 없이 애플리케이션은 시스템의 모든 데이터에 액세스할 수 있다.
WinFS API는 데이터 액세스 작업을 더욱 추상화한다. 모든 WinFS 유형은 객체의 속성이 데이터 유형의 속성에 직접 매핑되는 .NET 객체로 노출된다.[6] 또한, 동일한 데이터를 처리하는 서로 다른 애플리케이션이 서로 다른 파일에 동일한 데이터를 저장하는 대신 동일한 WinFS 데이터 인스턴스를 공유하도록 함으로써 데이터가 변경될 때 서로 다른 저장소를 동기화하는 번거로움을 없애준다.[11] 따라서 WinFS는 중복성을 줄일 수 있다.[6][9]
WinFS는 시스템의 모든 데이터에 대한 접근을 통해, 관리하는 모든 데이터 항목에 걸쳐 데이터에 대한 복잡한 검색을 가능하게 한다. 예를 들어, "아카풀코에 살고 사진 컬렉션에 100회 이상 등장하며 지난 한 달 동안 이메일을 주고받은 모든 사람의 전화번호"를 검색할 때, WinFS는 모든 사진의 '제목' 관계를 탐색하여 '연락처' 항목을 찾을 수 있다. 마찬가지로 지난 달의 모든 이메일을 필터링하고 '통신한' 관계에 액세스하여 연락처에 접근할 수 있다. 그런 다음 두 결과 집합에서 공통 연락처를 파악하고 연락처 항목의 적절한 속성에 액세스하여 전화번호를 검색할 수 있다.
WinFS는 스키마화된 데이터(XML, 관계형 데이터) 외에도 준구조화 데이터(비구조화 비트스트림과 구조화된 메타데이터를 갖는 이미지)와 비구조화 데이터(파일)도 지원한다. 비구조화 구성 요소는 파일로 저장하고 구조화된 메타데이터는 구조화된 저장소에 저장한다.[10] 내부적으로 WinFS는 데이터를 관리하기 위해 관계형 데이터베이스를 사용하지만, 데이터가 특정 데이터 모델에 속하도록 제한하지 않는다. WinFS 런타임은 스키마를 관계형 모드로 매핑[6]하여 유형을 저장할 테이블과 관계를 나타내는 데 필요한 기본 키 및 외부 키를 정의한다. WinFS는 기본적으로 객체 및 XML 스키마에 대한 매핑을 포함하며, 다른 스키마에 대한 매핑은 지정해야 한다. 객체 스키마는 XML로 지정되며, WinFS는 스키마를 .NET 클래스로 표시하는 코드를 생성한다. ADO.NET을 사용하여 관계형 스키마를 직접 지정할 수 있지만, 클래스로 표시하려면 객체 스키마에 대한 매핑을 제공해야 한다.[10]
관계 탐색은 이러한 테이블에 대한 조인으로 수행된다. WinFS는 또한 이러한 테이블에 인덱스를 자동으로 생성하여 정보에 대한 빠른 액세스를 가능하게 한다.[10] 인덱싱은 조인 속도를 크게 높여 관련 데이터를 검색하기 위해 관계를 탐색하는 작업이 매우 빠르게 수행되도록 돕고, 정보 검색 중에도 사용된다. 검색 및 쿼리는 인덱스를 사용하여 데스크톱 검색 시스템과 마찬가지로 작업을 빠르게 완료한다.
WinFS는 마이크로소프트 SQL Server 2005의 기반 엔진인 Yukon(개발 코드명) 기술을 기반으로 한다. WinFS는 파일과 폴더(디렉터리)를 관리하는 데 그치지 않고, 파일 시스템 자체가 검색 기능을 가지고 있어 다양한 유형의 데이터를 즉시 추출할 수 있다.
또한 WinFS는 각 파일의 속성을 나타내는 메타데이터를 관리함으로써 파일 시스템 자체가 개별 파일의 의미와 속성을 파악할 수 있도록 설계되었다. 이 기능을 이용하면 개별 파일의 다양한 정보를 OS 서비스로서 API(애플리케이션 프로그래밍 인터페이스)를 통해 각 애플리케이션에 제공할 수 있다.
3. 2. 동작 예시
WinFS는 '사진', '이메일', '문서' 등 다양한 유형의 데이터를 인식하며, 각 데이터는 '이력서'처럼 속성('이름', '학력' 등)으로 구조화된다. 데이터 간에는 '작성자'와 같은 관계로 연결될 수 있으며, 이러한 관계도 속성으로 나타난다.[10] WinFS는 모든 애플리케이션이 데이터 유형에 접근할 수 있게 하여 데이터 공유를 쉽게 한다.[8] 개발자는 파서를 만들 필요 없이 시스템의 모든 데이터에 접근할 수 있다. WinFS API는 데이터 접근을 더 추상화하여, .NET 객체로 데이터를 다룰 수 있게 한다.[6] 데이터 중복도 줄일 수 있다.[6][9]
WinFS는 모든 데이터에 걸쳐 복잡한 검색을 지원한다. 예를 들어, "아카풀코에 살고 사진에 100회 이상 등장하며 지난 달 이메일을 주고받은 모든 사람의 전화번호"를 찾는 경우, WinFS는 사진의 '제목' 관계를 통해 '연락처'를 찾고, 지난 달 이메일을 필터링하여 '통신한' 관계로 연락처에 접근한다. 두 결과에서 공통 연락처를 찾아 전화번호를 얻을 수 있다.
WinFS는 XML 및 관계형 데이터 외에도 준구조화, 비구조화 데이터도 지원한다.[10] 관계형 데이터베이스를 사용하여 데이터를 관리하며, 객체 관계 매핑을 통해 유형을 저장할 테이블과 관계를 정의한다.[6] 인덱스를 자동 생성하여 정보 접근 속도를 높인다.[10]
이 파일 시스템은 Microsoft SQL Server 2005 기반 기술을 사용하며, 파일 시스템 자체가 검색 기능을 가지고 있어 다양한 데이터를 즉시 추출할 수 있다.
WinFS는 파일의 메타데이터를 관리하여 파일의 의미와 속성을 파악한다. 이를 통해 OS 서비스 API를 통해 각 애플리케이션에 파일 정보를 제공한다.
예를 들어, Outlook의 일정이나 메모를 설날 인사말 카드 인쇄 소프트웨어에서 사용할 수 있다. "지난 1년 동안 회의를 가진 상대방 주소"를 지정하면 해당 인물의 주소만 추려내는 동작이 가능하다.
클라이언트는 WinFS API를 호출하여 서버 측 데이터 형식을 신경 쓰지 않고 이러한 동작을 구현할 수 있다. 개발 부담은 줄고 사용자 편의는 향상된다. 이미지, 영상 등 모든 데이터 파일에 적용될 수 있다.
WinFS는 메타데이터 템플릿을 규정하며, 문서, 주소록, 일정, 이미지, 음악, 영상 등 주요 용도 템플릿이 있다. XML 기술을 사용하여 서드파티가 확장하거나 새 템플릿을 만들 수 있다. 메타데이터는 데이터 생성 시 애플리케이션에서 수행되며, 사용자는 메타데이터를 인식할 필요가 없다.
4. 데이터 저장소
WinFS는 기존 파일 시스템이 원시 바이트 스트림으로 데이터를 저장하는 것과 달리, '사진', '이메일', '문서' 등 다양한 유형의 데이터를 인식하고 관리한다. 데이터는 속성을 통해 구조화되는데, 예를 들어 '이력서'는 '이름', '학력' 등의 속성을 가진다. WinFS는 데이터 간의 관계(예: 문서와 연락처의 '작성자' 관계)를 허용하며, 이러한 관계는 속성으로 나타난다.[7][10]
WinFS는 애플리케이션 간 데이터 공유를 촉진하며, 개발자는 파서 없이도 시스템의 모든 데이터에 접근할 수 있다. WinFS API는 .NET 객체로 데이터를 노출하여 데이터 접근을 추상화하고, 데이터 중복을 줄인다.[6][9]
WinFS는 "아카풀코에 살고 사진 컬렉션에 100회 이상 등장하며 지난 한 달 동안 이메일을 주고받은 모든 사람의 전화번호"와 같은 복잡한 검색을 지원한다. WinFS는 XML 및 관계형 데이터 외에도 준구조화 및 비구조화 데이터도 지원하며, 관계형 데이터베이스를 사용하여 데이터를 관리한다. WinFS 런타임은 스키마를 관계형 모드로 매핑하고, 객체 및 XML 스키마에 대한 매핑을 기본 제공한다.[6] 관계 탐색은 테이블 조인으로 수행되며, WinFS는 인덱스를 자동 생성하여 빠른 정보 접근을 지원한다.[10]
WinFS는 데이터를 ''저장소''라는 가상 위치에 저장하며, 이는 모든 애플리케이션이 메타데이터, 관계 및 스키마와 함께 데이터를 저장할 수 있는 공통 저장소 역할을 한다.[13] WinFS 런타임은 특정 관계를 스스로 적용할 수 있는데, 예를 들어 그림의 ''제목'' 속성 값과 연락처의 ''이름'' 속성 값이 같으면 WinFS는 연락처와 그림을 연관시킬 수 있다.[28] 관계는 다른 애플리케이션이나 사용자가 지정할 수도 있다.[29]
WinFS는 통합 저장소를 제공하지만, 데이터 저장소에 저장될 형식을 정의하지는 않는다. 대신 애플리케이션별 형식으로 데이터를 쓰는 것을 지원하며, 애플리케이션은 파일 형식을 해석하는 방법을 정의하는 스키마를 제공해야 한다.[6] 여러 개의 WinFS 저장소를 생성하여 데이터를 분리 보관할 수 있으며, 기본 저장소는 "DefaultStore"이다.[13] WinFS 저장소는 가상 폴더와 유사한 셸 객체로 표시된다.[13]
WinFS 저장소에 저장되는 데이터 단위를 WinFS ''항목''이라고 한다.[6][29] WinFS 항목에는 핵심 데이터 항목과 함께 데이터 항목이 다른 데이터와 어떻게 관련되는지에 대한 정보도 포함되어 있다. 이 ''관계''는 논리적 링크로 저장되며, 링크 식별자를 통해 관계의 이름과 의도를 지정한다.[6] WinFS에 저장될 데이터 항목의 구조는 XML 스키마로 미리 제공되어야 한다.[6]
4. 1. 아키텍처
WinFS는 기존 파일 시스템과 달리 '사진', '이메일', '문서' 등 다양한 유형의 데이터를 인식하고, WinFS 런타임이 인식하는 데이터 유형의 인스턴스로 데이터를 저장한다. 데이터는 속성을 통해 구조화되며, 예를 들어 '이력서'는 '이름', '학력' 등의 속성을 가진다. WinFS는 데이터 간의 관계(예: 문서와 연락처의 '작성자' 관계)를 허용하며, 이러한 관계는 속성으로 나타난다.[7][10]WinFS는 애플리케이션 간 데이터 공유를 촉진하며, 개발자는 파서 없이도 시스템의 모든 데이터에 접근할 수 있다. WinFS API는 .NET 객체로 데이터를 노출하여 데이터 접근을 추상화하고, 데이터 중복을 줄인다.[6][9]
WinFS는 SQL Server 2005[24]에서 파생된 관계형 엔진을 사용하며, 데이터 관계 메커니즘을 제공한다. WinFS 저장소는 FILESTREAM 속성이 설정된 SQL Server 데이터베이스 파일(.MDF)이다.[25] 이러한 파일은 볼륨 루트의 "System Volume Information" 폴더[26] 아래, 해당 저장소의 GUID 이름이 붙은 "WinFS" 폴더에 저장된다.[25]
WinFS 스택 하단에는 파일 시스템과 상호 작용하고 파일 접근 및 주소 지정 기능을 제공하는 ''WinFS Core''가 있다.[8] 관계형 엔진은 WinFS 코어 서비스를 활용하여 구조화된 저장소와 잠금 같은 서비스를 제공한다. WinFS 런타임은 ''동기화'' 및 ''규칙''과 같은 ''서비스''를 제공하여 WinFS 저장소를 동기화하거나 특정 이벤트 발생 시 작업을 수행한다.[8]
WinFS는 세 개의 프로세스를 실행하는 서비스로 실행된다.[27]
| 프로세스 | 설명 |
|---|---|
| WinFS.exe | 관계형 데이터 저장소를 호스팅한다. |
| WinFSSearch.exe | 색인 및 쿼리 엔진을 호스팅한다. |
| WinFPM.exe (WinFS 파일 승격 관리자) | 기본 파일 시스템과 인터페이스한다. |
.NET Framework API를 통해 프로그래밍 방식으로 기능에 접근할 수 있으며, 애플리케이션은 사용자 지정 데이터 형식을 정의하고, 데이터 간의 관계를 정의하고, 정보를 저장 및 검색하고, 고급 검색을 허용할 수 있다.[6][8]
WinFS는 마이크로소프트의 Microsoft SQL Server 2005의 기반 엔진인 Yukon(개발 코드명) 기술을 기반으로 한다. 파일 시스템 자체가 검색 기능을 가지고 있어 다양한 유형의 데이터를 즉시 추출할 수 있다. 또한 각 파일의 속성을 나타내는 메타데이터를 관리하여 파일 시스템 자체가 개별 파일의 의미와 속성을 파악할 수 있는 사양이었다.
4. 1. 1. 데이터 저장소
WinFS는 파일 시스템이 단순히 원시 바이트 스트림으로 데이터를 저장하는 대신, '사진', '이메일', '문서' 등 다양한 유형의 데이터를 인식하고 관리한다. 데이터는 속성을 통해 구조화되며, '이력서'는 '이름', '학력' 등의 속성을 가진다. WinFS는 데이터 간의 관계(예: 문서와 연락처의 '작성자' 관계)를 허용하며, 이러한 관계는 속성으로 나타난다.[7][10] WinFS는 애플리케이션 간 데이터 공유를 촉진하며, 개발자는 파서 없이도 시스템의 모든 데이터에 접근할 수 있다. WinFS API는 .NET 객체로 데이터를 노출하여 데이터 접근을 추상화하고, 데이터 중복을 줄인다.[6][9]WinFS는 모든 데이터 항목에 대한 복잡한 검색을 지원한다. 예를 들어, 특정인의 사진과 이메일을 통해 연락처를 찾고 전화번호를 검색할 수 있다. WinFS는 XML 및 관계형 데이터 외에도 준구조화 및 비구조화 데이터도 지원하며, 관계형 데이터베이스를 사용하여 데이터를 관리한다. WinFS 런타임은 스키마를 관계형 모드로 매핑하고, 객체 및 XML 스키마에 대한 매핑을 기본 제공한다.[6] 관계 탐색은 테이블 조인으로 수행되며, WinFS는 인덱스를 자동 생성하여 빠른 정보 접근을 지원한다.[10]
WinFS는 SQL Server 2005[24] 기반 관계형 엔진을 사용하며, WinFS 저장소는 FILESTREAM 속성이 설정된 SQL Server 데이터베이스 파일(.MDF)이다.[25] 이 파일은 "System Volume Information" 폴더 아래 "WinFS" 폴더에 저장된다.[26]
WinFS 스택 하단에는 파일 시스템과 상호작용하는 ''WinFS Core''가 있다.[8] 관계형 엔진은 WinFS 코어 서비스를 활용하며, WinFS 런타임은 ''동기화'' 및 ''규칙'' 같은 ''서비스''를 제공한다.[8]
WinFS는 세 개의 프로세스를 실행하는 서비스로 실행된다.[27]
# ''WinFS.exe'': 관계형 데이터 저장소를 호스팅한다.
# ''WinFSSearch.exe'': 색인 및 쿼리 엔진을 호스팅한다.
# ''WinFPM.exe (WinFS 파일 승격 관리자)'': 기본 파일 시스템과 인터페이스한다.
.NET Framework API를 통해 프로그래밍 방식으로 기능에 접근할 수 있으며, 애플리케이션은 데이터 형식 및 관계 정의, 정보 저장 및 검색, 고급 검색을 수행할 수 있다.[6][8]
WinFS는 데이터를 ''저장소''라는 가상 위치에 저장하며, 이는 공통 저장소 역할을 한다.[13] WinFS 런타임은 특정 관계를 적용할 수 있다(예: 그림 제목과 연락처 이름이 같으면 연결).[28]
WinFS는 통합 저장소를 제공하지만, 데이터 저장 형식을 정의하지는 않는다. 애플리케이션은 파일 형식을 해석하는 스키마를 제공해야 한다.[6] 여러 WinFS 저장소를 생성하여 데이터를 분리 보관할 수 있으며, 기본 저장소는 "DefaultStore"이다.[13] WinFS 저장소는 가상 폴더와 유사한 셸 객체로 표시된다.[13]
WinFS 저장소에 저장되는 데이터 단위는 ''항목''이며, 데이터 항목과 다른 데이터와의 관계 정보를 포함한다.[6][29] ''관계''는 논리적 링크로 저장되며, 링크 식별자를 통해 관계의 이름과 의도를 지정한다.[6] WinFS에 저장될 데이터 항목 구조는 XML 스키마로 미리 제공되어야 한다.[6]
4. 1. 2. 데이터 모델
WinFS는 NTFS와 같은 일반적인 파일 시스템과는 다르게 '사진', '이메일', '문서' 등 다양한 유형의 데이터를 기본적으로 인식하며, WinFS 런타임이 인식하는 데이터 유형의 인스턴스로 저장하고 속성을 통해 구조화한다.[8] 예를 들어, '이력서' 유형은 '이름', '학력', '경력'과 같은 속성을 가지며, 각 속성은 단순 유형(문자열, 정수 등) 또는 복합 유형(연락처)일 수 있다.[8]WinFS는 서로 다른 데이터 인스턴스 간의 관계를 정의할 수 있는데, 예를 들어 문서와 연락처는 '작성자' 관계로 연결될 수 있다.[7] 이 관계는 속성으로 노출되어 문서의 '작성자' 속성을 통해 관계를 탐색하고 관련 데이터를 반환받을 수 있으며,[10] 이러한 관계를 통해 모든 관련 데이터에 접근할 수 있다.[7]
WinFS는 모든 애플리케이션이 데이터 유형과 스키마에 접근하여 데이터 공유를 용이하게 한다.[8] 애플리케이션은 스키마를 통해 데이터 구조를 파악하고 정보를 사용할 수 있어, 개발자는 서로 다른 데이터 형식을 인식하는 파서를 작성할 필요 없이 시스템의 모든 데이터에 접근할 수 있다. 또한, 관계 및 관련 데이터를 사용하여 동적 필터를 만들 수 있다.[6] WinFS API는 데이터 접근을 추상화하여 모든 WinFS 유형을 .NET 객체로 노출하며, 속성은 데이터 유형의 속성에 직접 매핑된다.[6]
WinFS는 동일한 데이터를 처리하는 여러 애플리케이션이 동일한 WinFS 데이터 인스턴스를 공유하도록 하여 데이터 중복을 줄이고 데이터 변경 시 동기화 문제를 해결한다.[11]
WinFS는 스키마화된 데이터(XML, 관계형 데이터) 외에도 준구조화 데이터(비구조화 비트스트림과 구조화된 메타데이터를 갖는 이미지 등)와 비구조화 데이터(파일)도 지원한다.[10] 비구조화 구성 요소는 파일로, 구조화된 메타데이터는 구조화된 저장소에 저장된다.[10]
WinFS는 내부적으로 관계형 데이터베이스를 사용하여 데이터를 관리하며, 데이터 모델에 제한을 두지 않는다. WinFS 런타임은 스키마를 관계형 모드로 매핑하여[6] 유형을 저장할 테이블과 관계를 나타내는 기본 키, 외부 키를 정의한다. WinFS는 객체 및 XML 스키마에 대한 매핑을 기본적으로 포함하며, 다른 스키마에 대한 매핑은 지정해야 한다. 객체 스키마는 XML로 지정되며, WinFS는 스키마를 .NET 클래스로 표시하는 코드를 생성한다. ADO.NET을 사용하여 관계형 스키마를 직접 지정할 수 있지만, 클래스로 표시하려면 객체 스키마에 대한 매핑을 제공해야 한다.[10]
관계 탐색은 이러한 테이블에 대한 조인으로 수행된다. WinFS는 테이블에 인덱스를 자동으로 생성하여 정보 접근 속도를 높인다.[10] 인덱싱은 조인 속도를 높여 관련 데이터 검색을 빠르게 수행하며, 정보 검색 및 쿼리에도 사용되어 데스크톱 검색 시스템과 유사하게 작업을 빠르게 완료한다.
WinFS는 데이터를 관계형 저장소에 저장하며, 이 저장소는 ''저장소''라는 가상 위치로 표시된다.[13] WinFS 저장소는 모든 애플리케이션이 메타데이터, 관계, 스키마와 함께 데이터를 저장할 수 있는 공통 저장소이다. WinFS 런타임은 특정 관계를 스스로 적용할 수 있는데, 예를 들어 그림의 ''제목'' 속성 값과 연락처의 ''이름'' 속성 값이 같으면 WinFS는 연락처와 그림을 연관시킬 수 있다.[28] 관계는 다른 애플리케이션이나 사용자가 지정할 수도 있다.[29]
WinFS는 통합 저장소를 제공하지만, 데이터 저장소에 저장될 형식을 정의하지는 않는다. 대신 애플리케이션별 형식으로 데이터를 쓰는 것을 지원하며, 애플리케이션은 파일 형식을 해석하는 방법을 정의하는 스키마를 제공해야 한다.[6] 예를 들어, 스키마를 추가하여 WinFS가 PDF 파일을 읽는 방법을 이해하고 검색 및 분석할 수 있도록 할 수 있다. 스키마를 통해 모든 애플리케이션은 다른 애플리케이션의 데이터를 읽을 수 있으며, 다른 애플리케이션이 스키마를 공유하여 서로의 형식으로 쓸 수도 있다.[29]
단일 시스템에 여러 WinFS 저장소를 만들 수 있다.[29] 이를 통해 다양한 종류의 데이터를 분리하여 보관할 수 있는데, 예를 들어 공식 문서와 개인 문서를 다른 저장소에 보관할 수 있다. WinFS는 기본적으로 "DefaultStore"라는 저장소 하나만 제공한다.[13] WinFS 저장소는 가상 폴더와 유사한 셸 객체로 표시되며, 저장소에 있는 모든 항목의 목록을 동적으로 생성하여 폴더 보기에 표시한다. 셸 객체를 통해 데이터 저장소의 정보를 검색할 수도 있다.[13]
WinFS 저장소에 저장해야 하는 데이터 단위를 WinFS ''항목''이라고 한다.[6][29] WinFS 항목에는 핵심 데이터 항목과 함께 데이터 항목이 다른 데이터와 어떻게 관련되는지에 대한 정보도 포함된다. 이 ''관계''는 논리적 링크로 저장되며, 현재 항목이 어떤 다른 데이터 항목과 관련되어 있는지 지정하고 데이터와 다른 데이터 항목 간의 관계를 나타낸다. 링크는 관계의 이름과 의도(예: ''유형'', ''구성'' 등)를 지정하는 링크 식별자를 사용하여 물리적으로 저장된다.[6] 링크 식별자는 데이터 항목의 속성으로 저장되며, 동일한 링크 ID를 가진 모든 객체는 서로 관련된 것으로 간주된다.[6] WinFS에 저장될 데이터 항목의 구조를 정의하는 XML 스키마를 WinFS 런타임에 미리 제공해야 한다.[6] WinFS 베타 1에서는 스키마 어셈블리를 GAC에 추가해야 사용할 수 있었다.
WinFS는 데이터 항목과 해당 항목 간의 관계, 확장 및 사용 규칙을 사용하여 데이터를 모델링한다.[8] WinFS는 데이터 항목의 유형과 구조를 이해해야 모든 애플리케이션에서 데이터 항목에 저장된 정보를 사용할 수 있기 때문에 스키마를 사용하며, WinFS에 저장할 모든 유형의 데이터 항목에 대해 해당 데이터 유형, 구조 및 연결을 정의하는 스키마를 제공해야 한다. 이러한 스키마는 XML을 사용하여 정의된다.[6]
미리 정의된 WinFS 스키마에는 문서, 이메일, 약속, 작업, 미디어, 오디오, 비디오에 대한 스키마가 포함되며, 구성, 프로그램 및 기타 시스템 관련 데이터를 포함하는 시스템 스키마도 포함된다.[8] 애플리케이션이 자체 데이터를 WinFS에 저장하려는 경우, 다른 애플리케이션과 해당 데이터의 구조를 공유하지 않거나 시스템 전체에서 사용할 수 있도록 하려는 경우 애플리케이션별로 사용자 지정 스키마를 정의할 수 있다.[8]
파일 시스템과 WinFS의 가장 큰 차이점은 WinFS가 저장하는 각 데이터 항목의 형식을 알고 있다는 것이며, 형식은 데이터 항목의 속성을 지정한다. WinFS 형식 시스템은 .NET Framework의 클래스와 상속 개념과 밀접하게 관련되어 있으며, 미리 정의된 형식을 확장하고 중첩하여 새 형식을 만들 수 있다.[6]
WinFS는 '항목', '관계', '스칼라 형식' 및 '중첩 형식'의 네 가지 미리 정의된 기본 형식을 제공한다.[6] 항목은 저장할 수 있는 기본 데이터 객체이며, 관계는 두 데이터 항목 간의 관계 또는 링크이다. 모든 WinFS 항목에는 형식이 있어야 하므로 저장된 항목의 형식이 해당 속성을 정의한다. 항목의 속성은 스칼라 형식(속성이 가질 수 있는 가장 작은 정보 단위를 정의)이거나, 둘 이상의 스칼라 형식 및/또는 중첩 형식의 컬렉션인 중첩 형식일 수 있다. 모든 WinFS 형식은 .NET CLR 클래스로 제공된다.[29]
연락처, 이미지, 비디오, 문서 등과 같이 데이터 단위로 표시되는 모든 개체는 항목 형식의 특수화로 WinFS 저장소에 저장할 수 있다.[29] 기본적으로 WinFS는 파일, 연락처, 문서, 그림, 오디오, 비디오, 캘린더 및 메시지에 대한 항목 형식을 제공한다. 파일 항목은 파일 시스템에 파일로 저장되는 모든 일반 데이터를 저장할 수 있지만, 특수화된 항목이 되도록 정의하여 고급 스키마를 제공하지 않는 한 WinFS는 해당 데이터에 액세스할 수 없다. 이러한 파일 항목은 다른 항목과의 관계만 지원할 수 있다.[6]
개발자는 이러한 형식 또는 기본 형식 항목을 확장하여 사용자 지정 데이터에 대한 형식을 제공할 수 있다. 항목에 포함된 데이터는 실제 데이터를 보유하는 속성 또는 필드 측면에서 정의된다. 예를 들어, '연락처' 항목에는 스칼라 형식인 '이름' 필드와 두 개의 스칼라 형식으로 구성된 중첩 형식인 '주소' 필드가 있을 수 있다. 이 형식을 정의하려면 기본 클래스 항목을 확장하고 필요한 필드를 클래스에 추가한다.[6] 중첩 형식 필드는 두 스칼라 형식 필드를 포함하는 다른 클래스로 정의할 수 있다. 형식이 정의되면 각 필드의 기본 형식을 나타내는 스키마를 정의해야 하는데, 예를 들어 이름 필드는 문자열이고, 주소 필드는 사용자 정의 주소 클래스이며, 두 필드 모두 문자열이다. WinFS가 지원하는 다른 기본 형식은 정수, 바이트, 십진수, 부동 소수점, 배정밀도, 부울 및 DateTime 등이 있다.[6] 스키마는 또한 필수 필드와 선택적 필드를 정의한다.[30] 이렇게 정의된 연락처 항목은 속성 필드를 채우고 저장하여 연락처에 대한 정보를 저장하는 데 사용된다. 초기 저장 중에는 필수로 표시된 필드만 채워야 한다.[29] 다른 필드는 나중에 사용자가 채우거나 전혀 채우지 않을 수 있다. '마지막 대화 날짜'와 같은 더 많은 속성 필드를 추가해야 하는 경우 이 형식을 확장하여 수용할 수 있다. 다른 데이터에 대한 항목 형식은 비슷하게 정의할 수 있다.
WinFS는 정의된 모든 항목에 대한 테이블을 만든다.[30] 항목에 대해 정의된 모든 필드는 테이블의 열을 형성하고 항목의 모든 인스턴스는 해당 항목에 대한 테이블의 행으로 저장된다. 테이블의 일부 필드가 다른 테이블의 데이터를 참조할 때 관계로 간주된다. 관계의 스키마는 어떤 테이블이 포함되어 있고 관계의 종류와 이름이 무엇인지 지정한다. WinFS 런타임은 관계 스키마를 관리한다.[29] 모든 항목은 필드에 저장된 데이터에 액세스할 수 있는 통일된 인터페이스를 사용하여 .NET CLR 객체로 노출된다. 따라서 모든 애플리케이션은 모든 항목 형식의 개체를 검색하고 데이터가 저장된 물리적 구조를 알지 못해도 개체의 데이터를 사용할 수 있다.[6]
WinFS 형식은 .NET 클래스로 노출되며 .NET 개체로 인스턴스화할 수 있다. 데이터는 해당 속성을 설정하여 이러한 형식 인스턴스에 저장된다. 완료되면 WinFS 저장소에 저장된다. WinFS 저장소는 ''ItemContext'' 클래스를 사용하여 액세스한다(데이터 검색 섹션 참조). ItemContext는 WinFS 저장소에 대한 트랜잭션 액세스를 허용한다. 즉, ItemContext 개체를 저장소에 바인딩한 이후 닫을 때까지의 모든 작업은 모두 성공하거나 모두 롤백된다. 데이터가 변경되면 디스크에 기록되지 않고 메모리 내 로그에 기록된다. 연결이 닫히면 변경 사항이 일괄적으로 디스크에 기록된다. 이렇게 하면 디스크 I/O를 최적화하는 데 도움이 된다.[10]
C# 코드 예시는 다음과 같다.
// 기본 WinFS 저장소에 연결
using(ItemContext ic = ItemContext.Open())
{
// 연락처를 만들고 적절한 속성에 데이터를 설정합니다.
ContactEAddress contact = new ContactEAddress() {
Name = new PersonName() { // Name은 복합 형식입니다.
Displayname = "Doe, John",
FirstName = "John",
LastName = "Doe"
},
TelephoneNumber = new TelephoneNumber() { // 전화번호는 복합 형식입니다.
Country = CountryCode.Antarctica,
Areacode = 4567,
Number = 9876543210
},
Age = 111 // Age는 단순 형식입니다.
};
// 사용자의 개인 폴더에 개체를 추가합니다.
// 이것은 이전과의 호환성을 위해 폴더 의사 형식과 항목을 관련짓습니다.
// 이렇게 하면 WinFS 기본이 아닌 앱에서 폴더 계층 구조로 항목에 액세스할 수 있습니다.
Folder containingFolder = UserDataFolder.FindMyPersonalFolder();
containingFolder.OutFolderMemberRelationship.AddItem(ic, contact);
// 문서를 찾아 문서와 관련짓습니다. 검색은 ItemSearcher 개체를 만들어 시작합니다.
// 각 WinFS 형식 개체에는 해당 형식의 문서를 검색하는 ItemSearcher 개체를 생성하는 GetSearcher() 메서드가 포함되어 있습니다.
using (ItemSearcher searcher = Document.GetSearcher(ic))
{
Document d = searcher.Find(@"Title = 'Some Particular Document'");
d.OutAuthoringRelationship.AddItem(ic, contact);
}
// 하나의 문서만 찾을 것이므로 ItemContext.FindOne() 메서드를 사용할 수도 있습니다.
// 그림을 찾아 관련짓습니다.
using (ItemSearcher searcher = Picture.GetSearcher(ic))
{
Picture p = searcher.Find(@"Occasion = 'Graduation' and Sequence = '3'");
p.OutSubjectRelationship.AddItem(ic, contact);
}
// 저장소에 저장하고 저장소에 대한 참조를 닫습니다.
ic.Update();
}
데이터는 하나 이상의 항목과 관계를 가질 수 있으며, 이는 일대일 관계 또는 일대다 관계를 생성한다.[6] 관련 항목은 다른 데이터 항목과도 관련될 수 있으며, 이는 다대다 관계라고 하는 관계 네트워크를 만든다. 두 항목 간의 관계를 생성하면 관련 객체가 저장된 다른 항목 테이블의 행을 참조하는 해당 항목 데이터에 다른 필드가 생성된다.[29]
WinFS에서 관계는 기본 관계형의 인스턴스이며, 관계의 특수화를 나타내도록 확장된다. 관계는 두 항목(원본 및 대상) 간의 매핑이다. 원본은 나가는 관계를 가지며, 대상은 들어오는 관계를 갖는다.[30] WinFS는 보유 관계, 참조 관계 및 포함 관계의 세 가지 유형의 기본 관계를 제공한다.[6] 두 데이터 유형 간의 모든 사용자 지정 관계는 이러한 관계 유형의 인스턴스이다.
- '''보유 관계'''는 대상 항목의 소유권과 수명(관계가 유효한 기간)을 지정한다. 예를 들어, 폴더와 파일 간의 관계, 그리고 직원과 급여 기록 간의 관계는 보유 관계이다. 후자는 전자가 제거될 때 제거된다. 대상 항목은 둘 이상의 보유 관계의 일부가 될 수 있으며, 이러한 경우 모든 원본 항목이 제거될 때 제거된다.
- '''참조 관계'''는 두 항목 간의 연결을 제공하지만, 수명이 연결되어 있지 않다. 즉, 각 항목은 다른 항목이 없어도 계속 저장된다.
- '''포함 관계'''는 부모 항목과 자식 항목 간의 관계와 같이 관계로 연결된 두 항목에 순서를 부여한다.
두 항목 간의 관계는 데이터를 생성하는 애플리케이션에서 프로그래밍 방식으로 설정하거나, 사용자가 WinFS 항목 브라우저를 사용하여 수동으로 항목을 관련시킬 수 있다.[30] WinFS 항목 브라우저는 항목과 항목 간의 관계를 그래픽으로 표시하여 사용자가 데이터가 어떻게 구성되어 있는지 알 수 있도록 한다.[29]
5. 데이터 검색
WinFS는 다양한 유형의 데이터를 기본적으로 인식하며, 시스템에 의해 저장 및 관리되는 데이터는 WinFS 런타임에 의해 인식되는 데이터 유형의 인스턴스이다. 데이터는 속성을 통해 구조화되고, 서로 다른 데이터 유형은 다른 속성을 노출한다. WinFS는 서로 다른 데이터 인스턴스가 서로 관련될 수 있도록 허용하며, 관계 또한 속성으로 노출된다.[7][10] 이를 통해 애플리케이션 간 데이터 공유를 촉진한다.[8]
WinFS API는 데이터 접근을 추상화하여, 모든 WinFS 유형을 .NET 객체로 노출한다. 객체의 속성은 데이터 유형의 속성에 직접 매핑된다.[6] 또한 동일한 데이터를 처리하는 서로 다른 애플리케이션이 동일한 WinFS 데이터 인스턴스를 공유하도록 하여 데이터 변경 시 여러 저장소를 동기화할 필요성을 줄이고 중복성을 최소화한다.[11][6][9]
WinFS는 관리하는 모든 데이터 항목에 걸쳐 복잡한 검색을 지원한다. 예를 들어, 모든 사진의 '제목' 관계를 탐색하여 '연락처' 항목을 찾거나, 지난 달의 모든 이메일을 필터링하고 '통신한' 관계에 접근하여 연락처를 찾은 후, 두 결과 집합에서 공통 연락처를 파악하고 연락처 항목의 속성에 접근하여 전화번호를 검색할 수 있다.
내부적으로 WinFS는 관계형 데이터베이스를 사용하여 데이터를 관리하고, 스키마를 관계형 모드로 매핑[6]하여 테이블과 관계를 정의한다. 또한 인덱스를 자동 생성하여 빠른 정보 접근을 지원한다.[10]
WinFS 저장소에서 데이터를 검색하는 기본적인 방법은 특정 기준에 따라 쿼리하는 것이며,[8] 쿼리 기준은 OPath 쿼리 언어를 사용하여 지정된다. 반환되는 데이터는 .NET 객체 모델을 준수하는 형식 스키마의 인스턴스로 제공된다.[32]
WinFS는 위치가 아닌 설명을 사용하여 데이터에 접근할 수 있도록 하여, 최종 사용자에게 파일 시스템의 계층적 구성에 얽매이지 않는 구성 기능을 제공한다. 레거시 호환성을 위해 'Folder'라는 의사 유형을 제공하여 파일/폴더 구성을 에뮬레이트하며, 항목은 실제 데이터를 복제하지 않고도 여러 폴더에 존재할 수 있다.[10]
WinFS는 파일 시스템 자체가 검색 기능을 가지고 있어 다양한 유형의 데이터를 즉시 추출할 수 있었으며, 각 파일의 속성을 나타내는 메타데이터를 관리하여 파일 시스템 자체가 개별 파일의 의미와 속성을 파악할 수 있었다. 예를 들어, Outlook에서 입력한 일정이나 메모 내용을 설날 인사말 카드 인쇄 소프트웨어에서 사용하는 것이 가능했으며, 개발자의 부담을 줄이고 사용자의 편의성을 크게 향상시킬 것으로 기대되었다.
5. 1. 검색
기존의 파일 시스템들은 파일 및 기타 개체를 바이트 스트림으로만 저장하고, 파일에 저장된 데이터에 대한 정보는 거의 가지고 있지 않다. 이러한 파일 시스템은 디렉터리와 파일 이름을 통해서만 파일을 구성한다.[6][7] 파일 시스템이 저장하는 데이터에 대해 알지 못하기 때문에,[6] 응용 프로그램은 종종 자체적인 독점적인 파일 형식을 사용하며, 이는 여러 응용 프로그램 간의 데이터 공유를 어렵게 만든다.[8]기존의 파일 시스템은 파일 이름을 기반으로만 데이터를 검색할 수 있다.[8] 이를 개선하기 위해 파일을 설명하는 특성으로 태그를 지정할 수 있다. 특성은 파일의 메타데이터이며, 파일 유형 등의 정보를 포함한다.[6] 데스크톱 검색 응용 프로그램은 파일에서 특성을 포함한 데이터를 추출하여 색인을 만들고, 파일의 특성과 파일의 데이터를 모두 기반으로 검색할 수 있게 한다.[6]
WinFS는 다양한 유형의 데이터를 기본적으로 인식한다. 시스템에 의해 저장 및 관리되는 데이터는 WinFS 런타임에 의해 인식되는 데이터 유형의 인스턴스이며, 데이터는 속성을 통해 구조화된다. 다른 데이터 유형은 다른 속성을 노출하며, WinFS는 서로 다른 데이터 인스턴스가 서로 관련될 수 있도록 허용한다. 관계 또한 속성으로 노출된다.[7][10] WinFS는 모든 애플리케이션이 해당 스키마와 함께 데이터 유형에 액세스할 수 있도록 함으로써 애플리케이션 간의 데이터 공유를 촉진한다.[8]
WinFS API는 데이터 액세스 작업을 추상화한다. 모든 WinFS 유형은 .NET 객체로 노출되며, 객체의 속성이 데이터 유형의 속성에 직접 매핑된다.[6] 또한, 동일한 데이터를 처리하는 서로 다른 애플리케이션이 동일한 WinFS 데이터 인스턴스를 공유하도록 함으로써 데이터가 변경될 때 서로 다른 저장소를 동기화하는 번거로움을 없애고 중복성을 줄일 수 있다.[11][6][9]
WinFS는 관리하는 모든 데이터 항목에 걸쳐 데이터에 대한 복잡한 검색을 지원한다. 예를 들어, WinFS는 모든 사진의 '제목' 관계를 탐색하여 '연락처' 항목을 찾거나, 지난 달의 모든 이메일을 필터링하고 '통신한' 관계에 액세스하여 연락처에 접근할 수 있다. 그런 다음 두 결과 집합에서 공통 연락처를 파악하고 연락처 항목의 적절한 속성에 액세스하여 전화번호를 검색할 수 있다.
WinFS는 준구조화 데이터와 비구조화 데이터도 지원한다. 비구조화 구성 요소는 파일로 저장하고 구조화된 메타데이터는 구조화된 저장소에 저장한다.[10] 내부적으로 WinFS는 데이터를 관리하기 위해 관계형 데이터베이스를 사용하며, 스키마를 관계형 모드로 매핑[6]하여 유형을 저장할 테이블과 관계를 나타내는 데 필요한 기본 키 및 외부 키를 정의한다. WinFS는 이러한 테이블에 인덱스를 자동으로 생성하여 정보에 대한 빠른 액세스를 가능하게 한다.[10]
WinFS 저장소에서 데이터를 검색하는 기본 방식은 특정 기준에 따라 WinFS 저장소를 쿼리하는 것이다.[8] 쿼리 기준은 OPath 쿼리 언어를 사용하여 지정된다. 반환된 데이터는 .NET 객체 모델을 준수하는 형식 스키마의 인스턴스로 제공된다.[32]
데이터에 위치가 아닌 설명을 사용하여 접근할 수 있다는 사실은 최종 사용자에게 파일 시스템의 계층적 구성에 얽매이지 않는 구성 기능을 제공한다. WinFS 항목은 임의의 수의 보관 관계에 참여할 수 있다. 레거시 호환성을 위해 WinFS에는 ''Folder''라는 의사 유형이 포함되어 있으며, 파일/폴더 구성을 에뮬레이트하는 데만 사용된다. 모든 WinFS 항목은 둘 이상의 Folder 항목과 관련될 수 있으므로, 최종 사용자 관점에서 항목은 실제 데이터를 복제하지 않고도 여러 폴더에 있을 수 있다.[10]
WinFS API는 WinFS 저장소에 바인딩되는 `ItemContext` 클래스를 제공한다. `ItemContext` 객체는 검색 범위를 지정하고, 저장소에 대한 트랜잭션 접근을 제공한다.[15] 이 클래스의 객체는 `ItemSearcher` 객체를 생성할 수 있으며, 검색할 항목의 유형 또는 관계와 검색 기준을 나타내는 OPath 쿼리 문자열을 사용한다.[30][33]
OPath 쿼리 문자열을 사용하면 항목 속성, 포함된 항목 및 관계를 사용하여 쿼리할 매개변수를 지정할 수 있다. `"title = Something"`과 같은 단일 검색 조건이나 `"title = 'Title 1' || title = 'Title 2' && author = 'Someone'"`과 같은 복합 조건을 지정할 수 있다. `&&`, `||`, `=`, `!=`과 같은 C# 연산자와 `EQUAL`, `NOT EQUAL`과 같은 영어와 유사한 동등어를 사용하여 부울 및 관계 연산을 지정할 수 있다. `LIKE`, `GROUP BY`, `ORDER BY`와 같은 SQL과 유사한 연산자와 와일드카드 조건도 지원된다.
WinFS는 파일 시스템 자체가 검색 기능을 가지고 있어 다양한 유형의 데이터를 즉시 추출할 수 있다. 또한 각 파일의 속성을 나타내는 메타데이터를 관리함으로써 파일 시스템 자체가 개별 파일의 의미와 속성을 파악할 수 있었다.
WinFS 기능을 이용하면, 예를 들어 Outlook에서 입력한 일정이나 메모 내용을 설날 인사말 카드 인쇄 소프트웨어에서 사용하는 것이 가능하다. 이때, 설날 인사말 카드 인쇄 소프트웨어에서 "지난 1년 동안 회의를 가진 상대방의 주소"를 지정하면, 자동으로 해당 인물의 주소만 추려내는 동작을 구현할 수 있었다. 개발자의 부담은 줄어들고 사용자의 편의성은 크게 향상될 것으로 기대되었다.
5. 2. OPath
WinFS 저장소에서 데이터를 검색하는 기본적인 방법은 특정 기준에 따라 WinFS 저장소를 쿼리하는 것이다.[8] 쿼리 기준은 OPath 쿼리 언어를 사용하여 지정된다.OPath 쿼리 문자열을 사용하면 항목 속성, 포함된 항목 및 관계를 사용하여 쿼리할 매개변수를 지정할 수 있다. `"title = Something"`과 같은 단일 검색 조건이나 `"title = 'Title 1' || title = 'Title 2' && author = 'Someone'"`과 같은 복합 조건을 지정할 수 있다. `&&`, `||`, `=`, `!=`과 같은 C# 연산자와 `EQUAL`, `NOT EQUAL`과 같은 영어와 유사한 동등어를 사용하여 부울 및 관계 연산을 지정할 수 있다. `LIKE`, `GROUP BY`, `ORDER BY`와 같은 SQL과 유사한 연산자와 와일드카드 조건도 지원된다. 따라서 `"title LIKE 'any*'"`은 유효한 쿼리 문자열이다.
다음은 복잡한 검색의 예시를 보여주는 코드이다.
using (ItemContext ic = ItemContext.Open())
{
// 검색은 ItemSearcher 객체를 생성하여 시작합니다. 검색자는 관계 인스턴스에서 생성되는데,
// 검색 중인 연락처가 관계에 있기 때문입니다. 첫 번째 매개변수는 검색 범위를 정의합니다.
// ItemContext를 범위로 지정하면 전체 저장소를 검색합니다. 범위는 연락처와 보유 관계에 있는 항목 집합으로 제한할 수 있습니다.
// 이 경우 집합이 검색 범위로 전달됩니다.
ItemSearcher searcher = OutContactRelationship.GetTargetSearcher(ic, typeof(Contact));
ContactCollection contacts = searcher.FindAll("OutContactRelationship.Contact.Name LIKE 'A*'");
}
위 코드는 그림과 연락처를 연결하는 `OutContactRelationship` 인스턴스에서 검색하는 `ItemSearcher` 객체를 생성하여, 연락처와 관련된 모든 그림을 검색한다. 그런 다음 `OutContactRelationship`을 통해 도달할 수 있는 모든 연락처에 대해 `"Name LIKE 'A*'"` 쿼리를 실행하여 "이름이 A로 시작하고 그림을 가지고 있는 연락처" 목록을 반환한다. 이와 같이 더 많은 관계를 고려하여 결과를 더욱 좁힐 수 있다.[10][30]
다른 관계는 다른 데이터 집합을 지정한다. 따라서 여러 관계를 포함하는 검색이 수행되면 다른 데이터 집합이 개별적으로 검색되고 다른 집합의 합집합이 계산된다. 결과 집합에는 모든 관계에 해당하는 데이터 항목만 포함된다.[30]
WinFS 베타 1에는 ''OPather''라는 지원되지 않는 애플리케이션도 포함되어 있었다.[39] 이 애플리케이션은 OPath 쿼리를 작성하기 위한 그래픽 사용자 인터페이스를 제공한다.
5. 3. 알림
WinFS는 자주 변경되는 데이터를 처리하기 위한 향상된 지원 기능을 포함한다. WinFS의 알림을 사용하면, 애플리케이션은 선택한 데이터 항목(Items)의 변경 사항을 알리는 알림을 받도록 선택할 수 있다. 구독한 항목이 변경되면 WinFS는 .NET 이벤트 모델을 사용하여 ItemChangedEvent를 발생시키고, 이벤트는 애플리케이션에 게시된다.[30]5. 4. 정보 에이전트
WinFS는 정보 에이전트 기능을 포함하여 데이터 저장소 항목 변경에 대한 최종 사용자 알림 규칙 및 기본 설정을 관리, 검색, 저장할 수 있도록 지원한다. 정보 에이전트를 사용하면 약속과 같은 이벤트를 기반으로 새 항목에 대한 관계를 자동으로 정의할 수 있다. 예를 들어, 약속은 사진이 촬영된 날짜를 기반으로 사진과 관련될 수 있으므로, 실제 날짜를 알 필요 없이 생일이나 휴일 관련 질의("이 생일에 찍은 모든 사진을 찾아라")가 가능하다. 다른 예로는 약속 시간 및 사진 촬영 날짜에 따라 결정된 규칙에 따라 새 항목을 특정 폴더로 자동 이동하는 것("비즈니스 이벤트 중에 촬영한 사진을 가져오면 비즈니스 이벤트 폴더로 이동")이나, 더 복잡하게는 다른 장치로 알림을 전달하는 것("상사로부터 중요도가 높은 이메일을 받으면 휴대전화로 알림을 보내라") 등이 있다. 이는 Microsoft Outlook의 규칙 및 알림 기능과 유사하다.6. 데이터 공유
WinFS는 응용 프로그램 간, 그리고 서로 다른 컴퓨터에 있는 여러 WinFS 저장소 간에 데이터를 쉽게 공유하고 복사할 수 있도록 한다.[34] WinFS 항목을 비 WinFS 파일 시스템에 복사할 수도 있지만, 해당 데이터 항목을 WinFS 저장소에 다시 넣지 않는 한 WinFS에서 제공하는 고급 서비스는 지원되지 않는다.
WinFS API는 비 WinFS 응용 프로그램과의 공유도 일부 지원한다. WinFS는 WinFS 저장소에 접근하기 위한 셸 개체를 노출한다. 이 개체는 WinFS 항목을 가상 폴더 계층 구조에 매핑하여 모든 응용 프로그램에서 접근할 수 있게 한다.[13] 가상 폴더는 쿼리에서 참조하는 새 콘텐츠를 사용자와 자동으로 공유할 수 있다. 예를 들어 "모든 휴가 사진"에 대한 가상 폴더는 이 쿼리에서 반환되는 새 항목을 사용자와 자동으로 공유할 수 있다. WinFS 데이터는 네트워크 공유를 사용하여 레거시 셸 개체를 공유하여 수동으로 공유할 수도 있다.[34] WinFS에서 제공하는 파일 항목을 사용하면 비 WinFS 파일 형식을 WinFS 저장소에 저장할 수 있다. 특정 파일 형식을 WinFS 항목 유형으로 변환하기 위해 가져오기를 작성할 수 있다.[34]
또한 WinFS는 "사진만 공유" 또는 "연락처 X와 연결된 사진 공유"와 같이 미리 정의된 조건에 따라 두 개 이상의 WinFS 저장소에 있는 항목을 자동으로 동기화하는 서비스를 제공한다.[34] 저장소는 서로 다른 컴퓨터에 있을 수 있다. 동기화는 피어 투 피어 방식으로 수행되며 중앙 권한은 없다. 동기화는 수동, 자동 또는 예약된 방식으로 수행할 수 있다. 동기화 중에 WinFS는 새 항목과 수정된 항목을 찾아서 업데이트한다. 두 개 이상의 변경 사항이 충돌하는 경우 WinFS는 미리 정의된 규칙에 따라 자동으로 해결하거나 수동 해결을 위해 동기화를 연기할 수 있다. 필요한 경우 WinFS는 스키마도 업데이트한다.[34]
7. 응용 프로그램 지원
WinFS는 마이크로소프트의 SQL Server 2005 기반 엔진인 Yukon(개발 코드명) 기술을 바탕으로 한 파일 시스템이다. 단순한 파일 및 폴더 관리를 넘어, 파일 시스템 자체가 검색 기능을 갖추고 있어 다양한 유형의 데이터를 즉시 추출할 수 있었다. WinFS는 각 파일의 속성을 나타내는 메타데이터를 관리하여, 파일 시스템 자체가 개별 파일의 의미와 속성을 파악할 수 있었다.
이러한 기능을 통해 개별 파일의 다양한 정보를 OS 서비스로서 API를 통해 각 애플리케이션에 제공할 수 있었다. 예를 들어, Outlook에 입력된 일정이나 메모 내용을 설날 인사말 카드 인쇄 소프트웨어에서 사용하는 것이 가능했다. 설날 인사말 카드 인쇄 소프트웨어에서 "지난 1년 동안 회의를 가진 상대방의 주소"를 지정하면, 자동으로 해당 인물의 주소만 추려내는 동작을 구현할 수 있었다.
클라이언트 측(설날 인사말 카드 소프트웨어)에서 별도 구현 없이 WinFS API를 호출하면 서버 측(Outlook) 데이터 형식을 신경 쓰지 않고도 위와 같은 동작을 구현할 수 있었다. 이는 개발자 부담을 줄이고 사용자 편의성을 크게 향상시킬 것으로 기대되었다. 이러한 기능은 문서뿐만 아니라 이미지, 영상 등 모든 데이터 파일에 적용될 수 있었지만, 애플리케이션 측에서 WinFS를 완벽하게 지원해야 했다.
WinFS는 다양한 데이터 파일을 처리하기 위한 메타데이터 템플릿을 규정했으며, 문서, 주소록, 일정표, 이미지, 디지털 카메라 사진, 음악, 영상 등 주요 용도에 맞는 템플릿이 준비되어 있었다. 또한, 이 템플릿에는 XML 기술이 사용되어 서드파티가 나중에 확장하거나 새로운 템플릿을 만들 수 있었다. 메타데이터 생성은 기본적으로 데이터 생성 시 애플리케이션 측에서 수행되었으며, 사용자는 메타데이터를 특별히 인식할 필요가 없었다.
7. 1. 셸 네임스페이스
WinFS 베타 1에는 셸 네임스페이스 확장 기능이 포함되어 있어, WinFS 저장소를 '내 컴퓨터' 보기의 최상위 개체로 표시한다.[13] 파일을 저장소에 복사하거나 저장소에서 복사할 수 있으며, 애플리케이션을 사용하여 직접 저장할 수도 있다. '내 문서'와 같은 폴더도 저장소로 리디렉션할 수 있다.[13] WinFS는 '임포터' 플러그인을 사용하여 파일이 저장소에 들어오는 동안 파일을 분석하고 적절한 WinFS 스키마와 개체를 생성하며, 개체를 가져올 때 파일로 다시 패키징한다.[34] 특정 파일의 임포터가 설치되어 있지 않으면 일반 '파일' 형식으로 저장된다.7. 2. Microsoft Rave
Microsoft Rave는 WinFS 베타 1과 함께 제공된 애플리케이션이다. 두 개 이상의 WinFS 저장소 동기화를 허용하며, '전체 메시(full mesh)' 모드와 '중앙 허브(central hub)' 토폴로지 모두를 지원한다. 동기화하는 동안 Microsoft Rave는 마지막 동기화 이후 각 저장소에 대한 변경 사항을 확인하고 그에 따라 업데이트한다. 변경 사항을 적용할 때 마지막 동기화 이후 두 저장소 모두에서 동일한 데이터가 변경되었는지(즉, 충돌이 있는지)도 감지한다. 충돌하는 데이터는 나중에 해결하기 위해 로그에 기록하거나 즉시 해결한다. Microsoft Rave는 피어 투 피어(peer-to-peer) 기술을 사용하여 통신하고 데이터를 전송한다.7. 3. StoreSpy

마이크로소프트는 WinFS 베타 1과 함께 ''StoreSpy''라는 지원되지 않는 애플리케이션을 포함했다.[35] 이 애플리케이션은 WinFS 저장소를 탐색할 수 있게 해주는 WinFS 항목의 계층적 보기를 제공했다. 접근 권한, 날짜 및 기타 메타데이터를 기반으로 가상 폴더를 자동으로 생성하고, 기존 폴더가 표시되는 것과 유사한 계층적 트리 보기에 표시했다. 이 애플리케이션은 다양한 항목 유형에 대한 탭을 생성했다. StoreSpy를 사용하면 저장소에 있는 ''항목'', ''관계'', ''다중 집합'', ''중첩 요소'', ''확장''[36] 및 기타 유형과 전체 메타데이터를 볼 수 있었다. 또한 수동 검색을 수행하고 가상 폴더로 저장할 수 있는 검색 인터페이스를 제공했다. 이 애플리케이션은 WinFS 규칙의 그래픽 보기도 제공했다. 그러나 항목이나 해당 속성을 편집할 수는 없었지만, 향후 릴리스에 포함될 예정이었다.[37] 하지만 WinFS 프로젝트는 실현되기 전에 축소되었다.
7. 4. 형식 브라우저
WinFS에는 ''WinFS 형식 브라우저''라는 응용 프로그램이 포함되어 있는데, 이를 사용하여 WinFS 형식을 탐색하고 WinFS 형식 간의 계층적 관계를 시각화할 수 있다.[38] 기본 제공 형식과 사용자 지정 스키마를 모두 시각화할 수 있으며, WinFS 형식을 지원하는 모든 속성과 메서드도 볼 수 있다. 또한 해당 형식이 파생된 형식과 형식 스키마를 확장하는 다른 형식도 표시한다. 그러나 WinFS에는 포함되었지만 지원되지 않는 도구로 출시되었다.[38]7. 5. OPather
WinFS 베타 1에는 'OPather'라는 지원되지 않는 애플리케이션도 포함되어 있다.[39] 이 애플리케이션은 OPath 쿼리를 작성하기 위한 그래픽 사용자 인터페이스를 제공한다. 대상 객체 유형을 선택하고 쿼리 매개변수를 지정하여 사용할 수 있다. 또한 IntelliSense와 유사한 매개변수 자동 완성 기능도 포함되어 있다. 이를 사용하여 쿼리 결과를 'DataGrid' 컨트롤에 바인딩하는 등의 시각화 작업을 수행하거나, WinFS 자체에서 데이터 뷰를 만들거나, 쿼리 문자열을 추출하는 데 사용할 수 있다.7. 6. Project "Orange"
마이크로소프트는 WinFS를 위한 데이터 시각화 애플리케이션을 구축하는 프로젝트를 시작했다. 이 프로젝트는 "Project Orange"(프로젝트 오렌지)라는 코드명으로, WPF을 사용하여 개발되었다고 알려져 있다.[40] 이 애플리케이션은 WinFS 저장소에 저장된 "항목"을 탐색할 수 있도록 하고, 데이터 관계가 탐색 모델의 중요한 부분이 될 예정이었다. 또한 사용자가 WinFS 저장소를 그래픽적으로 구성할 수 있도록 하는 기능도 포함될 예정이었으며, https://web.archive.org/web/20060602015536/http://download.microsoft.com/download/c/e/2/ce28874c-4f44-4dbd-babb-727685e2be96/WinFS_IWish_720x486_2mbs.wmv IWish Concept Video WMV File에서 보여준 많은 개념들을 제품화하려고 했다. 그러나 WinFS 프로젝트가 중단됨에 따라 이 프로젝트의 현황은 알 수 없다.8. 개발 중단
WinFS는 롱혼의 기술로 계획되었으나 차기 버전의 윈도로 계획이 이전되었다. 마이크로소프트는 롱혼을 출시하면서 WinFS를 서비스팩 1에 포함시킬 가능성이 크다고 언급하였으나, 이 계획은 보류되었다. 마이크로소프트의 CEO 스티브 발머는 이 기술이 어떻게 전달될지에 대해서는 뚜렷하지 않으나, WinFS는 아직도 개발 중이라고 언급하였다.[42] 그러나 현재 이 파일 시스템의 개발은 중단되었다.[43]
WinFS 개발은 1990년대 초에 처음 계획되었던 기능의 확장이다. "객체 파일 시스템"(Object File System)이라고 불린 이 기능은 카이로의 일부로 포함될 예정이었지만,[13] 카이로 프로젝트가 중단되면서 OFS도 함께 중단되었다.
이 개념은 폐기되지 않았고 WinFS의 기반이 되었다.[13] WinFS는 처음에 윈도우 비스타에 포함될 예정이었고,[14] 당시 코드명 "Longhorn"이었던 Windows Vista 빌드 4051은 2003년 Microsoft 전문 개발자 컨퍼런스에서 개발자들에게 제공되었는데, 성능 문제로 어려움을 겪었다.[13] 2004년 8월, Microsoft는 WinFS가 Windows Vista와 함께 출시되지 않고 Vista 출시 후 다운로드 가능한 업데이트로 제공될 것이라고 발표했다.[13]
2005년 8월 29일,[13] Microsoft는 조용히 WinFS 베타 1을 MSDN 구독자에게 제공했다. 이는 Windows XP에서 작동했으며 실행하려면 .NET Framework이 필요했다. WinFS API는 ''System.Storage'' 네임스페이스에 포함되었다.[15] 베타 버전은 2005년 12월 1일에 .NET Framework 버전 2.0과 호환되도록 업데이트되었다.[16] WinFS 베타 2는 2006년 후반에 계획되었고,[17] Windows 바탕 화면 검색과 통합되어 검색 결과에 일반 파일과 WinFS 저장소의 결과가 모두 포함되고 ADO.NET을 사용하여 WinFS 데이터에 액세스할 수 있도록 할 예정이었다.[18]
2006년 6월 23일, Microsoft의 WinFS 팀은 WinFS가 별도의 제품으로 제공되지 않을 것이라고 발표했으며,[4][19] 일부 구성 요소는 다른 기술의 범주로 통합될 것이라고 밝혔다.
이 기술의 사용 사례로는 객체 관계 매핑 구성 요소를 ADO.NET Entity Framework로 통합하는 것, 비정형 데이터 지원, 관리자 모드 없는 작동, FILESTREAM 데이터 유형을 통한 파일 시스템 객체 지원, SQL Server 2008 (당시 코드명 "Katmai")의 계층적 데이터, Win32 API 및 Windows 셸과의 통합, Microsoft SQL Server의 이후 릴리스에서 관계를 탐색하여 계층 구조를 탐색하는 지원 등이 있으며,[5] Microsoft Sync Framework로 동기화 구성 요소를 통합하는 것이다.[5]
WinFS는 Windows 상에 존재하는 모든 파일을 통합적으로 관리하는 데이터베이스 엔진으로, NT 파일 시스템 위에 구축되는 서비스 중 하나였다. 초기에는 완전히 새로운 파일 시스템으로 구현될 계획이었으나, 이후 NTFS 위에 구축되는 데이터베이스 엔진으로 변경되었다. 그러나 개발의 난항으로 인해 결국 중단되었다.
WinFS 기술의 기원은 1990년대 중반, Windows NT 4로 계획되었던 카이로 프로젝트로 거슬러 올라간다. 카이로 프로젝트는 컴퓨터의 OS 자체를 객체화하여 모든 데이터를 객체 지향 방식으로 처리할 수 있는 OS를 완성한다는 매우 야심찬 계획이었지만, 너무나도 웅대한 구상이었기에 중단되었다. 이후 파일 정보를 객체 지향 기술로 처리하려는 프로젝트는 마이크로소프트 사내에서 여러 차례 진행되었지만, 매번 중단을 겪었다. 빌 게이츠는 이 기술을 "정보 기술의 성배"라고 부르며 오랜 세월 최종 목표로 삼았지만, 아직까지 실현되지 못했다. WinFS 개발을 통해 마침내 이 기술의 실용화가 실현될 것으로 기대되었으나, 2006년6월 23일 개발 중단이 결정되었다.
중단 당시, WinFS 엔진은 베타 단계에 있었고 기술 미리 보기 버전이 개발자를 위해 공개되었다.
초기 Windows Vista(당시 개발 코드명 Longhorn)에 탑재될 예정이었으나, 개발의 난항으로 연기되었다. Vista 정식 버전에는 탑재되지 않고 서비스 팩과 함께 제공될 것이라고 예고되었으나, 그 후 2006년 6월 23일 개발 중단이 결정되었다. Windows Vista 탑재는 취소되었고 개발도 중단되었다.
참조
[1]
웹사이트
Leaked Windows hints at changes to come
https://web.archive.[...]
CBS Interactive
2007-09-30
[2]
뉴스
Why WinFS had to vanish
https://www.theguard[...]
Guardian News and Media
2006-06-29
[3]
웹사이트
IWish Concept Video
https://web.archive.[...]
Microsoft
2008-07-14
[4]
웹사이트
WinFS Update
http://blogs.msdn.co[...]
MSDN Blogs
2006-06-23
[5]
웹사이트
Where is WinFS now?
https://web.archive.[...]
[6]
웹사이트
A Developer's Perspective on WinFS: Part 1
http://msdn2.microso[...]
MSDN
2006-06-30
[7]
웹사이트
Unify, Organize, Explore, and Innovate. Oh my! (Part 2)
https://web.archive.[...]
WinFS Team Blog
[8]
웹사이트
The WinFS Files: Divide et Impera
http://msdn2.microso[...]
MSDN
2006-09-13
[9]
웹사이트
WinFS 101: Introducing the New Windows File System
http://msdn2.microso[...]
MSDN
2006-09-13
[10]
웹사이트
WinFS on The .NET Show
https://web.archive.[...]
[11]
웹사이트
Unify, Organize, Explore, and Innovate. Oh my! (Part 1)
https://web.archive.[...]
WinFS Team Blog
[12]
웹사이트
My tryst with Destiny, err… Integrated Storage
https://web.archive.[...]
[13]
웹사이트
Windows Storage Foundation (WinFS) Preview
https://web.archive.[...]
[14]
웹사이트
Will Longhorn be worth the pain?
https://web.archive.[...]
ZDNet
[15]
웹사이트
WinFS for Developers
http://www.ntfs.com/[...]
NTFS.com
[16]
웹사이트
WinFS Beta 1 Refresh now available
https://web.archive.[...]
WinFS Team Blog
[17]
웹사이트
Showing off the next release of WinFS at Tech Ed 2006, in Boston! Join us!
https://web.archive.[...]
WinFS Team Blog
[18]
웹사이트
My tryst with Destiny, err… Integrated Storage
https://web.archive.[...]
WinFS Team Blog
[19]
웹사이트
Update to the Update
https://web.archive.[...]
WinFS Team Blog
[20]
웹사이트
WinFS: The Windows File System (Microsoft Access 2002 Technical Articles)
https://web.archive.[...]
Microsoft
2003-10-01
[21]
간행물
Windows Vista Product Guide
http://download.micr[...]
Microsoft
2006-01-01
[22]
웹사이트
Query Composition: Building a search upon another search
http://shellrevealed[...]
Microsoft
2006-10-31
[23]
웹사이트
Billionaire baron Bill Gates still mourns Vista's stillborn WinFS.
https://www.theregis[...]
[24]
뉴스
MS Explains WinFS, Releases Beta 1
http://www.betanews.[...]
BetaNews
2005-08-29
[25]
학회발표
"WinFS" Future Directions: An Overview
http://216.55.183.63[...]
Microsoft
2005-09-01
[26]
발표자료
WinFS
http://www.ntfs.com/[...]
2006-03-14
[27]
웹사이트
First Look on WinFS Beta 1
https://web.archive.[...]
[28]
웹사이트
WinFS Mailbox
https://web.archive.[...]
WinFS Team Blog
[29]
웹사이트
Revolutionary File Storage System Lets Users Search and Manage Files Based on Content
https://web.archive.[...]
MSDN Magazine
[30]
웹사이트
A Developer's Perspective on WinFS: Part 2
http://msdn2.microso[...]
Microsoft
2004-07-01
[31]
웹사이트
About WinFS Rules
https://web.archive.[...]
Microsoft
[32]
웹사이트
Unify, Organize, Explore, and Innovate. Oh my! (Part 4)
https://web.archive.[...]
WinFS Team Blog
[33]
웹사이트
An Introduction to "WinFS" OPath
http://msdn2.microso[...]
Microsoft
2004-10-18
[34]
웹사이트
Getting Data Into WinFS with WinFS Synchronization
https://web.archive.[...]
WinFS Team Blog
[35]
웹사이트
WinFS -StoreSpy
http://weimenglee.bl[...]
2005-09-07
[36]
웹사이트
Stefano Demiliani WeBlog:WinFS StoreSpy v0.8 for the WinHEC 2004 Longhorn Build
http://dotnetjunkies[...]
2007-03-12
[37]
웹사이트
StoreSpy should become StoreEditor
https://web.archive.[...]
2007-06-30
[38]
웹사이트
Visualizing WinFS Types
https://web.archive.[...]
WinFS Team Blog
2007-07-03
[39]
웹사이트
Using OPather To Help Write Queries
https://web.archive.[...]
WinFS Team Blog
2007-06-30
[40]
웹사이트
The killer app for getting users organized
https://web.archive.[...]
WinFS Team Blog
2007-06-30
[41]
웹인용
Leaked Windows hints at changes to come - ZDNet.co.uk
http://news.zdnet.co[...]
2008-03-29
[42]
웹인용
WinFS Still In The Works Despite Missing Vista - Software - IT Channel News by CRN
https://web.archive.[...]
2008-03-29
[43]
웹인용
Why WinFS had to vanish
http://www.guardian.[...]
The Guardian
2010-12-09
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
