WinFS

来自 WinStory Wiki
跳转到导航 跳转到搜索
WinFS
Microsoft Windows 的组件
WinFS Beta 1 启动画面

WinFS(Windows Future Storage,也称为 Integrated Storage,集成存储和 Windows Storage Engine,Windows 存储引擎)是计划包含在 Windows VistaWindows Server 2008 中的高级存储子系统的代号。它专为结构化、半结构化和非结构化数据的持久化和管理而设计。

WinFS 基于修改后的 SQL Server 技术,并在 NTFS 上运行。WinFS API 包含在 System.Storage 命名空间中。

开发历程

WinFS 由比尔·盖茨(Bill Gates)和昆汀·克拉克(Quentin Clark)在 PDC 2003 上首次引入。


"With WinFS, developers can take advantage of prebuilt data structures in their applications, and extend those structures to handle their specific requirements and add unique value to the application by creating new structures."

— PDC 2003


“借助 WinFS,开发人员可以在其应用程序中利用预构建的数据结构,并扩展这些结构以处理其特定要求,并通过创建新结构为应用程序增加独特价值。”[1]

— PDC 2003


在 PDC 2005 中,一个名为 IWish 的视频展示了与 WinFS 相关的模型,例如笔记和日历应用程序,作为软件开发人员如何利用它的示例。视频的开头用四个词解释了WinFS:“Unify(统一)”、“Organize(组织)”、“Explore(探索)”和“Innovate(创新)”。

WinFS 进程仅存在于重置前版本中,但 WinFS 文件夹在 Build 3706 之前没有实现。后来,在 2004 年 8 月 27 日决定,Microsoft 将在 Windows Vista 发布后将 WinFS 作为可下载的数据框架发布。[2]因此,Microsoft 在第二年向 MSDN 订阅者发布了 WinFS Beta 1。此版本的 WinFS 适用于包括 .NET Framework 2.0 的 Windows XP Service Pack 2(因此,它包含在 System.Storage 命名空间中)。WinFS Beta 1 也有望在 PDC 2005 中以 DVD 形式发布给与会者。[3]WinFS 项目管理总监 Quentin Clark 提到,类似于 WinFS 的存储系统最终将成为 Windows 不可或缺的一部分,并发布了首个 WinFS 测试版,以获得在 WinFS 上运行的适当受众和应用程序。[3]后来,Microsoft 在 2006 年取消了 WinFS。

在被废弃后,WinFS 功能被移植到 ADO.NET Entity Framework,这是一组 Windows shell 组件(例如痕迹导航栏和保存的搜索),这些组件将进入 Windows Vista 和 Microsoft SQL Server。

比尔·盖茨(Bill Gates)说,在 2013 年,WinFS 是他有史以来最大的失望,因为 WinFS 超前于时代,并且会重新出现。[1]

开发的动力

NTFS 文件系统的问题

传统的 NTFS 数据系统只会将数据存储为打包的字节流。现在,如果数据只能从数据字节的角度来识别,则无法识别数据的实际身份

以 Word 文档为例。你需要在文档编辑器/查看器上打开它,此编辑器/查看器可以看到这是否是 Word 文档。如果不查看它的内容并验证它是否是你要查找的内容,就无法查看这是否是你要查找的 Word 文档。

传统 NTFS 数据系统中的第二个主要问题是它无法分类且太难找到。

如果我们回到 Word 文档示例,想象一下如果有一个与我们正在寻找的文档相似的文档,且它们使用不同的名称,但只有一个是我们正在寻找的。而且它们都是在同一日期创建的,这给我们带来了一个更大的问题,即日期和标题不足以找到我们正在寻找的文档。你不能只看文档本身,然后用传统的 NTFS 称它为“That's what I was looking look!(这就是我正在寻找的样子!)”,除非你愿意花几个小时检查它。

第三个主要问题是它不允许将文件存储在多个位置而不复制文件。即使你可以向文件添加其他元数据,应用程序通常也无法识别其他元数据,且无论如何都必须依赖 NTFS。此问题还会浪费磁盘空间。

传统 NTFS 还有其他问题,例如:

  • 没有主存储系统就无法进行数据备份和还原
  • 仅使用数据和目录名称的可自定义性。
  • 能够仅作为目录路径索引进行搜索。
  • 更好的同步

WinFS 本应是解决方案

WinFS 应该同时存储所有结构化、半结构化和非结构化数据,它们将在一个中央数据存储中关联,用户和应用程序可以在其中访问和作它。这使得复制的想法变得毫无用处,因为用户可以从同一数据存储通过不同的应用程序和位置访问同一文件。

With WinFS you don’t need a separate file. Your data can be described as a WinFS schema and instances of that data stored in WinFS itself. You and other apps can operate on this data using the WinFS APIs. If you need to keep your separate file, you can write a metadata handler to promote and demote metadata between your file and the store.

— Vijay Bangaru, WinFS Mailbox


使用 WinFS,你不需要单独的文件。你的数据可以描述为 WinFS 架构和存储在 WinFS 本身中的此数据的实例。你和其他应用程序可以使用 WinFS API 对此数据进行操作。如果需要保留单独的文件,可以编写元数据处理程序来提升和降级文件和存储之间的元数据。

— 维杰·班加鲁,WinFS 邮箱[4]
使用 WinFS 的搜索概念。这里的各种功能都可以用于 Windows Vista

WinFS 还有助于更快地查找数据,因为用户可以安全地查找内容,而无需了解任何技术知识。就像我们正在寻找的 Word 文档一样,你可以找到带有搜索过滤器的文档,此文档是你实际要查找的内容,例如“商业报告”或“我两周前写完的书”,而不是“上次修改于2004 年 3 月 19 日”或“由管理员拥有”。

WinFS 允许搜索更复杂,可以更好地处理交叉引用的非基于文件的数据,例如电子邮件。

WinFS 允许 ISV 定义自己的数据类型,并将其架构提供给数据框架。使用“信息代理”,用户可以为约会、生日等项目设置新属性。

The item properties are stored in the WinFS store as part of the item itself. WinFS has a concept of "links" which are an entity type with a source item and a target item that relate items. There is also the concept of "common value" relationships which are based on item properties. Navigation of common value relationships is a value based join.

— Vijay Bangaru, WinFS Mailbox


项属性作为项本身的一部分存储在 WinFS 存储中。WinFS 有一个“链接”的概念,它是一个实体类型,其中包含一个源项和一个与项相关的目标项。还有基于项属性的“common value”关系的概念。公共值关系的导航是基于值的联接。

— 维杰·班加鲁,WinFS 邮箱[4]


In traditional file systems, users create files and store them in folders. In "WinFS", an item can exist in multiple folders. When users create an item, they specify the folder item where the item resides. This creates a holding relationship between the folder item (source) and the newly created item (target). Users can also create additional holding relationships to the same target from some other folder. A folder can also contain multiple items. That is, a folder item contains a collection of holding relationships, each pointing to a different (target) item. For example, a user can include a certain song in several playlists. The music file is not copied or moved to any folder location; it stays where it is and the different playlists keep track of the actual file.

If a user deletes a holding relationship from a folder, the target item in that relationship no longer exists in that folder, but the item may still remain in "WinFS" if it is a target of a holding relationship in some other folder. If you delete an item, however, all the holding relationships from different folders that have the item as their target are removed.

— The Windows File System, Microsoft User Experience Group


在传统文件系统中,用户创建文件并将其存储在文件夹中。在“WinFS”中,一个项目可以存在于多个文件夹中。当用户创建项目时,他们指定此项目所在的文件夹项目。这将在文件夹项(源)和新创建的项(目标)之间创建保留关系。用户还可以从其他文件夹创建与同一目标的其他保持关系。一个文件夹还可以包含多个项目。也就是说,文件夹项包含一组保持关系,每个关系都指向不同的(目标)项。例如,用户可以在多个播放列表中包含某首歌曲。音乐文件不会被复制或移动到任何文件夹位置;它保持在原处,不同的播放列表会跟踪实际文件。

如果用户从文件夹中删除了保持关系,则该关系中的目标项不再存在于该文件夹中,但如果此项目是其他文件夹中的保留关系的目标,则此项可能仍保留在“WinFS”中。但是,如果删除某个项,则除去将此项作为目标的不同文件夹中的所有保留关系。

— Windows 文件系统,Microsoft 用户体验组[5]

WinFS 还将允许 2 个新的备份:“存储级备份”将允许人们在硬盘驱动器损坏时取回所有文件,而“项目级备份”将允许人们恢复项目的更改。

Because non-file-based data like contacts and e-mail messages are cross-referenced with files, users can perform more complex searches. One example could be, "Look for information about Jim from 1987 to 1999.".

— The Windows File System, Microsoft User Experience Group


由于非基于文件的数据(如联系人和电子邮件)与文件交叉引用,因此用户可以执行更复杂的搜索。一个例子可能是,“查找有关 Jim 从 1987 年到 1999 年的信息。”。

— Windows 文件系统,Microsoft 用户体验组[5]

WinFS 通知允许使用使用 .NET 事件模型的“ItemChangedEvent”更好地处理频繁更改的数据。

WinFS 还应该为应用程序提供服务,而无需担心专有数据以及在 WinFS 应用程序和非 WinFS 应用程序之间共享数据的能力。

最后,WinFS 将停止对“我的文档”和“我的图片”等文件夹的需求,因为 WinFS 将显示与用户的特定需求相关的文件。[3]

用户界面

Microsoft 的 WinFS 存储 UI 概念[5]

WinFS 将在 Windows 中包含以下用户界面元素:

  • 痕迹导航栏(已进入 Windows Vista,至今仍然存在)
  • 预览窗格(已进入 Windows Vista,至今仍然存在)
  • 筛选栏(已进入 Windows Vista,至今仍然存在)
  • FolderType 命令(在 Windows Vista 的最终版本中不存在,但在 Windows 8 及更高版本中,文件资源管理器中的功能区拥有类似的功能)
  • 列表视图(已进入 Windows Vista,至今仍然存在)
  • Wordwheel filter(字轮过滤器,作为文件夹内搜索框进入Windows Vista,至今仍然存在)
  • 存储收藏夹(作为文件夹内搜索过滤器进入 Windows Vista。它后来在 Windows 10 Build 18894 中删除,并在文件资源管理器中引入了现代搜索体验)

不受支持的基于 WinFS 的应用程序

  • Microsoft Rave
  • StoreSpy
  • File System Sync Adapter(文件系统同步适配器)
  • Type Browser
  • OPather
  • Project "Orange"

其他与 WinFS 类似的项目

Cairo 可以找到类似的数据框架,称为 Object File System(对象文件系统)以及其后继者存储和关系文件系统。

图库

引用资料

外部链接