《畅想数据库管理系统CXDB介绍.doc
文本预览下载声明
CXDB介绍
高屹
2011-08-13
畅想数据库管理系统(以下简称“系统”或“CXDB”)是一个小型内嵌式数据库管理系统。
本文档的目的:让您能够用5分钟的时间对系统有一个概要的了解,再用15分钟时间简单体验系统功能。
CXDB的特性
内嵌式的数据库
CXDB的整个系统实现在一个DLL文件中,以API函数的形式提供编程接口。开发者在程序中调用这些接口函数,就可以完成全部的数据库操作,数据库操作就在您的程序中,是您程序不可分割的一部分。这个DLL文件很小,只有几百K。
加密的数据库
十多年前开发MIS系统时,用户经常要求数据在数据库内部是加密存储的,都被我严词拒绝,做不到。后来倒是再没人提这种要求,一方面是人家也知道做不到,另一方面人家对系统安全性也有了综合的认识,不再一味强调加密。但那时的印象挺深刻,所以当真的要实现自己的数据库时,第一个想法就是:数据在数据库内部要加密存储。这不一定是好事,因为加密造成性能的下降很明显,参《CXDB编程参考》中“性能测试”一章。
开发者的数据库
作为一种后台支持,任何数据库都是“开发者”的。最终用户一般不直接接触数据库,所以我一直不太明白哪儿来那么多数据库方面的专家。但一般的数据库都需要比较复杂的管理工作,比如我经常会帮别人重装数据库或恢复数据,所以,一般的数据库还是“管理者”的。
使用CXDB没有管理工作,不需要安装,CXDB的所有数据被保存在一个操作系统文件中,开发者指定文件路径就行了。
另外,会随CXDB附赠一个用户界面非常友好的图形化管理工具——CXDBManager。该工具朴实而细腻,完全可以作为“开发期工具”使用。
学习型数据库
系统的作者长期从事数据库和数据结构教学,非常希望CXDB能够用于数据库学习。
CXDB的SQL命令语法完全模仿Oracle(做了一定的简化),执行效果也与Oracle几乎完全相同。因此,在学习数据库的初始阶段使用本系统进行实践未尝不是一个好的选择。CXDBManager是绿色软件,免安装,用它来做演示和实验都很方便。
中小型的数据库
对于数据库来说,“大型”和“小型”不是一个严格的概念。虽然经常有人这么说,但没有人来做准确定义。但是,“大型”和“小型”又不仅仅是一个相对的概念,其差别不在于它们各自能存储多少T的数据,“大型”需要复杂的体系结构支撑。
设计特性决定了CXDB不会成为一个大型的数据库。尽管CXDB在外部特性上模仿Oracle,但内部机制差别巨大。将CXDB设计为一个小型数据库,是我略有自知之明的表现。但在CXDB的设计之中加入了很多高级特性,且为将来的扩充预留了空间,因此,如果正常发展下去,CXDB会成为一个“中型”数据库。
CXDB的未来
现在的系统远不是CXDB的最终目标。
其实CXDB没有最终目标。虽然隐约地想过一些事,想想而已,没太想明白,更不想说出来变成对自己的约束。但有些事是清楚的,是我最初设计时的打算,一定要做到。
为了节省时间,您可以跳过本章,先看后面的内容,反正还没实现呢。
实用的数据库
我从来都是做实用的系统,有没有人用另说,至少得让人家能用。不能把CXDB做成一个演示系统,不能让选择CXDB的人后悔。系统目前已经做了初步的性能测试,特别是针对大数据量和多线程进行了测试,可以说目前已初步可用。
事实上,系统已经在几个实际项目中得到了应用。
提供十进制的精度
有些小型数据库对数值数据仅提供整数、实数等类型支持。CXDB既然模仿了Oracle的Number类型,就得提供十进制的数据精度,保证能够存储商业数据。
自主的内存管理
现在CXDB仍然调用malloc来进行内存分配。由于数据库处理的数据类型与一般编程语言(如C语言)所能表达的数据类型差距甚大,所以CXDB在运行的过程中经常需要动态地申请内存。malloc既不安全又费时,这一直是我的心病。将来CXDB一定要自主地管理内存,关键是我“想”实现这一部分功能。
数据库服务器
CXDB在设计上仅支持线程间的共享,不允许多个进程同时打开相同的数据库文件。这看似限制,其实是为将来实现为一个数据库服务器做准备。
ODBC接口
实现实用的ODBC接口,可对本地或远程的CXDB进行访问。既能提高编程的方便性,又能扩大CXDB的适用范围,还省得为各类编程工具设计控件。
跨平台
系统用C语言实现,具备了跨平台的可能性。目前在Windows上实现,将来至少要移植到Linux上。
其它的
增强LOB字段的处理能力,触发器,PL/SQL等。
数据库的开发是如此好玩儿,能想到的我都想做,但上述内容是必做的。
系统初体验
现在就可以使用CXDBManager来体验CXDB了。CXDBManager的可执行文件在Bin子目录下。
一般操作
CXDBManager的主界面如图:
使用它可以对多个数据库
显示全部