Javaembedded式数据库比较

我打算开发一个小型(Java)应用程序来pipe理我的财务状况。 我相信我需要使用embedded式数据库,但是我对这个问题没有经验。 我试图看看一些可用的产品 ,但我不能决定哪一个更适合我。 H2 , HSQLDB , 德比和伯克利DB似乎是很好的候选人,但是我仍然没有看到他们如何比较。 我感谢您的帮助,比较他们,帮助我决定使用哪一个。

我打算为我的应用程序使用Hibernate(除非您推荐使用DBMS提供的API),但是我也希望能够使用SQL浏览工具(修改模式和更改数据)轻松编辑数据库。

谢谢。

  • HSQLDB – 由OpenOffice使用,testing和稳定。 这很容易使用。 如果你想编辑你的db-data,你可以打开这个文件并编辑插入语句。

要么

  • H2 – 据说速度更快(由开发者,也是最初devisehsqldb的人)

你使用哪一个取决于你,取决于你需要多less性能和多less稳定性。

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

我使用Apache Derby来处理我所有的embedded式数据库需求。 您也可以使用基于Derby的Sun Java Java DB,但最新版本的Derby更新颖。 它支持许多商业,本地数据库支持的选项,但更小,更容易embedded。 我有一些数据库表,有超过一百万条logging,没有问题。

我大约3年前曾经使用过HSQLDB和Hypersonic。 当时有一些主要的性能问题,我因为这些问题而转而使用Derby。 即使是在阿帕奇的孵化器里,德比也是稳定的。

我需要在我的一个项目中使用Javaembedded式数据库,并且对每个数据库的优缺点做了大量的研究。 我写了一个博客列出了stream行的embedded式java数据库(H2,HSQLDB,Derby,ObjectDB,Neo4j,OrientDB)的优缺点,你可以看看它。 我select了H2,因为我认为它最适合我的要求。 链接为博客: http : //sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html希望它有帮助!

我会和H2一起去,performance比Derby要好得多。 阅读http://www.h2database.com/html/performance.html了解更多信息。;

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

我在我的一个项目中使用了DB4O ,对此我感到非常满意。 面向对象的,你不需要整个Hibernate层,并可以直接插入/更新/删除/查询对象! 而且,您不需要担心模式,您可以直接使用对象,而DB4O则可以完成剩下的工作!

我同意这可能需要一些时间才能适应这种新的数据库types,但是请查看DB40教程 ,看看它是如何轻松地使用DB的!

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

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

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

我们在生产中使用HSQLDB作为我们应用程序的“无configuration”选项。 它允许人们在没有build立真实数据库的麻烦的情况下进行试用。

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

  1. 按比例减小数据的大小。
  2. 难以访问我们的应用程序外(例如自定义报告)。
  3. 交易/磁盘同步是很难得到正确的,所以很容易丢失数据。

至less(2)和(3)有办法绕过它,但是很难; 例如安装MySQL要容易得多。

neo4j是:

一个基于磁盘的embedded式完全事务型Java持久性引擎,用于存储以graphics而不是表格forms构build的数据

我还没有机会尝试它 – 但它看起来很有希望。 请注意,这不是一个SQL数据库 – 您的对象图保存为您 – 所以它可能不适合您的现有应用程序。

好的比较工具可以在这里find: http : //www.jpab.org/All/All/All.html

还要注意与DBMS / JPA的比较

我是.Net和Java的DB4O的忠实粉丝。

自早期发布以来,性能已经变得更好。 许可模式也不是太糟糕。 我特别喜欢可用于查询对象的选项。 通过实例查询function非常强大,易于习惯。

你会用什么标准来评估这些? 如果你还不知道,那么你现在不需要做出决定。 尽量让你的应用程序尽可能地与数据库实现无关 – 提供适当的包装器,数据访问对象等等,当你掌握所有的事实并且你必须决定的时候做出这个决定。

如果你正在使用关系数据库和SQL,那么上面应该不会太难(使用JDBC等)。 确保你有足够的周围testing,以便当你想在数据库之间切换时,你可以确定你的应用程序的function保持不变。

前段时间我遇到了同样的问题。 我不知道要使用哪个数据库,所以我的第一个解决scheme使用了Derby(或HSQLDB?),而且之后我能够切换到HSQLDB(或者Derby?不记得哪个解决scheme工作了)我有问题(与性能有关),哪个解决scheme对我来说真的有用。

大部分事情已经说过了,但我可以补充一点,我已经在我的一些宠物项目中使用了HSQL,Derby和Berkely DB,并且它们都工作得很好。 所以我认为说实话并不重要。 有一点值得一提的是,HSQL将自己保存为一个文本文件,其中的SQL语句非常好。 使您在开发testing和快速设置数据时变得非常简单。 如果需要,也可以进行快速编辑。 猜你可以很容易地转移到任何数据库,如果你需要改变以及:)

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

我听过的最好的(不是第一手的经验)是berkleyDB。 但是,除非您开源,否则由于授权许可,您将需要花费一个arm和一条腿……请参阅http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html了解详情。;

PS。 berkleyDB不是一个关系数据库,如果你不知道。

我已经使用Derby,我真的很讨厌它的数据types转换function,特别是date/时间function。 (数字types)< – > Varchar转换这是一个痛苦。

因此,如果您计划在数据库语句中使用数据types转换,请考虑使用其他embedded式数据库,但我太晚了。

最新的德比版本数据types转换

如果我是正确的,H2是来自编写HSQLDB的同一个人。 如果你信任他们网站上的基准,这会更好。 此外,还有一些观点,太阳社区跳得太快,德比。

我个人喜欢HSQLDB,但主要是因为这是我第一次尝试。

据说H2速度更快,并提供了一个更好的GUI前端(顺便说一下,它是通用的,可以和任何JDBC驱动程序一起使用)。

至lessHSQLDB,H2和Derby提供了非常适合开发的服务器模式,因为您可以同时使用应用程序和某个工具访问数据库(embedded模式通常不允许)。

我意识到你提到了SQL浏览,但是在你的问题中的其他一切使我想build议你也考虑DB4O ,这是一个伟大的,简单的对象数据库 。

我想我有点晚了(很晚了;-))这篇文章,但我想添加一个开源的,面向对象的Java和.NETembedded式数据库的Perst。 供您考虑。 Perst是用于Java的开源/双许可证embedded式数据库。 该发行版与Google的Android平台兼容,并且还包括用于Java ME的Perst Lite。 我们甚至已经构build了一个Android基准testing,并就这个主题编写了一份白皮书。您可以在这里看一下: http : //www.mcobject.com/index.cfm ?fuseaction=download&pageid=581&sectionid=133

一切顺利,克里斯