Java嵌入式数据库比较

Hos*_*Aly 97 java database comparison embedded-database

我打算开发一个小型(Java)应用程序来管理我的财务状况.我相信我需要使用嵌入式数据库,但我对此问题没有经验.我试着看一些可用的产品,但我无法决定哪一种更适合我.H2,HSQLDB,DerbyBerkeley DB似乎都是不错的候选者,但我仍然看不出他们如何相互比较.感谢您帮助我们比较它们并帮助我决定使用哪一个.

我打算在我的应用程序中使用Hibernate(除非你建议使用DBMS提供的API),但我也希望能够使用SQL浏览工具(修改模式和更改数据)轻松编辑数据库.

谢谢.

Sve*_*hal 57

  • HSQLDB - 由OpenOffice使用,经过测试且稳定.它易于使用.如果要编辑db-data,只需打开文件并编辑insert语句即可.

要么

  • H2 - 据说更快(由开发人员,最初设计hsqldb)

您使用哪一个取决于您,具体取决于您需要多少性能和多少稳定性.

H2的开发人员提出了一个很好的性能评估:http:
//www.h2database.com/html/performance.html


Chr*_*ail 35

我使用Apache Derby几乎满足了我所有的嵌入式数据库需求.您也可以使用基于Derby的Sun的Java DB,但最新版本的Derby更新.它支持许多商业本机数据库支持的选项,但是更小,更容易嵌入.我有一些数据库表,超过一百万条记录没有问题.

大约3年前我曾经使用过HSQLDB和Hypersonic.它当时有一些主要的性能问题,由于这些问题,我从它切换到Derby.即使在Apache的孵化器中,Derby也很稳固.

  • @Hooli我无法证明这些错误,但是“ ...最近的更新是几年前”是不正确的。相对于您发表评论的时间(_August 2016_):在不到一年的时间(_October 2015_),在两个月后的(_October 2016_)之后的发布以及在一年后的时间(_October 2017-Latest_)之前的发布)。 (2认同)

Roh*_*rwa 28

我需要在我的一个项目中使用Java嵌入式数据库,我做了很多研究,了解每个数据库的优缺点.我写了一篇博客,列出了流行的嵌入式java数据库(H2,HSQLDB,Derby,ObjectDB,Neo4j,OrientDB)的优缺点,你可以看看它.我选择了H2,因为我认为它最符合我的要求.博客链接:http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html 希望它有所帮助!


K2J*_*K2J 21

我会选择H2,性能比德比要好得多.有关详细信息,请阅读http://www.h2database.com/html/performance.html.


Woo*_*kai 14

HSQLDB是一个很好的候选者(事实上它在OpenOffice中使用可能会让你们相信),但对于这样一个小型的个人应用程序,为什么不使用对象数据库(而不是经典的关系数据库)呢?

我在我的一个项目中使用过DB4O,我对此非常满意.面向对象,你不需要整个Hibernate层,可以直接插入/更新/删除/查询对象!而且,你不需要担心架构,你直接使用对象,DB4O做其余的事情!

我同意可能需要一些时间来习惯这种新型数据库,但请查看DB40教程,了解它如何轻松地使用数据库!

编辑:正如评论中所说,DB4O自动处理新版本的类.此外,还可以在此处找到用于浏览和更新应用程序外部数据库的工具:http://code.google.com/p/db4o-om/

  • 谢谢.DB4O看起来很适合这么小的项目,但我相信在应用程序之外浏览和编辑数据的能力非常重要.处理更新版本的类也会很容易吗?(例如添加/删除字段) (2认同)

Stu*_*son 12

Java DB(Sun的Apache Derby发行版)现在 JDK 6中发布!

我一直想做像Jason Cohen这样的事情,并且一直认为这看起来像是JDK发行版中最简单的方式(上周哪个版本现在是我的应用程序的要求).或者也许我只是懒惰.


Jas*_*hen 7

我们在生产中使用HSQLDB作为我们应用程序的"无配置"选项.它允许人们在没有设置真实数据库的麻烦的情况下进行试用.

但是我们支持正常使用.原因有几个:

  1. 与数据大小成比例减慢.
  2. 很难在我们的应用程序外访问(例如,用于自定义报告).
  3. 事务/磁盘同步很难正确,因此很容易丢失数据.

对于至少(2)和(3),有很多方法,但它很难; 安装MySQL要容易得多.


dev*_*fix 7

neo4j是:

嵌入式,基于磁盘的完全事务性Java持久性引擎,用于存储以图形而非表格形式构建的数据

我还没有机会尝试它 - 但看起来很有希望.请注意,这不是SQL数据库 - 您的对象图是为您保留的 - 因此它可能不适合您现有的应用程序.


Uro*_*ric 6

可在此处找到良好的比较工具:http://www.jpab.org/All/All/All.html

另请注意DBMS/JPA比较的头对头


wil*_*ood 5

大多数事情已经说过了,但我可以补充一点,我已经在我的一些宠物项目中使用了 HSQL、Derby 和 Berkely DB,它们都运行良好。所以我认为说实话并不重要。值得一提的是,HSQL 将自己保存为带有 SQL 语句的文本文件,这非常好。使您在开发时可以非常轻松地快速进行测试和设置数据。如果需要,还可以进行快速编辑。猜猜如果您还需要更改,您可以轻松地将所有这些传输到任何数据库:)


Chi*_*hii 5

HSQLDB 可能会导致大型应用程序出现问题,它不是那么稳定。

我听过的最好的(不是第一手经验)是berkleyDB。但是,除非您将其开源,否则由于许可,它会花费您一条胳膊和一条腿……请参阅此http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html详情。

附:如果您不知道,berkleyDB 不是关系数据库。