感受Longhorn之三

第四章 存贮

Longhorn里另一大杀手锏就是WinFS--让你可以像数据库一样管理和查询你的数据。

硬盘越来越大,想想7年前,自己还在上大学的时候买了一块1.5G的硬盘,一直在想自己怎么可能用得完呢?想想现在,一两百G的硬盘已经轻易买到了。现在硬盘是大了,你怎么管理这些数据啊?

于是想起Google这个神奇的东西,几乎成了百科全书,有什么不懂的直接敲入搜索框,几秒钟之后答案就摆在面前了,比搜索本地硬盘的速度还快!人家那可是搜索整个世界啊!

先来看看现在的计算机数据存贮方式,一般采用的是文件系统,Windows上无外乎FAT和NTFS两种。采用文件系统,你只能以层次结构的方式组织数据。搜索无非就是对文件名进行匹配,最多能够对里面包含的文字进行匹配,其他更复杂的搜索就几乎不可能实现了。比如根据图像的内容,音乐的演唱者以及Word文档的摘要等进行检索,就比较困难。当然,现在已经有了一些应用程序来帮忙实现这些复杂的检索工作,但是都是基于自己的一套技术,没有统一的标准。所以,对于用户来说,要实现不同的功能,要面对各种迥然不同的接口。而且不同应用程序之间的数据交换,因为数据格式的不统一,也很难进行。

好了,现在WinFS横空出世了,数据保存在系统中的时候,不再仅仅保存文件名和内容,还包括一些原数据(MetaData)。原数据就是譬如照片的大小,颜色值,拍摄地点,时间和事件,以及MP3的演唱者,所属专辑等等信息。这些信息就宛如数据库表里的字段,有了这些字段你就可以使用类似SQL一样的语句进行复杂的查询,譬如在某某地点拍摄的照片,某某专辑的MP3等等。

WinFS可以与原先的FAT/NTFS并存,你可以选择是把数据保存在哪个系统中。在文件保存的时候,系统会自动提取它所认识的MedaData,并在文件发生改变的时候,自动同步更新MedaData。

另外,WinFS定义了一些所谓的公共的Schema,类似数据定义一样的东西。比如,定义了Person,Address,Contact这样的数据对象,这样系统就可以之维护一份数据,不同的应用程序都可以存取。想想看吧,现在的应用程序有多少在使用自己的通讯录格式啊,想想当年为了读取Windows内部的通讯录的那个费劲啊,哪怕是现在Outlook和Outlook Express的通讯录还都是两套呢!

如果仅仅是把能够类似数据库一样存取和查询数据的话,还不算得什么惊奇的。神奇的是,WinFS提供的接口里,允许直接对对象Object进行保存。完全摒弃了文件的概念,摒弃了Serialize/Deserialize的过程,完全是面向对象的。不仅如此,你还可以利用类似SQL语句的方式来进行对象查询,还支持数据库才有的概念--事务!你完全可以想象,系统的底层一定是SQL Server了。

这时候,我想起了学习COM的时候接触到的复合文档的概念。当时,对象是保存在文档内部的,你还可以知道这个文件。现在,你连文件是否存在都不知道了,天知道这些数据存放在哪里。

其实,把对象用数据库来保存对象并不是什么新鲜事,实际上存在很多这样的Framework。Java世界里的Hibernate就是这样一个O/R框架,在Java的服务端程序很流行。

但是,把以上这些概念如何完美的整合在一起,并应用在普通的客户端程序里,就不得了。我们不得不承认,微软虽然不是开拓者,但是他们在系统的整合方面的能力实在是惊人,简直是巨大的模仿能力。

我想,不久我们就会忘记fopen()这样诡异的函数了吧,呵呵。

你可能感兴趣的:(sql,数据库,Hibernate,server,express,文档,通讯)