当前单机数据库(文件型数据库)有很多,为了选择更好的数据库,以便以后使用,在这主要对以下数据库进了插入、查询的速度进行测试,以及数据库的管理方式进行详细说明。数据库分别为:SQLLite、FireBird、Derby、HSql、PostgreSQL、JavaDB 、H2等。
1、sqlite
驱动包:sqlitejdbc-v056.jar
驱动包的版本要正确,一开始我用sqlite-jdbc-3.6.0.jar导致hibernate在大批量插入时会中断。
Hibernate 连接配置:
hibernate.dialect sqlDialect.SQLiteDialect
hibernate.connection.driver_class org.sqlite.JDBC
hibernate.connection.username
hibernate.connection.password
hibernate.connection.url jdbc:sqlite:d:/sqlite/test50w.db
其中sqlDialect.SQLiteDialect是自己编写的一个继承 org.hibernate.dialect.Dialect的java类。
连接完后系统会在url的路径下创建指定数据库名的数据库。
管理工具:下载sqliteadmin.zip包解压后执行sqliteadmin.exe.
特点:不支持存储过程,不支持外键,多进程可以同时打开同一个数据库,也可以同时 SELECT ,但只有一个进程可以立即改数据库,用like查询的方式查较慢。
优点:占用空间少,打开数据库速度快,SQLite不支持存储过程,不支持外键,多进程可以同时打开同一个数据库,也可以同时 SELECT
缺点:查询速度一般,只有一个进程可以立即改数据库
2、Firebired
官方网站:http://www.firebirdsql.org/
驱动包:jaybird-2.1.6.jar、jaybird-full-2.1.6.jar、jaybird-pool-2.1.6.jar
Hibernate连接配置:
hibernate.dialect org.hibernate.dialect.FirebirdDialectw
hibernate.connection.driver_class org.firebirdsql.jdbc.FBDriver
hibernate.connection.username sysdba
hibernate.connection.password masterkey
hibernate.connection.url jdbc:firebirdsql:localhost:d:/firebird/TEST100W.fdb
数据库的管理工具:
(1)Firebird isql tool:下载fodesk.rar解压后安装,运行该工具,在命令行输入:create database 数据库名 user 'sysdba' passwrod 'masterkey'.如下图所示:
数据库名扩展名.fdb要输入,用户名和密码必须用单引号。
完成后在路径下新增了一个扩展名为.fdb的数据库文件。
(2)FlameRobin界面管理工具
下载flamerobin-0.8.3-setup.exe安装后软件界面。
特点:文件占用空间少,插入记录时间较慢,支持多线程的读写。
优点:占用空间少,支持多线程的读写
缺点:无事务插入速度慢,建立索引后查询速度慢
3、Derby
官方网站:http://db.apache.org/derby/
驱动包:derby.jar
Hibernate连接配置:
hibernate.dialect org.hibernate.dialect.DerbyDialect
hibernate.connection.driver_class org.apache.derby.jdbcEmbeddedDriver
hibernate.connection.username
hibernate.connection.password
hibernate.connection.url jdbc:derby:d:/derby/testsize50w;create=true
连接完后系统会在url的路径下创建指定数据库名的数据库,数据库存在后可以将配置中的create=true去掉。
数据库以文件的形式存在,如testsize50w数据库,以testsize50w为文件夹,下有:
数据库管理工具:IJ管理工具
解压db-derby-10.5.3.0-bin.zip后在db-derby-10.5.3.0-bin/db-derby-10.5.3.0-bin/bin下可以找到ij.bat文件。运行既可,数据库的连接命令:connect 'jdbc:derby:d:/derby/testsize50w';
也可以安装eclipse插件,在eclipse开发时可以管理数据库,安装插件包:derby_core_plugin_10.5.3.zip
数据库特点:插入记录较慢,查询速度一般。不支持多线程的读写。
优点:查前面几页时速度快
缺点:占用空间大,无事务插入时速度慢,有事务插入时也慢,不支持多线程的读写
4、HSql
官方网站:http://hsqldb.org/
它有五种模式:Hsqldb Server、Hsqldb Web Server、Hsqldb Servlet、In-Process(Standalone)模式、Memory-Only 数据库本文主要采用In-Process(Standalone)模式。
驱动包: hsqldb.Jar
驱动包在hsqldb-2.0.0-rc9.zip解压后hsqldb-2.0.0-rc9/hsqldb/lib下,驱动包的版本要正确,一开始我用1.8版本的包,导致hibernate用独占(file)连接时无法连接上。
Hibernate连接配置:
hibernate.dialect org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.username sa
hibernate.connection.password
hibernate.connection.url jdbc:hsqldb:file:d:/hsql/test100w/test100w;ifexits=true
其中ifexits=true可以不写
管理工具类:
• org.hsqldb.util.DatabaseManager
• org.hsqldb.util.DatabaseManagerSwing
• org.hsqldb.util.Transfer
• org.hsqldb.util.QueryTool
• org.hsqldb.util.SqlTool
创建数据库:在指定的路径中新建一个数据库文件夹(test),将hsqldb.jar放在该文件夹下。并添加一个runcreate.bat文件,内容为:
java -cp hsqldb.jar org.hsqldb.server.Server -database test
运行后会创建一个数据库testhsqldb,数据库文件包括:
• test.properties
• test.script
• test.log
• test.data
• test.backup
图形管理工具:在文件夹test下添加runmanager.bat文件。内容为:
java -Xms512m -Xmx512m -cp ../hsqldb.jar org.hsqldb.util.DatabaseManager
其中当数据库大时需要添加-Xms512m -Xmx512m参数,否则可以不要。 运行该文件:
输入连接信息后,单击OK完成连接。
特点:占用空间小,查询速度快,但是超过10几万条记录时打开数据库非常慢,而且简直无法插入,占用的内存暴涨,需要调高内存后才能进行操作。插入速度快。不支持多线程的读写
优点:无事务插入时速度快,有事务插入时速度快,无索引查询速度快,建立索引后查询速度快like中文查询快
缺点:打开数据库速度慢,较耗内存。不支持多线程的读写
5、PostgreSQL
官方网站:http://www.postgresql.org/
驱动名:postgresql-8.4-701.jdbc3.jar
Hibernate 连接配置
hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class org.postgresql.Driver
hibernate.connection.username postgres
hibernate.connection.password postgresql
hibernate.connection.url jdbc:postgresql://localhost:5432/test5w?charSet=UTF-8
数据的管理工具:
它必须安装数据库软件,解压postgresql-8.4.3-1-windows.zip包后执行postgresql-8.4.3-1-windows.exe安装数据库软件。
创建新的数据库,每个数据库对应一个Id,存放在:postgresql安装目录下的PostgreSQL/8.4/data/base下。以各自的id为文件夹,下包括它的数据文件。
应用程序在连接数据库时,数据库服务必须先启动。
特点:要先安装数据库服务器,数据库较在。支持多线程的读写,用like的方式查比较慢
6、javaDb
官方网站:http://developers.sun.com/javadb/
新安装了 JDK 6 的程序员们也许会发现,除了传统的 bin、jre 等目录,JDK 6 新增了一个名为 db 的目录。这便是 Java 6 的新成员:Java DB。这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。
驱动包:jdk1.6/db/lib/derby.jar
Hibernate连接配置:与derby一样
数据库管理工具与derby一样
优点:数据库安装方便
缺点:占用空间大,分页查询时速度较慢,不支持多线程的读写
7、H2
官方网站:http://www.h2database.com/
驱动包:h2-1.2.135.jar
Hibernate连接配置:
hibernate.dialect org.hibernate.dialect.H2Dialect
hibernate.connection.driver_class org.h2.Driver
hibernate.connection.username sa
hibernate.connection.password
hibernate.connection.url jdbc:h2:d:/h2/test100w/testh2
连接完后系统会在url的路径下创建指定数据库名的数据库。
数据库管理工具:安装h2-setup-2010-05-08.exe
界面如下:
设置完成后单击connect即可.
特点:不支持多线程,数据插入快。索引后查询速度快
优点:建立索引后查询速度快
缺点:关闭数据库慢,无索引查询速度慢,数据量大时like中文查询慢,不支持多线程
以上是用hibernate的连接,用jdbc的连接相似,驱动和URL都一样。
测试结果如下: