论坛首页 Java企业应用论坛

开源Java关系数据库——One$DB介绍

浏览 5228 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-07-16  
首先看到One$DB这个标题,你是否觉得很有意思呢?One Dollar DB(一美元数据库),其实它还有一个非常优雅的名称:Daffodil DB(水仙花数据库)。Daffodil DB是一个商业Java嵌入式数据库,它的开源版本就叫One$DB。但是One$DB同时提供嵌入版和网络版,它在sourceforge.net的地址是:http://sourceforge.net/projects/daffodildb/,目前最新的稳定版是4.0。有关Daffodil DB更多信息可见http://www.daffodildb.com/

一. 特点
  One$DB和和HSQLDB、Mckio相比最大的特点就是功能强大(不愧有商业软件的血统啊),具备一定企业数据库的特征。下面简要列举三点,更多可查看One$DB和Daffodil DB的文档。

1. SQL-99支持,:One$DB支持SQL-99几乎全部的结构(constructs),包括触发器,可更新视图,表和列级别的约束,模式(schema),域,,用户, 角色,授权,批处理,连接,聚合函数,丰富的内置函数,子查询,交际和并集,all isolation levels,save-point,丰富的SQL数据类型集,存储过程,分布式事务。 

2. JDBC-3支持: Type-4 JDBC驱动提供了JDBC 3.0全部特征的支持,包括可选的特征,如save-points,rowset,XA,连接池,批处理,可更新结果集,所有类型的SELECT语句, 结果集局部获取等等,同时已经通过了Sun Microsystems为J2EE程序的认证。

3. 备份还原支持:支持在线和离线两张方式的数据备份和还原。
总结一下,我的感觉就是功能可比Oracle,易用可比Mysql。

二. 安装使用
  One$DB的安装非常方便,到Sourceforge下载一个zip压缩文件OneDollarDB4_0.zip,解压后得到OneDollarDB4_0.jar,然后在控制台下java –jar OneDollarDB4_0.jar,就会出来One$DB图像安装界面,之后基本就是下一步下一步完成了。

   One$DB使用同样方便,提供的管理工具——One$DB Browser可以像SQL Server企业管理器一样进行表设计,数据更新,数据备份和存储。该工具位于安装目录下的Tools目录下。同目录还有Shell工具,用于在控制台下执行各种SQL命令;StartServer和StopServer,用于启动和关闭Server。Browser和Shell均有Server和Embedded两个版本。Embedded版的直接可以使用,Server版的当然要先StartServer了。

  One$DB系统默认的账号是DAFFODIL/daffodil(相当于超管)和PUBLIC/PUBLIC(公共账号,未授权之前一般只有Connect权限)。默认的数据库目录是安装目录下的database目录,这里要注意的是,不管是Server模式还是Embedded模式,One$DB都可以支持多个数据库,这个能力HSQLDB或Mckio都不具备的,更多操作就要看系统提供的文档了。

  One$DB的文档非常系统、详尽和规范。所有文档在安装目录/docs/pdf目录下。包括Getting Start,System Guide,Tools Guide SQL Reference Guide,JDBC Reference Guide五个PDF文档,通过它们上手就非常容易了。

  这里特别讲一下国际化的问题:和学习其它数据库一样,一开始我就通过One$DB Browser建立先创建一个数据库,创建选项里是有Unicode选项的,
那我们当然就选上了,接下去建表,插入数据,死活不能插入中文。于是使劲搜索五个文档里的关于国际化方面的描述,终于被我发现,原来One$DB在建表的时候才确定表的国家语言的,语法是这样的:
CREATE TABLE <table name> < table element list > [ COUNTRY <country code> LANGUAGE <language code> ]

详细见SQL Reference Guide 112页,国家和语言的代码在最后附录里有,如我建立一个member表,就应该这样:
CREATE TABLE member (
  id integer AUTOINCREMENT NOT NULL PRIMARY KEY,
name varchar(20);,
…
); COUNTRY cn LANGUAGE zh;

这一点让我感觉不是很爽!

三. 关于性能
作为一个数据库管理系统,性能问题总是无法避免的。但是同时作为一个Java硬盘数据库,我们也不应对它抱有太大的期望。我大概试了下,在网络模式下,插入和修改10万条数据,均采用批处理方式操作,表结构如下:
CREATE TABLE Test (
id INTEGER AUTOINCREMENT NOT NULL PRIMARY KEY,,
some_text VARCHAR(200);,
do_time TIMESTAMP
); Country CN LANGUAGE ZH;
CREATE INDEX IX_TEST_ST ON test(some_text);;
CREATE INDEX IX_TEST_DT ON test(do_time);;

整个任务完成时间都在10-20分钟之间,这点和HSQLDB差距是非常明显的,和Mckio类似,当然这个数字只能说明个大概,和环境的关系太大。查询问题到不大。其实我心里十分希望它能有一个可调整缓存机制,但我在查看文档时只看到有库文件的初始大小,增加系数,簇大小和虚拟机堆大小等设置,但是没有见到有个可调整的Cache机制,也许这是One$DB的不足之处吧。

四. 结论
One$DB完善的功能和开源的特性,这让我们在HSQLDB之后又多了一个选择。而在应用领域上,可以做很多延伸,比如大型企业数据库的演示版,HSQLDB在功能上的限制根本无法完成;小型桌面商业程序的直接嵌入应用,这个相信One$DB能够胜任了。

----------------------------------------
后记:我也是在google里偶尔发现这个东西不久(起因是我希望找一个能支持存储过程和触发器的Java嵌入式数据库),很多东西也不是很了解,错误之处希望大家指正,赐教。匆匆完成于2005年7月16日 晚11点

2005年7月18日 第一次修改
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics