Windows Future System
Microsoft has posted for download by its Microsoft Developer Network (MSDN) subscribers a first beta of its next-generation WinFS file system. Let us see what WinFS is.
WINFS(Windows Future System)
Disk capacity has been growing at roughly 70 percent annually over the last decade. In a few years, people will be able to store millions of files, most of which, if nothing improves, they'll never see again.
One reason people have difficulty finding information on their computer is because of the limited ability for the user to organize data. The present file system support for folders and files worked well originally because it was a familiar paradigm to most people and the number of files was relatively small. However, it doesn't easily allow you to store an image of your coworker Bob playing softball at the 2007 company picnic at a local park and later find the image when searching for documents that:
- Mention Bob
- Involve sports
- Relate to company events
- Pertain to the park or its surrounding area
- Were created in 2007
The hierarchical folder structure doesn't work well when you want to categorize data in numerous ways. Therefore, we have a problem today in that we have lots of stuff to store and no good way to categorize it. In addition to categorizing information, which many people associate with attaching a fixed set of keywords to data, people need to relate data. For example, I might want to relate a picture to the company picnic, or I might want to relate a picture to Bob, who is also a member of an organization to which I donate time and effort, as a contact.
Another problem is that we store the same stuff in multiple places in multiple formats. Developers spend much time and effort creating their own, unique storage abstractions for everyday information such as People, Places, Times, and Events. For example, Microsoft Outlook has a definition of a Contact. The Microsoft Windows Address Book also has its own definition of a contact. Each instant messaging application has yet another. Each application stores its definition of a contact in a unique, isolated silo of information.
There are a number of problems with current approaches to data storage, including the following:
- Developers reinvent the basic data abstractions repeatedly.
- Multiple applications cannot easily share common data.
- The same information lives in multiple locations.
- The user repeatedly enters the same information.
- Separate copies of data become unsynchronized.
- There are no notifications of data change.
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.