相关主题在前面已经发了两篇文章了。虽然也有不少人阅读(心中窃喜),却罕有评论。甚感遗憾。不管是西红柿还是臭鸡蛋,我都喜欢。很多东西,都是越辨越明的。下面接着写我的一些想法(研究成果说不上,就当想法吧):
据我分析,现有的native-XML数据库,又过分强调了对XML文档的处理,而忽视了数据库本身的作用:对客观事物的描述和存储。所以在处理传统的关系型数据库所涉及的业务领域,并没有显示出多大的优势,反而会有这样或者那样的不足。
针对以上的叙述,计划中的XMLDB应该首要实现一下目标(弥补普通数据库的不足和解决一般native-XML数据库的不足):
基于描述的数据库设计,不同于一般数据库的基于数据的数据库设计,或者NXD数据库基于文档的的数据库设计,新的XMLDB,将是基于描述的数据库设计,即,基于对客观事物的描述,充分发挥XML文档在事物描述上的优势,以接近自然语言的方式来存储事物。
增加版本的概念。能够让不同版本的数据文件协同工作。
数据分布式存储和强大的聚合能力。最小的储存单位不是XML 储存单元,而是XML DB fragment,可以把同一个表的内容以不同的方式存贮在不同的物理位置,同时对用户透明,利用转换器和聚合器,对用户来说还是一个完整的XMLDBData对象。
基于多线程的数据检索能力,能够比较迅速的找到所需要的数据内容。利用多线程,可以对一个表的多个XMLDB fragment同时进行检索,然后通过聚合器,聚合成一个完整的XMLDBData对象,实现数据的快速检索。
支持基于XML的查询语言(XQuery?maybe yes,maybe no)。先实现一个独有的,基于XML的查询方式。在这个基础上,通过转化器,可以同时提供对XQuery,甚至SQL语言的支持
支持传统数据库里一些基本的概念和功能,比如数据同步,锁的操作,以及事务的操作。这些都是数据库里面一些很经典也很重要的概念,是一个完整的数据库所不可缺少的一部分,应该支持和实现。
提供完备的Adapter机制,支持对传统SQL语言操作方式的支持。
提供用户自定义函数功能。先实现用户使用Java语言自定义函数,技术成熟后,提供脚本语言的支持。
提供多种连接方式和安全解决方案。提供https,Soap等多种网络连接方式,并且数据库本身是一个开放的接口,可以加载不同的安全解决方案。
提供丰富的连接和调试工具(属于可选目标,除了命令行调试工具外,其他的将不包括在核心组件中)
接着将要讨论的设计方案,重点就是为了实现上面所论述的那些目标,我将完成系统设计和核心模块的详细设计,争取把它做成一个开源的数据库软件,我们一起努力。(以下内容主要是指XMLDB的Java的实现)