H2数据库引擎研究导言

  有好长一段时间没有写博客了,最近这段时间觉得自己的Java基础不是很扎实,所以又重新捡起《Think in Java》这本来看了。Java高级特性更是接触得少,如网络编程,多线程编程等,所以最近就想开始学习这些内容,已经看了一段时间,以前就有看一些好的开源软件源代码的想法,也陆陆续续看了一些,但都没坚持下来,这次要下定决心好好看一个软件的源代码,数据库的一些高级特性和优化方面也涉及的很少,最近也想好好学习学习,所以由于以上一些想法就产生了研究一个java编写的数据库的想法。

  Java编写的数据库有不少,有Deby,H2sdb和H2等等数据库,选择一个合适的数据库深入研究一下非常有必要,它必须具备以下特性。

1.不能太庞大,必须小巧精悍,易于阅读代码。

2.使用Java代码编写,而且代码质量高,具有较高的可借鉴性。

3.具有比较完备的数据库特性,如支client/server连接,能够支持标准的SQL语句,支持存储过程等。

4.具有良好的性能。

  根据这些特点最终选择了H2,其实任何一个能够被大量应用和广泛使用的软件都应该非常不错,Deby,H2sdb也是非常不错的数据库,但是任何东西都是只有最适合的,没有最好的,H2可以用于学习、小型应用中,但是企业级的实际生成中我暂时是不敢使用H2的,可是随着以后的发展谁也不好说,而且最近springside 3.2.1也将它演示和测试用的数据库改成了H2,看来H2已经得到了很多开源人示的支持。

  如下是它官网上的性能比较,通过这些比较你就能看出它与其它的数据库相比,可以得出结论:它是在开源数据库中一个支持的特性最多,体积最小而且是纯Java编写数据库,这正是我所需要的。It's a best choice for me!

 

 

H2

Derby

HSQLDB

MySQL

PostgreSQL

Pure Java(纯JAVA编写)

Yes

Yes

Yes

No

No

Memory Mode(内存模式)

Yes

Yes

Yes

No

No

Transaction Isolation(事隔离)

Yes

Yes

No

Yes

Yes

Cost Based Optimizer(基于成本优化器)

Yes

Yes

No

Yes

Yes

Encrypted Database(加密数据库)

Yes

Yes

No

No

No

ODBC Driver

Yes

No

No

Yes

Yes

Fulltext Search(全文检索)

Yes

No

No

Yes

Yes

Multi Version Concurrency(多版本并发控制

Yes

No

No

No

Yes

Footprint (jar/dll size)(体积)

~1 MB

~2 MB

~600 KB

~4 MB

~6 MB

你可能感兴趣的:(数据库)