java 嵌入式 类型工具库_Java嵌入式数据库比较

Java嵌入式数据库比较

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

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

谢谢。

18个解决方案

55 votes

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

要么

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

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

H2的开发人员进行了很好的性能评估:

[http://www.h2database.com/html/performance.html]

Sven Lilienthal answered 2019-08-05T10:25:16Z

34 votes

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

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

Chris Dail answered 2019-08-05T10:25:48Z

28 votes

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

Rohan Karwa answered 2019-08-05T10:26:13Z

21 votes

我和H2一起去,表现要比德比好得多。 有关详细信息,请阅读[http://www.h2database.com/html/performance.html]。

K2J answered 2019-08-05T10:26:37Z

14 votes

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

我在我的一个项目中使用过DB4O,我对它非常满意。 面向对象,你不需要整个Hibernate层,可以直接插入/更新/删除/查询对象! 此外,您不必担心架构,直接使用对象,DB4O完成剩下的工作!

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

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

Wookai answered 2019-08-05T10:27:23Z

12 votes

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

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

Stu Thompson answered 2019-08-05T10:27:54Z

7 votes

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

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

与数据大小成比例减慢。

很难在我们的应用外访问(例如,用于自定义报告)。

事务/磁盘同步很难正确,因此很容易丢失数据。

对于至少(2)和(3),有一些方法,但它很难; 它更容易,例如 安装MySQL。

Jason Cohen answered 2019-08-05T10:28:54Z

7 votes

neo4j是:

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

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

devstopfix answered 2019-08-05T10:29:33Z

5 votes

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

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

Uros Majeric answered 2019-08-05T10:30:04Z

4 votes

对于.Net和Java,我都是DB4O的忠实粉丝。

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

Kilhoffer answered 2019-08-05T10:30:36Z

4 votes

您将使用什么标准来评估这些标准? 如果您还不知道,那么您现在就不需要做出决定。 尝试使您的应用程序尽可能与数据库实现无关 - 提供适当的包装器,数据访问对象等,并在您掌握所有事实并做出决定时做出此决定。

如果你正在使用关系数据库和SQL,那么上面的内容不应该太难(使用JDBC等)。 确保您有大量的周围测试,以便当您想要在数据库之间切换时,您可以确定您的应用程序的功能保持不变。

我前段时间遇到过同样的问题。 我不知道要去哪个数据库,所以我的第一个解决方案使用了Derby(或HSQLDB?),之后我才能切换到HSQLDB(或Derby?无法记住哪个解决方案有效) #39; d确定我遇到问题的地方(与绩效有关)以及哪种解决方案对我有用。

Brian Agnew answered 2019-08-05T10:31:15Z

4 votes

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

willcodejavaforfood answered 2019-08-05T10:31:41Z

4 votes

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

我所听到的最好的(不是第一手经验)是berkleyDB。 但除非你开源,否则由于许可将导致你使用一条腿和一条腿......请参阅[http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing。 html]了解详情。

PS。 如果您不知道,berkeley DB不是关系数据库。

Chii answered 2019-08-05T10:32:19Z

3 votes

我使用过Derby,我真的很讨厌它的数据类型转换功能,尤其是日期/时间功能。 (号码类型)< - > Varchar转换它是一种痛苦。

因此,如果您计划在数据库语句中使用数据类型转换,请考虑使用其他嵌入式数据库,我太晚了解它。

最新的Derby Version数据类型转换

Telcontar answered 2019-08-05T10:32:57Z

3 votes

我想这篇文章有点晚了(很晚;-)),但我想添加Perst,一个面向Java和.NET的开源,面向对象的嵌入式数据库。 供您考虑。 Perst是一个用于Java的开源/双许可嵌入式数据库。 该发行版与谷歌的Android平台兼容,还包括Perst Lite for Java ME。 我们甚至构建了一个Android基准测试并制作了关于这个主题的白皮书......你可以看看这里:[http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581&sectionid= 133]

祝一切顺利,克里斯

answered 2019-08-05T10:33:29Z

3 votes

如果我是正确的,H2来自编写HSQLDB的同一个人。 如果你信任他们网站上的基准测试,它会好很多。 此外,还有一些观点认为太阳社区太快进入德比。

smartnut007 answered 2019-08-05T10:33:54Z

2 votes

我个人赞成HSQLDB,但主要是因为它是我尝试过的第一个。

据说H2更快,并且提供了更好的GUI前端(顺便说一句,它是通用的,适用于任何JDBC驱动程序)。

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

Joachim Sauer answered 2019-08-05T10:34:32Z

2 votes

我意识到你提到了SQL浏览,但你问题中的其他一切让我想建议你也考虑DB4O,这是一个很棒的简单对象DB。

Fabian Steeg answered 2019-08-05T10:34:56Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值