`

Java 小型数据库漫谈

阅读更多

Java 小型数据库漫谈

 

Derby

记得大学在Sun公司的技术宣讲会上获取一张Netbeans5.5的安装光盘,就尝鲜安装了这款IDE,刚接触java的我在试用IDE的时候对这款IDE自带的Derby数据库很是惊叹,以前做C++开发用的和谐版SQLServer2000、Access2003都是自带管理界面,使用方面但是占用空间很大的数据库。Derby全靠命令行启动,没有单独的管理界面,需要通过命令行来进行数据库管理,Netbeans只是提供了简单查询和sql运行环境,但是在开发过程中更容易测试了,不需要单独启用数据库、单独开启数据库工具来获取数据了。

 

 

HSQL


后来遇到很多开源项目,在学习、使用过程,发现这些项目在Demo中几乎都是使用了HSQL数据库。我也就顺手使用了HSQL,使用感觉很像Derby,但是HSQL自带了一个基于awt的查询界面,当时在与的IDE整合上不如Derby,H2database的管理界面最给力,基于web的能够自动代码提示,用户最少有3种方法启动访问这个web管理页面。Derby是Oracle(Sun)公司自家的孩子,现在的JDK推荐安装Derby……和Derby一样,HSQL也支持内存模式、嵌入模式、网络模式能够在不同的开发测试场景使用,HSQL很流行。

 

 

H2Database


H2database目前是由Thomas Mueller维护的,Thomas Mueller和h2的使用者(贡献)支撑了H2的生态圈。这是H2database Google中文对H2database的描述:

“数据库引擎的历史:H2的开发始于2004年5月,第一版的发布是在2005年12月14日。H2的主要作者 Thomas Mueller,也是 Hypersonic SQL数据库的原始开发者。在 2001年,他加入了 PointBase 公司,在那里他编写 PointBase Micro,一个商用的JAVA SQL数据库。在这个时候,他必须放弃 Hypersonic SQL.,在Hypersonic SQL 代码的基础上成立了 HSQLDB 开发组。H2的名字是基于 Hypersonic 2,但是 H2 并没有共享 Hypersonic SQL 和 HSQLDB的代码,H2是完全重新开发出来的.”

我不知不觉中使用上了H2database,兼容HSQL语法。在正式项目中使用H2database的内存模式当做缓存,保存一些很少修改的系统数据和业务数据。H2database的使用文档中,有一些性能对比:embedded模式和tcp模式,性能几乎完胜HSQL和Derby。H2database内置了很多函数,并且用户能够使用Java代码方便的扩充H2database的函数。但是H2database不支持存储过程,只能使用自定义函数来替换存储过程--在小型应用中,使用存储过程有写沉重吧。

在SpringSide中使用H2database代替HSQL作为测试数据库。我在一个管理项目中曾使用H2database来缓存系统中机构(树状菜单)和管理人员(不同人员权限不同,机构展示也不同)的展示信息,但是在最后上线测试时,根据客户不差钱的原则,将这个缓存功能拿掉了,将数据库服务器扩展为2个小型机集群。去掉缓存的做法简化了代码的开发和web服务器内存的压力,不用在更新的时候维护2个数据字典。

在做SEM系统的时候,一直头疼没有好的CSV解析工具,H2database提供的csv读取、写入方法能够无缝的将CSV文件内如读入到H2database数据库中。H2database就像一个瑞士军刀-还支持tcp模式下的集群。在高并发的情况下,获取connection就会出现数据异常,而且H2database的数据库文件一般是3个:数据文件、lock文件、trace文件,但是数据库文件大小膨胀的夸张,100M的CSV文件读入到数据库中,数据库文件已经达到了300M多,如果操作系统支持,H2database能够支持4T的数据库文件。

 

Berkeley DB


BDB是一款很酷的key-value数据库,java版BDB基于GPL协议,数据存储是通过了B+树算法实现的。

有3种方式访存储、访问数据(java版BDB的使用手册:BerkeleyDB-JE-GSG.pdf中有详细介绍):

通过游标cursor来遍历数据,进行更改

通过Database Record方式,在通过这这种方式存储数据的时候,可以自定义数据对象的序列化方式,或者使用系统默认的。

DPL方式(需要JDK5支持),类似于JPA。

 

实际应用

曾经编写一个模拟程序用来保存各种不同交易的资金流水记录。每种交易都会有特定格式的数据字段,如果使用传统的RDMS,就需要为每个交易创建一个表来记录流水-在一个测试系统中如果以后又新的交易添加,就会导致测试系统升级维护的压力。使用BDB-je-3.3.5来保存交易日志,由代码来区分不同的交易类型,避免了测试系统数据库表的维护。BDB-je的使用流程类似于传统的RDMS-和当今的NoSQL使用流程一样,需要创建数据库引用,完成之后需要关闭引用,通过spring的aop能够方便将这套流程分离。

注意,C版本的BDB支持嵌套事务,java 3.3.5版本不支持。

java版自带的使用说明非常全面,完全可以秒杀网上所有的教程,但这套教材是英文,估计会被有些人无视,下面的地址是部分的翻译文档。

http://blog.csdn.net/muyannian/archive/2007/08/03/1723971.aspx

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liu251/archive/2011/01/14/6138280.aspx

分享到:
评论

相关推荐

    P神-Java安全漫谈

    Java安全是指在Java编程和应用开发过程中采取的一系列措施,旨在保护Java应用程序、系统和数据免受恶意攻击、数据泄露和其他安全威胁的影响。Java安全主要涉及以下几个方面: 代码安全性:Java提供了强大的安全机制...

    漫谈Java数据库存取技术

    标题与描述中的“漫谈Java数据库存取技术”聚焦于探讨Java领域中处理数据库存取的多种技术。本文将深入解析这些技术的核心概念、优势与局限性,以及它们如何适应不断变化的IT环境。 ### JDBC:Java数据库连接的基石...

    分享Java相关的东西 - Java安全漫谈笔记相关内容.zip

    JavaThings - Java安全漫谈笔记相关《Java安全漫谈》是我在写的一点Java学习相关的随笔,不是很严谨,也不是啥高。这个存储库主要是记录并整理一下,附加一些代码。Java 安全漫谈目录Java安全漫谈 - 01.Java的动态...

    Java安全漫谈 - 01.反射篇(1)1

    Java 反射机制安全漫谈 Java 反射机制是 Java 语言中的一种强大功能,允许程序在运行时访问和修改类的信息。然而,这种功能也引入了安全隐患。本文将讨论 Java 反射机制的安全问题,重点介绍反射机制的基本概念、...

    数据库设计漫谈-多年的经验总结

    ### 数据库设计漫谈——多年的经验总结 #### 一、什么是数据库 在开始讨论数据库设计之前,首先要明确“什么是数据库”。通常来说,数据库是指一种组织化的数据集合,这些数据通过特定的方式进行存储、管理和访问...

    Java安全漫谈 - 02.反射篇(2)1

    Java反射机制是Java提供的一种强大的动态类型功能,允许程序在运行时检查类的信息并操作类的对象。在Java安全领域,反射常被用于漏洞利用和代码审计。本文将深入探讨Java反射在安全方面的应用,特别是针对类的加载、...

    Java安全漫谈 - 07.反序列化篇(1)1

    例如,当序列化包含数据库连接的类时,由于资源类型不会被序列化,因此在反序列化时需要在`__wakeup`方法中重新建立连接。这种设计虽然限制了直接的恶意注入,但也可能导致其他安全问题,如敏感信息泄露。 Java反序...

    Java安全漫谈 - 03.反射篇(3)1

    Java安全漫谈 - 反射篇(3)深入讲解了如何在Java中通过反射机制处理可变长参数和访问私有方法。反射是Java中一个强大的特性,它允许程序在运行时检查和操作类、接口、字段和方法,极大地增强了代码的灵活性。然而,这...

    数据库设计漫谈 元数据设计

    ### 数据库设计与元数据设计概述 #### 一、数据库设计的重要性 数据库设计是一个系统而复杂的工程,它不仅仅是创建几个数据表那么简单。优秀的数据库设计能够确保数据的有效存储、高效检索和方便维护,对于支撑...

    数据库设计漫谈(第2版)2011

    ### 数据库设计漫谈(第2版)2011 #### 1. 数据库基础知识 **1.1 数据库的定义** 数据库是指通过特定方式组织起来并存储于计算机中的大量数据集合。这些数据能够被迅速地检索、更新以及扩展。数据库不仅仅包括...

    Java安全漫谈 - 05.RMI篇(2)1

    原因是,通常我们在新建一个RMI Registry的时候,都会直接绑定一个对象在上面,也就是说我们示例代码中的Server其实包含了Registry和Serve

    漫谈数据库索引漫谈数据库索引漫谈数据库索引

    数据库索引是数据库管理系统中用于加速数据检索的一种数据结构,它的设计目的是为了提高查询效率,减少数据访问的时间。本文将深入探讨数据库索引的概念、B-Tree数据结构以及索引的分类和作用。 首先,B-Tree是...

    数据库系统设计漫谈.ppt

    在“数据库系统设计漫谈”中,讲师童家旺,一位阿里集团的数据库架构师,探讨了一系列关键概念和实践。 首先,数据库基本问题的调查引出了各种类型的数据库系统,包括传统的Oracle、DB2、SQL Server、MySQL和...

    Java安全漫谈与java代码审计学习知识库

    Java安全漫谈与Java代码审计是开发者在进行Java应用程序开发时必须关注的重要领域。Java作为广泛应用的编程语言,其安全性直接影响到系统稳定性和用户数据安全。以下是对标题和描述中涉及知识点的详细解释: 1. **...

    JavaThings:共享与Java相关的东西-Java安全漫谈笔记相关内容

    JavaThings-Java安全漫谈笔记相关《 Java安全漫谈》是我在写的一点Java学习相关的随笔,不是很严谨,也不是啥高科技。这个存储库主要是记录并整理一下,附加一些代码。Java安全漫谈目录 人口统计字节码:远程字节码...

    数据库系统设计漫谈童家旺.ppt

    童家旺的《数据库系统设计漫谈》深入浅出地探讨了这一主题。本文将详细解析其中的关键知识点。 首先,数据库基本问题调查中提到,不同类型的数据库在实际应用中有各自的优缺点。传统的数据库系统如Oracle、DB2、SQL...

    数据库系统设计漫谈

    阿里架构师的ppt,比较全面的介绍数据库设计的基础知识等。

    手机Java功能漫谈

    cnki 数字图书馆论文。pdf格式

    Java安全漫谈-知识星球代码审计

    《Java安全漫谈-知识星球代码审计》 Java作为广泛使用的编程语言,其安全性问题一直备受关注。在软件开发过程中,代码审计是确保系统安全的关键环节。本资料集围绕Java安全,特别是针对代码审计,深入探讨了多个...

    Java安全漫谈 - 04.RMI篇(1)1

    Java安全漫谈 - 04.RMI篇(1)1

Global site tag (gtag.js) - Google Analytics