Send As SMS

2005-06-08

Ideas on OS/Database/Filesystem

操作系统、数据库、文件系统这三样东西应该来说是今天软件的中枢了,就存储而言,商业系统大都选择关系数据库来存储数据,而更多的则是选择使用文件系统来 存储其它各类的数据,甚至包括软件本身。操作系统则是所有系统软件、应用软件的基础件,是其它所有软件的平台。这样的形势已经运转了20多年了,成为了经 典的软件配置模式。

那么,在这个方面,还有没有什么新意可以挖掘挖掘呢?首先要看看有些什么样的苗头:
  • Winodws Rigistry:Windows的注册表可谓是Windows下最为流行的技术之一了,熟悉注册表的技巧往往是衡量一个人计算机水平够不够高的一个关键指标。也难怪,Windows的众多秘密都隐藏在这个杂乱无章的存储体系之下。从这个角度上来说,Windows中是最早的Dependency Injection模式的成功应用者。
  • Microsoft 计划在 LongHorn中推出新的文件系统 WinFS,这是一个建立在关系型数据库的基础之上的文件系统。
  • Oracle 9i/10g 如果说Oracle 9i/10g仅仅是一个关系数据库管理系统,可能有点费解,我至今还怀念的Informix Online不过10M的规模,运行的一点也不错。Oracle 9i/10g从莫种角度上来看,就像是一个操作系统,包括他内置的支持J2EE、新的OLAP选项,就有如一个在操作系统上的应用软件。
  • Oracle IFS:一个建立在Oracle数据库基础上的文件系统。看来文件系统和关系数据库相结合,也是一种趋势中技术。
如果再回忆起使用普通的文件系统来管理数据,有些什么样的弊端呢:
  • UNIX、Linux下的配置文件是满天飞,hosts, passwd, groupd, services,不一而足,在Linux下的高手比试就看谁熟悉的配置文件更多了,这一点就像Windows下使用注册表是一样的。只是,客观的说,注 册表的方式好像要更高明一些,容易管理一些。
  • 文件的查找非常痛苦。1个月前下载的文件,或者查找一封历史的邮件,呵呵,都不是一件容易的事情。Mac OS/X Tiger中的一个闪光点Lightspot,就是集成的文件搜索功能。(不过,Tiger中文件系统也根DBMS没什么关系)
  • 文件系统还是缺乏关系数据库的一些特性,比如说,增量备份、事务支持等,另外,在快速恢复等方面,文件系统也不如数据库技术成熟。
关系型数据库,目前来说,应该是非常成熟的技术了,简单的开发模型,强大的查询语言,使得关系数据库目前已构成了当今软件的最大市场(这也应了:简单的技术才能普及应用,J2EE的那般专家需要反省反省阿),但是关系模型在很多的时候,还是不具备强的数据表述能力,而且在灵活性方面,也存在一定的不足:
  • XML数据表示。XML能够表述的数据要更为复杂得多,现在也有一些XML数据库,包括XML Enable的关系数据库、native的XML数据库。
  • OODB。
  • 我以前也作过在关系数据库的基础上建立一个模拟文件系统的开发工作,就是需要文件系统的目录层次结构(这与用户的体验、习惯非常相符合),同时又提供更为丰富的元信息,并且利用建立在数据库基础上的特点,可以进行统一的数据管理。
  • 在Domino或者Exchange这样的系统中,也会有一个另类的数据库,或者称为非结构化数据库,其特点是存储非结构化的数据,尤其是文档数据、邮件数据等。
  • 包括Microsoft Office、Star Office在内的软件,对于其存储的文件格式,又定义其私有的存储模型,这些存储模型,即借鉴了文件系统的概念,也组合了关系数据库、非结构化数据库的特点。
其实,存储确实是整个软件系统的核心之所在,从某种角度上来看,是存储的数据决定了开发的软件,存储不单是一个软件的产出,而且也是一个软件开发的一部 分,像今天最为热门的IOC模式,就要求整个软件的高度可配置性。而今天的存储体系,包括了文件系统、关系数据库、XML、非结构化数据等,是一个分离 的、复杂的集合,从长远的角度上来看,有必要整合在一起,互相结合,统一管理。

会有一些什么样的整合机会呢?我想未来会出现这样的一个存储系统:
  • 支持关系型数据的存储。这样的数据被组织到 Schema.Table的存储空间中,其查询可以依赖于关系的查询语言,使用索引的机制来提供查询的优化。
  • 建立在关系数据库基础上的文件系统, 提供FileSystem的API。文件内容以BLOB/CLOB的方式进行存储。事实上,在关系型数据库的基础上建立文件系统,是一个完全可行的构想,文件系统将存储管理完全的交付给数据库系统,而重点在于提供一个逻辑的结构模型。
  • 在关系数据库的基础上,提供XML-Enable,具体而言,可以使用一个 XML 字段,这个字段上可以进行各种 XML 的操作,例如XQuery等。
  • 支持对象数据的存储,这样的对象被组织到 Class 的存储空间中,对对象的查询也可以通过索引技术来进行优化。
  • 或者说,以对象数据库为底层技术,在其上建立关系型数据库、文件系统、非结构化数据库等。
如果将这样的一个存储系统整合到操作系统中,必然可以大大的简化应用软件的开发,并进而提供更为一致的软件功能。

0 Comments:

张贴评论

<< Home