资源管理的革命(2)

| No Comments | No TrackBacks
3 File System or Library
这是关于库所争论的核心问题,也是本文的核心问题。很多人抨击库的管理模式不够严
谨,坚称用文件路径管理就够了,这些都表明其对计算机系统的结构存在很大的误解。下文
中将会从计算机的物理结构、逻辑层次结构等方面去分析这一问题。
3.1 文件系统的树状结构
文件系统的诞生,无疑对计算机的发展起到了非常深远的影响。在文件系统诞生之前,
人们还只能通过汇编语言直接访问地址空间,这样不但容易出错,而且很难做到多人之间的
协同工作,可以说,文件系统的诞生才意味着真正可以将操作系统和应用软件区分开来。而
著名的操作系统DOS 的全称正是Disk Operation System,即磁盘操作系统,操作系统的初衷
就是使用文件系统来管理磁盘上的数据,并让其他程序能较为轻松地遵循一个统一的标准来
访问它。如果你一直严格的按文件夹分类存放你计算机上的文档、音乐和图片等资源,这么
做当然是正确且必需的,这既是方便了你日常管理,也符合文件系统的初衷。
但是如果你认为计算机上的文件真的是按照你所"看到"的文件系统的树状结构那样存
放,那就真的错了。计算机的存储介质,往往是连续的,也有可能按照二进制的形式分块,
其存储在上面的数据,要么是连续的,要么可能是杂乱无章的。无论是在硬盘、光盘、还是
闪盘中,都从来不存在一个像文件系统这样的树状结构,所谓的文件系统树状结构,只是逻
辑上的结构。所以你虽然按照文件夹分类的方式管理你计算机中的资源,而这些资源的物理
位置并没有像你想象的那样真的就那么有序,而只是在逻辑上实现了有序而已。
3.2 库诞生的缘由:树状结构的先天性缺陷
文件系统的优点和成就显而易见,这里就不多做说明了。然而,随着资源成几何级数的
增长,其弊端也日益显现,这才促使了库的出现和发展。
3.2.1 分类与分类方式不唯一的矛盾
用文件夹严格分类你计算机上的资源,这当然是一种好习惯,它曾经带给你了有序和方
便,以后也将继续让你受益。然而,文件路径的缺陷在于:单一的一种树状结构的分类方式,
无法满足资源间复杂的联系。库不是来解决分类问题的,这个问题在文件路径时代已经解决
3 File System or Library
4
了,库解决的是分类方式不唯一的问题。库的诞生,才能使分类真正做到严格。对于计算机
中的各种资源,往往是有很多种分类方式,在特定的工作(这里是指广义的工作,包括娱乐、
生活,下文不再说明)中采用特定的分类方式才能获得最好的工作效率。
3.2.2 生活中的举例:人际关系
从这个角度上来说就比较容易理解了,人之间的关系是复杂的,显然你不可能找到唯一
的一个树状的结构去给社会上的人分类。你可以按户籍属于某个家庭、某个派出所,你可以
按工作单位属于某个科室、某个企业,你可以按毕业院校属于某个高中校友群、大学校友群,
当然你还可以有各种各样的朋友......当然,任何人都是严格的属于户籍体系的树状结构分类,
这一点和文件系统到是有点像。
你会因为各种分类方式而和不同的人聚在一起,这期间一般来说你不知道周围的人的户
籍情况,而你也不会去关心它。下文可以当笑话看看:如果哪天国家下一道法令,禁止通过
除户口以外的任何方式交往和联系。明明是你的同班同学,你却不可以直接跟他说话,也不
能和他走在一起。却要通过家长介绍到派出所,派出所介绍到公安分局,如果你同学户籍在
外省,那还要继续介绍到省公安厅,再层层介绍下来,才可以把你想对你同学说的话带到他
耳中,你才可以在各级介绍人的陪同下,和他一起玩。这不是非常的荒唐可笑么?但是很不
幸,只用文件路径来管理资源的方式,就是在做着这样荒唐的事情。
3.2.3 计算机中的实例:音乐库和图片库
再回到计算机的问题中来,也许你会说你严格按照地区/语言、歌手、专辑以文件夹的
形式对你计算机中的音乐进行分类,不错这当然是个好习惯,而且在7.2 节中你会发现你还
会从曾经的好习惯中受益。问题是,用这种方式真的可以把音乐"严格"的分类吗?一首歌
往往有好几个人唱,它还可以属于好几张专辑(比如先是原专辑,后有精选集)。这时你如
何用一个树状的文件路径模式去分类它?你如果只把它放在其中一个歌手的文件夹里,那对
于另一个歌手来说分类就不完整了;如果你每个文件夹都复制一份,这显然不太合适。
对于精选集的问题也是这样,也许你说你可以做一张播放列表,就可以解决精选集的播
放问题。但如果你想把整张精选集都复制到mp3 里去,该如何操作?你是不是要反复的进
入各个原专辑的文件夹,一首一首的拉到mp3 里,这是不是和3.2.2 节中所举的例子有相似
之处?
对于图片来说,同样存在这样的问题,照片的分类方式也是多种多样的,它可以属于某
个拍摄日期、时间,可以属于某次事件、地点,可以属于某个或多个人物。你一定有这样的
体会,当你和某朋友在一起欣赏照片时,经常你会打开大量的文件夹一个一个的看,而这些
文件夹中的又有相当多的照片是你和你朋友不关心的,对于这些照片你只能快速的翻页过去。
出现这种问题的本质就是因为你只使用事件或者时间的方式进行分类时,无法把"人物"这
个属性突显在分类里,这也再一次说明了,只用单一的路径树状结构分类,是不能满足管理
资源的需求的。
3.3 库的最佳拍档:搜索和索引
如果说库的出现相当于允许你以更加丰富的方式进行人际交往,那索引就相当于你的通
讯录。库的本质就是搜索,它是预先按照用户常用的分类方式,进行了各种搜索,直接把搜
索的结果呈现在了用户面前。而索引就是搜索的通讯录,它让搜索可以瞬间完成。就像你无
需再记住或者拨打你朋友的电话,直接从通讯录里找一样,关于搜索请参见另一帖子。
3.3.1 关于广义的搜索
在3.1 节中已经说明了,数据才磁盘上的存储是连续的,并不存在一个类似文件系统这
样的树状结构。那么当你打开某个文件夹时,实质上也是一种搜索,是在搜索硬盘上"文件
路径"属性是这个文件夹的所有文件。当你打开c:\windows 时,实际上就是在搜索硬盘,
3 File System or Library
5
找出所有"文件路径"属性符合c:\windows 的集合。所以,通俗的把打开文件夹理解成直
接访问资源,是错误的,它仍然是通过搜索的方式进行访问。
3.4 库严谨吗?
那么还剩下一个问题:当长时间基于库的方式访问资源时,也许有人会说了,"连文件
在哪里,叫什么名字都不知道,太不保险了。"本节就来解释这个问题。
3.4.1 计算机系统的层次结构
计算机能有今天这样的成就,能让如此多的开发人员协同工作,能让终端用户不必需要
过多的专业知识就能轻松使用,很大程度上要归功于层次化结构的设计。计算机系统被分为
若干个层次,而每一层次都将它下面的细节给盖住了,这样上面的层次只需要知道如何操作
它的下一层就行。举个通俗的例子,你去坐飞机,那么你只需要按照指引走进机舱,然后坐
下,过一段时间后你就可以从机舱出来到达目的地了。至于中间飞机到底怎么起飞、巡航、
降落,飞行员都干了些什么,你不知道也不必知道。计算机系统就是如此,面向你它是一个
完成品,你操作起来很简单,而它背后做的一系列复杂的事情你同样不知道也不必知道。而
下文要说明的一个观点是,在库的架构下,文件系统也不过是一个中间层次,是一个你不知
道也不必知道的层次。
多层次的系统在社会的各个方面都有,按照比较直观的理解,一个多层次系统必须自下
而上的整齐,才能保证整个系统的良好运作。然而在计算机系统的层次最突出的特点就是:
它可以做到上层结构严谨,而下层确是相对松散的。计算机网络就是个最鲜明的例子,当你
在和某人视频聊天时,对于你眼前的屏幕、聊天软件,你和对方建立了视频连接,对于数据
传输层,如果是使用TCP 协议,那还可以说在数据传输上你们建立连接。但是很不幸,无论
是在网络层,还是物理上,你和对方的计算机都从未真正有过一个连接。可能对于你的某一
张视频,你的鼻子部分的数据是通过一条线路到达对方,而眼睛部分走的是另一条线路!甚
至可能你后说的话先到了对方的电脑,而先说的话后到达。但是无论如何,只要网络没有出
现堵塞,你和对方就能畅通的视频聊天,彼此沟通。这就是聊天软件以及TCP/IP 协议,将
它下面的运作机制全部盖住了,让你看上去好像一直和对方在保持联系一样,这种保持的连
接,只是逻辑上的连接,物理上从来就没有这么一条连接通道。这样的机制听起来好像很让
人不放心,可它却是现代计算机网络成功的最重要的因素,有了这么一套机制才使网络带宽
得到最充分的利用,而通讯的可靠性比你想象的高很多,事实上你并不会感觉出我刚才所说
的一切。
3.4.2 松散的磁盘物理存储→相对有序的文件系统→更加有序的库
我反复强调,资源在磁盘上的存储是连续且非常松散的,但是基于这个之上的文件系统
却可以以一个严格的树状逻辑结构呈现给用户面前。再往后发展,基于文件系统之上的库,
在文件系统的层面看来虽然是相对松散的,但是在更上层"库"这个逻辑结构上却是非常的
严谨。图31
说明了这个层次关系。
3 File System or Library

很多人说不喜欢完全掌控计算机文件位置的感觉,但是,你真的知道你的文件放在哪吗?
你知道你的某个文件是在磁盘上哪个扇区、哪个柱面、哪个磁道上吗?你当然不知道,也不
需要知道,因为文件系统完全接管了这个工作,下面的细节就让它自己去吧。然而3.2 节已
经说明了文件系统的树状逻辑结构存在缺陷,单一的分类方式无法满足管理资源的需求,而
库的出现正是为了解决这一问题,如图32
。既然都只是逻辑上的结构,为何不在更上层的
逻辑结构"库"中实现真正的有序呢?

No TrackBacks

TrackBack URL: http://tech.bestjoin.net/MT/mt-tb.cgi/622

Leave a comment

About this Entry

This page contains a single entry by 风海林土 published on December 13, 2009 10:08 AM.

资源管理的革命(1) was the previous entry in this blog.

资源管理的革命(3) is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.