WinFS: Difference between revisions

From BetaArchive Wiki
enwikipedia>Simxp
(Removed category: Failed Microsoft initiatives (see talk page))
enwikipedia>Soumyasch
(cleanup, update)
Line 3: Line 3:
'''WinFS''' is a data storage and management system based on [[relational database]]s, developed by [[Microsoft]] and first demonstrated in 2003 as an advanced storage subsystem for the [[Microsoft Windows]] [[operating system]].
'''WinFS''' is a data storage and management system based on [[relational database]]s, developed by [[Microsoft]] and first demonstrated in 2003 as an advanced storage subsystem for the [[Microsoft Windows]] [[operating system]].


When introduced at the 2003 [[Professional Developers Conference]], WinFS was billed a pillar of the [[Development of Windows Vista|"Longhorn"]] wave of technologies, and would ship as part of the next version of Windows.  It was subsequently decided that WinFS would ship after the release of [[Windows Vista]], but those plans were shelved in June 2006, with some of its component technologies being integrated into upcoming releases of [[ADO.NET]] and [[Microsoft SQL Server]].<ref name="canned">{{ cite web | url = http://blogs.msdn.com/winfs/archive/2006/06/23/644706.aspx | title = WinFS Update | author = Quentin Clark | date = [[June 23]] [[2006]] | accessdate = 2006-06-23 | work = What's in Store|publisher = MSDN Blogs }}</ref>  While it was then assumed by observers that WinFS was done as a project, in November 2006 [[Steve Ballmer]] announced that WinFS was still in development, though it was not clear if the technology was planned for Vista's successor, [[Windows "Vienna"]], or if it would be made available as a separate product.<ref>http://www.crn.com/sections/breakingnews/dailyarchives.jhtml?articleId=196600671</ref>
When introduced at the 2003 [[Professional Developers Conference]], WinFS was billed a pillar of the [[Development of Windows Vista|"Longhorn"]] wave of technologies, and would ship as part of the next version of Windows.  It was subsequently decided that WinFS would ship after the release of [[Windows Vista]], but those plans were shelved in June 2006, with some of its component technologies being integrated into upcoming releases of [[ADO.NET]] and [[Microsoft SQL Server]].<ref name="canned">{{ cite web | url = http://blogs.msdn.com/winfs/archive/2006/06/23/644706.aspx | title = WinFS Update | author = Quentin Clark | date = [[June 23]] [[2006]] | accessdate = 2006-06-23 | work = What's in Store|publisher = MSDN Blogs }}</ref>  While it was then assumed by observers that WinFS was done as a project, in November 2006 [[Steve Ballmer]] announced that WinFS was still in development, though it was not clear if the technology was planned for Vista's successor, [[Windows "Vienna"]], or if it would be made available as a separate product.<ref name="WinFS Alive">http://www.crn.com/sections/breakingnews/dailyarchives.jhtml?articleId=196600671</ref>


''WinFS'' is the [[Microsoft codenames|code name]] of the system, and is short for ''Windows Future Storage''.
''WinFS'' is the [[Microsoft codenames|code name]] of the system, and is short for ''Windows Future Storage''.
Line 30: Line 30:
== Development ==
== Development ==


The development of WinFS is an extension to a feature which was initially planned in the early 1990s. Dubbed ''Object File System'', it was supposed to be included as part of [[Cairo (operating system)|Cairo]]. OFS was supposed to have powerful data aggregation features. But the Cairo project was shelved, and with it OFS. However, later during the development of [[Component Object Model|COM]], a storage system, called Storage+, based on then-upcoming SQL Server 8.0, was planned, which was slated to offer similar aggregation features. This, too, never materialized, and a similar technology, ''Relational File System'', was conceived to be launched with SQL Server 2000, but as SQL Server 2000 ended up being a minor upgrade to SQL Server 7.0, RFS was not implemented.
The development of WinFS is an extension to a feature which was initially planned in the early 1990s. Dubbed ''Object File System'', it was supposed to be included as part of [[Cairo (operating system)|Cairo]]. OFS was supposed to have powerful data aggregation features. But the Cairo project was shelved, and with it OFS. However, later during the development of [[Component Object Model|COM]], a storage system, called Storage+, based on then-upcoming SQL Server 8.0, was planned, which was slated to offer similar aggregation features. This, too, never materialized, and a similar technology, ''Relational File System'', was conceived to be launched with SQL Server 2000. However, SQL Server 2000 ended up being a minor upgrade to SQL Server 7.0 and RFS was not implemented.
 
But the concept was not scrapped. It just morphed into WinFS. WinFS was initially planned for inclusion in [[Windows Vista]], and build 4051 of Windows Vista, then called "Longhorn", given to developers at the Microsoft [[Professional Developers Conference]] in 2003, included WinFS, but it suffered from significant performance issues. In August 2004, Microsoft announced that WinFS would not ship with Windows Vista; it would instead be available as a downloadable update after Vista's release.
But the concept was not scrapped. It just morphed into WinFS. WinFS was initially planned for inclusion in [[Windows Vista]], and build 4051 of Windows Vista, then called "Longhorn", given to developers at the Microsoft [[Professional Developers Conference]] in 2003, included WinFS, but it suffered from significant performance issues. In August 2004, Microsoft announced that WinFS would not ship with Windows Vista; it would instead be available as a downloadable update after Vista's release.


On [[August 29]] [[2005]], Microsoft quietly made Beta 1 of WinFS available to MSDN subscribers. It worked on [[Windows XP]], and required the [[.NET Framework]] to run. It was refreshed on [[December 1]] [[2005]] to be compatible with version 2.0 of the .NET Framework.
On [[August 29]] [[2005]], Microsoft quietly made Beta 1 of WinFS available to MSDN subscribers. It worked on [[Windows XP]], and required the [[.NET Framework]] to run. The WinFS API was included in the ''System.Data'' namespace. The beta was refreshed on [[December 1]] [[2005]] to be compatible with version 2.0 of the .NET Framework. WinFS Beta 2 was planned for some time later in 2006, and was supposed to include integration with [[Windows Desktop Search]], so that search results include results from both regular files and WinFS stores, as well as allow access of WinFS data using [[ADO.NET]].
 
However, on [[June 23]] [[2006]], the WinFS team at Microsoft announced that WinFS would no longer be delivered as a separate product,<ref name="canned" /> and some components would be brought under the umbrella of other technologies - like the [[ADO.NET#Entity_Framework|ADO.NET Entity Framework]] and adminless mode of operation of the next version of SQL server, codenamed ''[[Microsoft_SQL_Server#Future_development|Katmai]]'', as a part of the ''SQL Server Always-On Technologies, as well as support for unstructured data.


WinFS Beta 2 was planned for some time later in 2006, and was supposed to include integration with [[Windows Desktop Search]], so that search results include results from both regular files and WinFS stores. However, on [[June 23]] [[2006]], the WinFS team at Microsoft announced that WinFS would no longer be delivered as a separate product.  Program Manager Quentin Clark wrote in a blog entry that, due to customer feedback, parts of the WinFS technology, specifically Entities and unstructured data, would be rolled into future versions of ADO.NET and Microsoft SQL Server.<ref name="canned" />
With that announcement, most analysts assumed that the WinFS project was being killed off. But in November 2006, [[Steve Ballmer]] said in an interview that WinFS is being actively developed but integration into the Windows codebase will come only after the technology has fully incubated.<ref name="WinFS Alive"> It was subsequently confirmed in an interview with [[Bill Gates]] and that Microsoft plans to migrate applications like [[Windows Media Player]], [[Windows Photo Gallery]], [[Microsoft Office Outlook]] etc to use WinFS as the data storage back-end.<ref>{{cite web|Author=Daniel Kornev|url=http://channel9.msdn.com/ShowPost.aspx?PostID=267149|title=A few words about WinFS: The project is back on track|publisher=Channel 9|date=[[December 19]], [[2006]]}}


== Architecture ==
== Architecture ==
Line 62: Line 65:


==== Type system ====
==== Type system ====
[[Image:WinFS1.PNG|250px|right|frame|WinFS Type Hierarchy]]
[[Image:WinFS1.PNG|200px|right|frame|WinFS Type Hierarchy]]


The most important difference between a file system and WinFS is that WinFS knows the type of each data item that it stores. And the type specifies the properties of the data item. The WinFS type system is closely associated with the .NET framework’s concept of [[Object-oriented programming|classes and inheritance]]. A new type can be created by [[Object-oriented programming|extending]] and nesting any predefined types.
The most important difference between a file system and WinFS is that WinFS knows the type of each data item that it stores. And the type specifies the properties of the data item. The WinFS type system is closely associated with the .NET framework’s concept of [[Object-oriented programming|classes and inheritance]]. A new type can be created by [[Object-oriented programming|extending]] and nesting any predefined types.
Line 70: Line 73:
Any object represented as a data unit, such as contact, image, video, document etc, can be stored in a WinFS store as a specialization of the Item type. By default, WinFS provides Item types for Files, Contact, Documents, Pictures, Audio, Video, Calendar, and Messages. The File Item can store any generic data, which is stored in file systems as files. But unless an advanced schema is provided for the file, by defining it to be a specialized Item, WinFS will not be able to access its data. Such a file Item can only support being related to other Items.
Any object represented as a data unit, such as contact, image, video, document etc, can be stored in a WinFS store as a specialization of the Item type. By default, WinFS provides Item types for Files, Contact, Documents, Pictures, Audio, Video, Calendar, and Messages. The File Item can store any generic data, which is stored in file systems as files. But unless an advanced schema is provided for the file, by defining it to be a specialized Item, WinFS will not be able to access its data. Such a file Item can only support being related to other Items.


[[Image:WinFS2.PNG|300px|frame|right|Defining a new Type]]
[[Image:WinFS2.PNG|250px|frame|right|Defining a new Type]]


A developer can extend any of these types, or the base type Item, to provide a type for his custom data. The data contained in an Item is defined in terms of properties, or fields which hold the actual data. For example, an Item ''Contact'' may have a field ''Name'' which is a ScalarType, and one field ''Address'', a NestedType, which is further composed of two ScalarTypes. To define this type, the base class Item is extended and the necessary fields are added to the class. A NestedType field can be defined as another class which contains the two ScalarType fields. Once the type is defined, a schema has to be defined, which denotes the primitive type of each field, for example, the Name field is a String, the Address field is a custom defined Address class, both the fields of which are Strings. Other primitive types that WinFS supports are Integer, Byte, Decimal, Float, Double, Boolean and DateTime, among others. The schema will also define which fields are mandatory and which are optional. The Contact Item defined in this way will be used to store information regarding the Contact, by populating the properties field and storing it. Only those fields marked as mandatory needs to be filled up during initial save. Other fields may be populated later by the user, or not populated at all. If more properties fields, such as ''"last conversed date"'', needs to be added, this type can be simply extended to accommodate them. Item types for other data can be defined similarly.
A developer can extend any of these types, or the base type Item, to provide a type for his custom data. The data contained in an Item is defined in terms of properties, or fields which hold the actual data. For example, an Item ''Contact'' may have a field ''Name'' which is a ScalarType, and one field ''Address'', a NestedType, which is further composed of two ScalarTypes. To define this type, the base class Item is extended and the necessary fields are added to the class. A NestedType field can be defined as another class which contains the two ScalarType fields. Once the type is defined, a schema has to be defined, which denotes the primitive type of each field, for example, the Name field is a String, the Address field is a custom defined Address class, both the fields of which are Strings. Other primitive types that WinFS supports are Integer, Byte, Decimal, Float, Double, Boolean and DateTime, among others. The schema will also define which fields are mandatory and which are optional. The Contact Item defined in this way will be used to store information regarding the Contact, by populating the properties field and storing it. Only those fields marked as mandatory needs to be filled up during initial save. Other fields may be populated later by the user, or not populated at all. If more properties fields, such as ''"last conversed date"'', needs to be added, this type can be simply extended to accommodate them. Item types for other data can be defined similarly.
Line 126: Line 129:


Internally the data stored is structured according to the relationships, by using different techniques such as sorting, [[hashing]] and [[index (information technology)|index]]ing. The resulting structure optimizes searching and accessing the data items through the relationships. So searching of data is very fast, nearly instantaneous.
Internally the data stored is structured according to the relationships, by using different techniques such as sorting, [[hashing]] and [[index (information technology)|index]]ing. The resulting structure optimizes searching and accessing the data items through the relationships. So searching of data is very fast, nearly instantaneous.
===Notifications===
WinFS also includes better support for handling data that changes frequently. Using WinFS ''Notifications'', applications choose to be notified of changes to selected data ''Items''. WinFS will raise an ''ItemChangedEvent'', using the .NET Event model, when a subsribed-to Item changes, and the event will be published to the applications.


== Data sharing ==
== Data sharing ==
Line 139: Line 145:
== Microsoft Rave ==
== Microsoft Rave ==


'''Microsoft Rave''' is an application that shipped with [[WinFS|WinFS Beta 1]]. It allows synchronization of two or more [[WinFS]] stores. It supports synchronization in ''full mesh'' mode as well as the ''central hub'' topology. While synchronizing, Microsoft Rave will determine the changes made to each store since the last sync, and update accordingly. When applying the changes, it also detects if there is any conflict, i.e., the same data has been changed on both stores since the last synchronization. It will either log the conflicting data for later resolution or have it resolved immediately.  Microsoft Rave uses [[peer-to-peer]] technology to communicate and transfer data.  
'''Microsoft Rave''' is an application that shipped with [[WinFS|WinFS Beta 1]]. It allows synchronization of two or more [[WinFS]] stores. It supports synchronization in ''full mesh'' mode as well as the ''central hub'' topology. While synchronizing, Microsoft Rave will determine the changes made to each store since the last sync, and update accordingly. When applying the changes, it also detects if there is any conflict, i.e., the same data has been changed on both stores since the last synchronization. It will either log the conflicting data for later resolution or have it resolved immediately.  Microsoft Rave uses [[peer-to-peer]] technology to communicate and transfer data.
 
==Project "Orange"==
Microsoft launched a project to build a data visualization application for WinFS. It was codenamed ''"Project Orange"'' and was supposedly built using [[Windows Presentation Foundation]]<ref>[http://blogs.msdn.com/winfs/archive/2006/05/16/599183.aspx Project Orange]</ref>. It was supposed to provide exploration of ''Items'' stored in WiFS stores, and data relationships were supposed to be a prominent part of the navigation model. It was supposed to let people allow organization of the WinFS stores graphically as well - productizing many of the concepts shown in the [http://download.microsoft.com/download/c/e/2/ce28874c-4f44-4dbd-babb-727685e2be96/WinFS_IWish_720x486_2mbs.wmv IWish Concept Video]. However, since the WinFS project went dark, the status of this project is unknown.


== References ==
== References ==

Revision as of 09:54, 23 February 2007

Template:Confuse

WinFS is a data storage and management system based on relational databases, developed by Microsoft and first demonstrated in 2003 as an advanced storage subsystem for the Microsoft Windows operating system.

When introduced at the 2003 Professional Developers Conference, WinFS was billed a pillar of the "Longhorn" wave of technologies, and would ship as part of the next version of Windows. It was subsequently decided that WinFS would ship after the release of Windows Vista, but those plans were shelved in June 2006, with some of its component technologies being integrated into upcoming releases of ADO.NET and Microsoft SQL Server.[1] While it was then assumed by observers that WinFS was done as a project, in November 2006 Steve Ballmer announced that WinFS was still in development, though it was not clear if the technology was planned for Vista's successor, Windows "Vienna", or if it would be made available as a separate product.[2]

WinFS is the code name of the system, and is short for Windows Future Storage.

Motivation

Many filesystems found on common operating systems, including the NTFS filesystem which is used in modern versions of Microsoft Windows, store files and other objects only as a stream of bytes, and have little or no information about the data stored in the files. Such file systems also provide only a single way of organizing the files, namely via folders and file names.

Because a file system has no knowledge about the data it stores, applications tend to use specific, often proprietary, file formats, so that the data can be interpreted only by the application that created it. This leads to proliferation of application-specific file formats and hampers sharing of data between multiple applications. It becomes difficult to create an application which processes information from multiple file types, because the programmers have to understand the structure of all the files where the source data could reside and then filter out the irrelevant information. Also, data from multiple applications cannot be easily aggregated. Using common file formats is workaround to this problem but not a universal solution; there is no guarantee that any given application will be able to access the data.

Also, a traditional file system can retrieve and search data based only on the filename, because the only knowledge it has about the data is the name of the files that store the data. A better solution is to tag files with attributes that describe them. Attributes are metadata about the files such as the type of file (such as document, picture, music, creator, etc). This allows files to be searched for by their attributes, in ways not possible using a folder hierarchy, such as finding "pictures which have person X". The attributes can be recognizable by either the file system natively, or via some extension. Desktop search applications take this concept a step further. They extract data, including attributes, from files and index it. To extract the data, they use a filter for each file format. This allows for searching based on both the file's attributes and the data in it.

However, this still does not promote data sharing, as the extracted data is stored in a format specific to the desktop search application, in a format which enables fast searching. Desktop search applications can only find information, but not help users do something with the searched information. Also, this approach does not help to aggregate data from two or more applications. For example, it is nearly impossible to search for "the phone numbers of all persons who live in Acapulco and each have more than 100 appearances in my photo collection and with whom I have had e-mail within last month". Such a search encompasses data across three applications – address book for phone numbers and address, photo manager for information on who appears in which photo, and the e-mail application to know the e-mail acquaintances.

WinFS solves this problem by using attributes to describe the data in files and the relation of that data with other data. It does not use the artificial organization of file names and locations. By creating a unified datastore, it promotes sharing and re-use of data between different applications. Any application, such as the file browser, can understand files created by any application. Addition of attributes gives further meaning to the data, such as which persons appear in which pictures, "the person an e-mail was addressed to" as referred to in the example. But, instead of considering the pictures, e-mails and files, WinFS recognizes picture, and e-mail to be specific types of data, which are related to person, using the relation "of some person". So, by following the relation, a picture can be used to aggregate e-mails from all the persons in the picture and, conversely, an e-mail can aggregate all pictures in which the addressee appears. WinFS extends this to understand any arbitrary types of data and the relations that hold them together. The types and relations have to be specified by the application that stores the data, or the user, and WinFS organizes the data accordingly.

Uses

Organizing the data that is in files by its relationships, as WinFS does, has various uses, including:

  • Integrated storage - One example scenario is the Integrated Storage Conception that helps to reuse data. This feature will be of great use for businesses, by allowing it to automatically aggregate data from different departments.
  • Full text search - A second possible scenario is a full-text search that works with items fields - the rich filters feature. By making use of the fact that any application's data files can be used by any other application, searches can be made to encompass the contents of the file as well, rather than just its attributes.
  • Advanced search and data aggregation - WinFS provides an opportunity to create rich and custom made search queries, such as to find “all persons whom I called last weekend”.
  • Data mining - WinFS can also give more information about data, by using data mining techniques and applying rules to the data, thus helping to uncover new information. This scenario is intended to use in development of expert systems.

Development

The development of WinFS is an extension to a feature which was initially planned in the early 1990s. Dubbed Object File System, it was supposed to be included as part of Cairo. OFS was supposed to have powerful data aggregation features. But the Cairo project was shelved, and with it OFS. However, later during the development of COM, a storage system, called Storage+, based on then-upcoming SQL Server 8.0, was planned, which was slated to offer similar aggregation features. This, too, never materialized, and a similar technology, Relational File System, was conceived to be launched with SQL Server 2000. However, SQL Server 2000 ended up being a minor upgrade to SQL Server 7.0 and RFS was not implemented.

But the concept was not scrapped. It just morphed into WinFS. WinFS was initially planned for inclusion in Windows Vista, and build 4051 of Windows Vista, then called "Longhorn", given to developers at the Microsoft Professional Developers Conference in 2003, included WinFS, but it suffered from significant performance issues. In August 2004, Microsoft announced that WinFS would not ship with Windows Vista; it would instead be available as a downloadable update after Vista's release.

On August 29 2005, Microsoft quietly made Beta 1 of WinFS available to MSDN subscribers. It worked on Windows XP, and required the .NET Framework to run. The WinFS API was included in the System.Data namespace. The beta was refreshed on December 1 2005 to be compatible with version 2.0 of the .NET Framework. WinFS Beta 2 was planned for some time later in 2006, and was supposed to include integration with Windows Desktop Search, so that search results include results from both regular files and WinFS stores, as well as allow access of WinFS data using ADO.NET.

However, on June 23 2006, the WinFS team at Microsoft announced that WinFS would no longer be delivered as a separate product,[1] and some components would be brought under the umbrella of other technologies - like the ADO.NET Entity Framework and adminless mode of operation of the next version of SQL server, codenamed Katmai, as a part of the SQL Server Always-On Technologies, as well as support for unstructured data.

With that announcement, most analysts assumed that the WinFS project was being killed off. But in November 2006, Steve Ballmer said in an interview that WinFS is being actively developed but integration into the Windows codebase will come only after the technology has fully incubated.Cite error: Closing </ref> missing for <ref> tag. It was supposed to provide exploration of Items stored in WiFS stores, and data relationships were supposed to be a prominent part of the navigation model. It was supposed to let people allow organization of the WinFS stores graphically as well - productizing many of the concepts shown in the IWish Concept Video. However, since the WinFS project went dark, the status of this project is unknown.

References

  1. 1.0 1.1 Quentin Clark (June 23 2006). WinFS Update. What's in Store. MSDN Blogs. Retrieved on 2006-06-23.
  2. http://www.crn.com/sections/breakingnews/dailyarchives.jhtml?articleId=196600671

See also

External links

ar:WinFS cs:WinFS da:WinFS de:WinFS es:WinFS fr:WinFS it:WinFS he:WinFS nl:WinFS ja:WinFS no:WinFS pl:WinFS pt:WinFS ru:WinFS fi:WinFS sv:WinFS