相关主题在前面已经发了两篇文章了。虽然也有不少人阅读(心中窃喜),却罕有评论。甚感遗憾。不管是西红柿还是臭鸡蛋,我都喜欢。很多东西,都是越辨越明的。下面接着写我的一些想法(研究成果说不上,就当想法吧):
据我分析,现有的 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 的实现)