在过去的20年中,DOS和Windows的文件存储系统不断发展。16位的文件分配表(FAT 16)在大于2 GB的磁盘上遇到了困难,它的32位的继承者FAT32虽然解决了容量问题,但仍显得弱不禁风,只要一个字节出错就可能导致整个文件不能访问。NTFS(New Technology File System),自Windows NT 3.5开始引入,使用了一个数据库风格的主文件表(Master File Table),提高了访问文件的可靠性和速度。
直到现在,无论底层的操作系统是FAT还是NTFS,用户的感觉不外乎层次型的文件夹树形结构,访问某个文件可能需要在层次结构中跋涉10层甚至20层——这里还有一个前提,那就是你知道文件的保存位置。如果你不知道文件的保存位置,那就要向Windows的搜索功能求助。问题是,为什么我们必须记住文件的保存位置?我们关心的是文件的内容,而不是它的保存位置。
这个问题不是第一次提出。早在1992年,微软有关Cairo(Windows 2000的代码名称)的早期描述中就提到了一个根据文件内容而不是位置来访问文件的文件系统。这个项目后来被搁置,但现在微软告诉我们,它终于要在Longhorn的Windows Future Storage(WinFS)中成为现实了。
WinFS在NTFS的基础上增加了一个数据库层,这个数据库层以即将出现的SQL Server的Yukon版为基础。在WinFS文件系统中,文件除了我们熟悉的属性,诸如文件名称、大小、日期,还将通过诸如作者名称、图像大小之类的元数据建立索引。底层的文件夹分层结构仍将存在,但现在用户使用的将是相似文件构成的库(Library)。
每个库由一组通过查询WinFS数据库获得的文件构成。对于泄露出来的Longhorn Alpha版,报告称它内建的库包括:Documents、Games、Music、My Contacts(替代地址簿)、Picture以及Video。可以设想,Longhorn将允许用户根据自己的条件创建库。库里面的文件不会移出其所在的文件夹,实际上,一个文件可以出现在多个库中。用户可以配置库,使其显示方式匹配文件的内容;当用户创建符合条件的新文件时,文件会自动出现在库中。
基于XML的文件格式具有自我描述的特点,它们的元数据很容易被WinFS访问,从而促进这类文件格式的应用。我们现在还不知道WinFS是否会被移植到其他的Windows版本,也不知道WinFS是否是Longhorn的默认文件系统。当前Longhorn的Alpha版中,WinFS还不能实际运作。但是,当WinFS正式到来时,我们查找文件的依据将是它是什么,而不是它在哪里。