H2数据库引擎研究导言

标签: h2 数据库 引擎 | 发表时间:2014-03-23 18:09 | 作者:qq85609655
出处:http://www.iteye.com

  有好长一段时间没有写博客了,最近这段时间觉得自己的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



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [h2 数据库 引擎] 推荐:

H2数据库引擎研究导言

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

SQLite数据库存储引擎设计

- - searchdatabase
  SQLite是一个嵌入式库并且实现了零配置、无服务端和事务功能的SQL数据库引擎. 它在广泛领域内被使用,而且单线程读写性能与MySQL比肩,并且保证ACID性.   SQLite的存储后端是采用Btree实现,多个连接可以并发操作,但是同一时间只允许一个写着存在.   SQLite在硬盘上一个数据库一个文件,每个数据库文件头部保存有这个数据库的元信息,包括版本,大小,Btree根节点位置等等.

在有序的KV引擎之上建造结构化数据库引擎

- - idea's blog
KV 数据结构极大地简化了存储引擎的接口和实现. 基本的 KV 接口一般就是 Get(), Set(), 实现上代码也很简单, 极简的实现可以直接利用编码语言提供的 map(哈希, 红黑树)来提供内存数据结构, 而且硬盘上直接 dump 内存数据即可(类似 Redis 的策略).. 不过, KV 存储引擎自己省事了, 但使用者不喜欢, 因为大部分的业务并不是 KV 所能表达的, 业务需要丰富的数据结构, 表格(table), 列表(list), map 等各种容器.

转:MySQL数据库存储引擎和分支现状

- xcv58 - 唐福林-博客雨
在MySQL经历了2008年Sun的收购和2009年Oracle收购Sun的过程中,基本处于停滞发展的情况,在可以预见的未来,MySQL是肯定会被Oracle搁置并且逐步雪藏消灭掉的. MySQL随着相应的各主创和内部开发人员的离去,缔造了各个不同的引擎和分支,让MySQL有希望继续发扬光大起来. 本文大致讲解一下MySQL目前除了主要的 MyISAM、InnoDB、Heap(Memory)、NDB 等引擎之外的其他引擎的发展和现状,以及MySQL主干以外的分支的状况,为了我们未来更好的使用MySQL或者其他分支建立一个了解基础.

MySQL数据库性能优化之存储引擎选择

- - Sky.Jian 朝阳的天空
MySQL 数据库性能优化之SQL优化,这是  MySQL数据库性能优化专题 系列的第五篇文章:. MySQL数据库性能优化之存储引擎选择. 离上一篇文章已经有很长时间没有更新这个MySQL数据库性能优化专题了,时间太紧加上人之惰性,今天这里将之前就规划好的关于存储引擎选择方面的内容更新出来,希望对大家有所帮助吧.

(H2与HBase)面向行or面向列的存储模型?

- - 淘宝网综合业务平台团队博客
(H2与HBase)面向行or面向列的存储模型.                                 目录  . 1. H2怎么存储pet表的记录?  .     1. 1 DATA_LEAF页格式  .     1. 2 DATA_NODE页格式  . 2. HBase怎么存储pet表的记录?  .

数据库sharding

- - 数据库 - ITeye博客
当团队决定自行实现sharding的时候,DAO层可能是嵌入sharding逻辑的首选位置,因为在这个层面上,每一个DAO的方法都明确地知道需要访问的数据表以及查询参数,借助这些信息可以直接定位到目标shard上,而不必像框架那样需要对SQL进行解析然后再依据配置的规则进行路由. 另一个优势是不会受ORM框架的制约.

数据库索引

- - CSDN博客推荐文章
索引是由用户创建的、能够被修改和删除的、实际存储于数据库中的物理存在;创建索引的目的是使用户能够从整体内容直接查找到某个特定部分的内容. 一般来说,索引能够提高查询,但是会增加额外的空间消耗,并且降低删除、插入和修改速度. 1.聚集索引:表数据按照索引的顺序来存储的. 2.非聚集索引:表数据存储顺序与索引顺序无关.

数据库事务

- - 数据库 - ITeye博客
事务传播发生在类似以下情形:. 假设methodB的配置是:. 如果methodA在事务里,那么methodB也在这个事务中运行. 如果methodA不在事务里,那么methodB重新建立一个事务运行. 如果methodA在事务里,那么methodB也在这个事务中运行. 如果methodA不在是事务里,那么methodB在非事务中运行.