Latest File Systems!


Abhishek S N

WinFS

What Is WinFS?

WinFS is the new storage system in Longhorn. It improves the Microsoft Windows platform in three ways. First, it allows you to categorize your information in multiple ways and relate one item of information to another. Second, it provides a common storage format for information collected on an everyday basis, such as information dealing with people, places, images, and more. Third, it promotes data sharing of common information across multiple applications from multiple vendors.

WinFS Is a Storage Platform

WinFS is an active storage platform for organizing, searching for, and sharing all kinds of information. This platform defines a rich data model that allows you to use and define rich data types that the storage platform can use. WinFS contains numerous schemas that describe real entities such as Images, Documents, People, Places, Events, Tasks, and Messages. These entities can be quite complex. For example, a person can have multiple names, multiple physical and e-mail addresses, a current location, and much more.

Independent software vendors (ISVs) can also define their own new data types and provide their schema to WinFS. By allowing WinFS to manage complex storage problems, an ISV can concentrate on developing its unique application logic and leverage the richer storage facilities of WinFS for its everyday and custom data.

WinFS contains a relational engine that allows you to locate instances of storage types by using powerful, relational queries. WinFS allows you to combine these storage entities in meaningful ways using relationships. One contact can be a member of the Employee group of an Organization while concurrently a member of the Household group for a specific address. ISVs automatically gain the ability to search, replicate, secure, and establish relationships among their unique data types as well as among the predefined Windows data types.

This structure allows the user to pose questions to the system and ask it to locate information rather than asking the system to individually search folders. For example, you can ask WinFS to find all e-mail messages from people on your instant messenger buddy list for which you don't have a phone number. Using relational queries, you can find all members of a Household for a particular employee with a birthday in the current month.

WinFS also supports multiple flexible programming models that allow you to choose the appropriate application programming interface (API) for the task. You can access the store by using traditional relational queries using structured query language (SQL). Alternatively, you can use .NET classes and objects to access the data store. You can also use XML-based APIs on the data store. WinFS also supports data access through the traditional Microsoft Win32 file system API. You can even mix and match—that is, use multiple APIs for a single task. However, for most purposes, developers will use the managed class APIs to change data in the WinFS store. It will often be far more complex to make an update using raw SQL statements as compared to using the object APIs.

In addition, WinFS provides a set of data services for monitoring, managing, and manipulating your data. You can register to receive events when particular data items change. You can schedule WinFS to replicate your data to other systems.

WinFS Is a File System

For traditional file-based data, such as text documents, audio tracks, and video clips, WinFS is the new Windows file system. Typically, you will store the main data of a file, the file stream, as a file on an NTFS volume. However, whenever you call an API that changes or adds items with NTFS file stream parts, WinFS extracts the metadata from the stream and adds the metadata to the WinFS store. This metadata describes information about the stream, such as its path, plus any information that WinFS can extract from the stream. Depending on file contents, this metadata can be the author (of a document), the genre (of an audio file), keywords (from a PDF file), and more. WinFS synchronizes the NTFS-resident file stream and the WinFS-resident metadata. New Longhorn applications can also choose to store their file streams directly in WinFS. File streams can be accessed using the existing Win32 file system API or the new WinFS API.

WinFS Isn't Just a File System

A file system manages files and folders. While WinFS does manage files and folders, it also manages all types of nonfile-based data, such as personal contacts, event calendars, tasks, and e-mail messages. WinFS data can be structured, semistructured, or unstructured. Structured data includes a schema that additionally defines what the data is for and how you should use it. Because WinFS is, in part, a relational system, it enforces data integrity with respect to semantics, transactions, and constraints.

WinFS isn't just a relational system, either. It supports both hierarchical storage and relational storage. It supports returning data as structured types and as objects—types plus behavior. You might consider WinFS a hierarchical, relational, object-oriented data storage system—although it actually contains certain aspects of each of those traditional storage systems. WinFS extends beyond the traditional file system and relational database system. It is the store for all types of data on the newest Windows platform.

WinFS and NTFS

You can store a file either in the traditional NTFS file system or in the new WinFS data store just like you can store things in FAT32 or on CD-ROMs or in NTFS today. Normally, a file stored in NTFS is not visible in WinFS. Longhorn applications using the new WinFS APIs can access data stored either in WinFS or in NTFS. In addition, Longhorn applications can continue to use the Win32 API to access data stored in the NTFS file system.

File Promotion

Files are either in WinFS or not. Any item that has a file stream part can participate in promotion/demotion, which we more generally call metadata handling. When WinFS promotes a file, it extracts the metadata from the known NTFS file content and adds the metadata to the WinFS data store. The actual data stream of the file remains in the NTFS file system. You can then query WinFS regarding the metadata as if the file natively resides within WinFS. WinFS also detects changes in the NTFS file and updates the metadata within the WinFS data store as necessary.

File Import and Export

You can also import a file to WinFS from NTFS and export a file from WinFS to NTFS. Importing and exporting a file moves both the file content and the metadata. After importing or exporting, the new file is completely independent of the original file.