浅谈Microsoft Windows操作系统的下一代存储系统WinFS

** 一、什么是 _ WinFS _ ** ** ? **

_ WinFS _ 是 _ Longhorn _ 操作系统引入的全新的存储系统。它针对原先的 _ Microsoft Windows _ 平台作了三方面的改进:

1 、 _ WinFS _ 允许你用多种方式来对你的存储信息进行分类,并且允许你将信息的某个数据项( **_ item _ ** )同其它信息的数据项进行关联。

2 、 _ WinFS _ 为日常信息提供了 公共存储格式 ( **_ common storage format _ ** ),比如:用于处理 地点照片 等信息的存储格式。

3 、 _ WinFS _ 支持多个应用程序间公共信息的共享。往往这些应用程序来自于不同的开发商。

** 二、 _ WinFS _ ** ** 是一个信息存储平台: **

_ WinFS _ 是一个用于组织、搜索和共享各类信息的存储平台。 _ WinFS _ 定义了丰富的数据模型( **_ data model _ ** _ _ )。你可以使用这些数据模型来定义能让 _ WinFS _ 可以使用的数据类型( **_ data type _ ** )。 _ WinFS _ 还包含了很多的模式( **_ schema _ ** )。模式是用来描述类似照片、文档、人、地点、事件、任务和消息等真实世界的实体。这些实体可以非常的复杂。比如:一个人能够有多个名字、多个住址、多个 e-mail 地址,甚至拥有更多的实体。

每个软件提供商( _ ISV _ )也可以定义自己的数据类型,并将相应的模式提供给 _ WinFS _ 。通过将复杂的存储问题交给 _ WinFS _ 去管理, _ ISV _ 可以将精力集中于开发应用程序的逻辑、将 _ WinFS _ 提供的便利应用到自己的日常和定制数据上来。

_ WinFS _ 提供了一个关系引擎( **_ relational engine _ ** _ _ )。通过它,你可以运用强大的关系查询方式来定位一个存储类型的实例。 _ WinFS _ 允许使用关系来组合多个存储实体。一个联系人( **_ contact _ ** )可以是一个组织( **_ Organization _ ** )的雇员( **_ Employee _ ** )组中的一个成员,同时他也可以是某个住址的室友( _ Household _ )组中的一个成员。 _ ISV _ 可以在自己定制的数据类型之间或是在 _ WinFS _ 预定义的数据类型之间,自动获取 搜索复制设置安全属性建立关系 的能力。

这种结构允许用户向系统提问,并且通过回答相应的定位信息来查找数据,而不同于 _ Longhorn _ 之前系统提供的搜索方式。比如:你可以要求 _ WinFS _ 从你的即时通讯好友中查找所有没有电话号码的人的 e-mail 地址。使用 关系 ,你能够在所有室友中找到本周过生日的特定成员。

_ WinFS _ 也支持多种灵活的编程方式。使用这些编程方式,你可以选择适当的编程接口( _ API _ )来完成相应的任务。你可以使用传统的关系查询语句 _ SQL _ 来访问存储系统。同样,你也可以使用 **_ .NET _ ** 类和对象来访问存储系统。你也可以使用基于 _ XML _ 的 _ API _ 来访问数据存储系统。 _ WinFS _ 也支持传统的 _ Microsoft Win32 _ 文件系统 _ API _ 函数访问数据的方式。你甚至可以混合使用上述的几种 _ API _ 来完成单一的任务。然而,在大多数情况下,开发人员总是使用 托管类 **_ API _ ** 来操作 _ WinFS _ 存储系统中的数据。使用 _ SQL _ 语句来实现数据更新远比使用 对象 ** API ** 要复杂得多。

此外, _ WinFS _ 提供了一个 数据服务函数 集合,用于 监视管理操作 数据。你可以通过注册所感兴趣的事件( ** event ** )来接收类似 数据项 ( **_ item _ ** )改变的事件。你也可以安排 _ WinFS _ 定期地将数据复制到其它系统中。

** 三、 _ WinFS _ ** ** 是一个文件系统: **

不同于传统的基于文件的文件系统, _ WinFS _ 是一个全新的 _ Windows _ 文件系统。通常,你会把文件的主要数据,即“ 文件流 ”( **_ file stream _ ** )作为一个文件存放在 _ NTFS _ 卷中。然而,每当你调用 _ API _ 来改变或添加 _ NTFS _ 文件流, _ WinFS _ 将从文件流中提取出 元数据 ( **_ metadata _ ** ) , 并将元数据添加到 _ WinFS _ 存储系统中。元数据描述了文件流的信息,包括文件的路径和其它 _ WinFS _ 从文件流中所提取出来的信息。根据文件的内容,元数据也许是文档的创建者,音频文件的类型或者是 PDF 文件的关键字等信息。文件流是驻留在 NTFS 中的,而相应的元数据则驻留在 _ WinFS _ 中, _ WinFS _ 则对两者进行一致性控制。新的 _ Longhorn _ 应用程序可以选择将文件流直接存放在 _ WinFS _ 中。文件流能够用现有的 Win32 文件系统 API 或者新的 _ WinFS _ API 来访问。

** 四、 _ WinFS _ ** ** 不只是一个文件系统: **

一个文件系统是用来管理文件和文件夹的。 _ WinFS _ 不仅能管理文件和文件夹,同时它还能管理各类非文件的数据,比如:个人的 联系人 、个人 日程安排日历 、个人的 ** e-mail ** ** 消息 ** 。 _ WinFS _ 数据可以是结构化的、半结构化的、或者是非结构化的。结构化数据包含了模式( **_ schema _ ** )。模式是用来定义数据是什么东西,以及如何使用该数据。因为 _ WinFS _ 部分实现了关系型系统的功能,所以 _ WinFS _ 要求数据满足相应的语义完整性、数据的事务处理和数据约束。

_ WinFS _ 又不只是一个关系型系统。它支持分级存储,又支持关系存储。它支持结构化类型,又支持对象。你可以将 _ WinFS _ 看作是层次型、关系型和面向对象型三为一体的数据存储系统。尽管实际上它只是实现了三个传统存储系统的某些方面。同时, _ WinFS _ 扩展了传统的文件系统和关系型数据库系统。 _ WinFS _ 支持最新 Windows 平台上所有的数据类型。

** 五、 _ WinFS _ ** ** 和 NTFS ** ** : **

你可以将文件存放在传统的 NTFS 文件系统中,将文件存放到新的 _ WinFS _ 数据存储系统中。一般而言,一个存放在 NTFS 中的文件在 _ WinFS _ 中是不可见的。 Longhorn 应用程序使用了新的 **_ WinFS API _ ** 函数来访问存放于 _ WinFS _ 或 NTFS 中的数据。此外, Longhorn 应用程序也允许继续使用 Win32 API 函数来访问存放在 NTFS 文件系统中的数据。

** 六、文件的升级( File Promotion ** ** ): **

文件不是驻留在 _ WinFS _ 中,就是在 NTFS 中。任何包含文件数据流的数据项( **_ item _ ** )都能够进行所谓“元数据处理”( **_ metadata handling _ ** )的升级 / 降级操作( **_ promotion/demotion _ ** )。当 _ WinFS _ 升级一个文件时,它会从 NTFS 文件的内容中提取 元数据 ,并将元数据添加到 _ WinFS _ 存储系统中。而文件的实际数据流则仍旧留在 NTFS 文件系统中。你可以根据元数据在 _ WinFS _ 中查询相应的文件,就如同文件的实际数据被存放在 _ WinFS _ 系统中。 _ WinFS _ 也会检查 NTFS 文件的改变,并对 _ WinFS _ 中的元数据做出相应的修改。

** 七、文件的导入和导出: **

你可以在 _ WinFS _ 和 NTFS 之间任意地导入导出文件。文件的导入和导出操作将会移动文件内容和文件的元数据。在导入导出操作完成后,产生的新文件就和原文件完全没有关系了。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus