代码改变世界

关于数据访问模式(二)—— 说说元数据

2005-07-22 15:59 FantasySoft 阅读(...) 评论(...) 编辑 收藏
        [前言] 在这个系列的第二篇,我依旧不务正业,只字不提具体模式。元数据是一个很基本的概念,如果大家看到有关O/R Mapping的文章,都可能会看到元数据这个的名词。因此,在这篇中,还是先说说元数据吧。

        提到元数据(Metadata),在IT行业中,应该是无人不知无人不晓了。即使你不是在IT行业里面耕耘,也会或多或少的元数据打过交道,因为在
Web的世界中,元数据几乎是无处不在的。
        说来也惭愧,作为一个程序员,对于元数据的了解还是十分的肤浅。纵使搜肠刮肚,也只能想出一个最简单的定义:元数据就是关于数据的数据。光看这样的定义,真的让人摸不着头脑。于是我在网上Google了一把,结果让我找到了一篇好文章:Introduction to Metadata,看了以后令我茅塞顿开。
        元数据是针对数据对象的。而通常要描述一个数据对象,需要从以下三个方面进行的:

        内    容   (Content):  它描述数据对象所包含的最本质的东西。 
       上下文   (Context):  它表示一个数据对象存在的背景,条件以及与外界环境的联系;
        结    构 (Structure):它表示着数据对象是如何组织的,而这个组织包含内在形式和外在形式。

        让我们来假设一个情景:我们到书店去买书,通常是如何去选择一本书呢?把一本书当作是一个数据对象想一想,是不是有点心领神会的感觉呢?好,让我们情景再现一下。当你到书店去选购ADO.NET的书的时候,你应该只会在.NET的书架旁驻足,而不会跑到J2EE的书架旁流连忘返。你在.NET书架上取下一本关于ADO.NET的书,阅读一下内容简介,或者随意选取某一个章节来作快速浏览。在第一步,你关注的是内容;接着你可能会关注一下这本书的价格如何(这年头,书真贵的要命),哪个出版社出版的(现在垃圾出版社出版的垃圾书比生活垃圾还要多,一不留神就给奸商骗了),作者是谁(好的作者名声在外,自然会增加你的购买欲望),什么时候出版的(如果是陈年老书,讲述的内容已经outdate,恐怕你会犹豫了)等等的问题。在第二步,你关注的是上下文;最后的最后,如果你比较专业,你还可能会看看书的目录,了解一下这本书的内容是如何组织的,是否可以跳着看,是否便于检索等;如果这本书分上中下三册,它们之间会不会环环相扣,会不会出现要不全买,要不全都不买的尴尬局面?在这最后的一步,你关注的是结构。 好了,考虑完以上的三个方面,你一定可以决定是否买这本书了,因为整本书的基本信息,你都已经掌握了。你一定会发现,你获取与书籍相关信息的过程就是一个为书籍建立元数据的过程。

        在《Introduction to Metadata》一文中,对于元数据给出了这样的定义:the sum total of what one can say about any information object at any level of aggregation。我想这应该算得上是对元数据最简单且最泛化的定义了。至于细化至软件中,元数据的定义以及应用又是怎样的呢?偶现在就知道.NET中大量应用了元数据,O/R Mapping框架通常通过元数据去定义映射的细节等。噢,认识还是很肤浅的说,达人们可否给我深入地说说呢?谢谢啦!:)