我打算开发一个小型(Java)应用程序来管理我的财务状况.我相信我需要使用嵌入式数据库,但我对此问题没有经验.我试着看一些可用的产品,但我无法决定哪一种更适合我.H2,HSQLDB,Derby和Berkeley DB似乎都是不错的候选者,但我仍然看不出他们如何相互比较.感谢您帮助我们比较它们并帮助我决定使用哪一个.
我打算在我的应用程序中使用Hibernate(除非你建议使用DBMS提供的API),但我也希望能够使用SQL浏览工具(修改模式和更改数据)轻松编辑数据库.
谢谢.
或
HSQLDB - 由OpenOffice使用,经过测试且稳定.它易于使用.如果要编辑db-data,只需打开文件并编辑insert语句即可.
要么
H2 - 据说更快(由开发人员,最初设计hsqldb)
您使用哪一个取决于您,具体取决于您需要多少性能和多少稳定性.
H2的开发人员提出了一个很好的性能评估:http:
//www.h2database.com/html/performance.html
我使用Apache Derby几乎满足了我所有的嵌入式数据库需求.您也可以使用基于Derby的Sun的Java DB,但最新版本的Derby更新.它支持许多商业本机数据库支持的选项,但是更小,更容易嵌入.我有一些数据库表,超过一百万条记录没有问题.
大约3年前我曾经使用过HSQLDB和Hypersonic.它当时有一些主要的性能问题,由于这些问题,我从它切换到Derby.即使在Apache的孵化器中,Derby也很稳固.
我需要在我的一个项目中使用Java嵌入式数据库,我做了很多研究,了解每个数据库的优缺点.我写了一篇博客,列出了流行的嵌入式java数据库(H2,HSQLDB,Derby,ObjectDB,Neo4j,OrientDB)的优缺点,你可以看看它.我选择了H2,因为我认为它最符合我的要求.博客链接:http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html 希望它有所帮助!
我会选择H2,性能比德比要好得多.有关详细信息,请阅读http://www.h2database.com/html/performance.html.
HSQLDB是一个很好的候选者(事实上它在OpenOffice中使用可能会让你们相信),但对于这样一个小型的个人应用程序,为什么不使用对象数据库(而不是经典的关系数据库)呢?
我在我的一个项目中使用过DB4O,我对此非常满意.面向对象,你不需要整个Hibernate层,可以直接插入/更新/删除/查询对象!而且,你不需要担心架构,你直接使用对象,DB4O做其余的事情!
我同意可能需要一些时间来习惯这种新型数据库,但请查看DB40教程,了解它如何轻松地使用数据库!
编辑:正如评论中所说,DB4O自动处理新版本的类.此外,还可以在此处找到用于浏览和更新应用程序外部数据库的工具:http://code.google.com/p/db4o-om/
Java DB(Sun的Apache Derby发行版)现在在 JDK 6中发布!
我一直想做像Jason Cohen这样的事情,并且一直认为这看起来像是JDK发行版中最简单的方式(上周哪个版本现在是我的应用程序的要求).或者也许我只是懒惰.
我们在生产中使用HSQLDB作为我们应用程序的"无配置"选项.它允许人们在没有设置真实数据库的麻烦的情况下进行试用.
但是我们不支持正常使用.原因有几个:
与数据大小成比例减慢.
很难在我们的应用程序外访问(例如,用于自定义报告).
事务/磁盘同步很难正确,因此很容易丢失数据.
对于至少(2)和(3),有很多方法,但它很难; 安装MySQL要容易得多.
neo4j是:
嵌入式,基于磁盘的完全事务性Java持久性引擎,用于存储以图形而非表格形式构建的数据
我还没有机会尝试它 - 但看起来很有希望.请注意,这不是SQL数据库 - 您的对象图是为您保留的 - 因此它可能不适合您现有的应用程序.
可在此处找到良好的比较工具:http://www.jpab.org/All/All/All.html
另请注意DBMS/JPA比较的头对头