代码之家  ›  专栏  ›  技术社区  ›  Hosam Aly

Java嵌入式数据库比较[关闭]

  •  95
  • Hosam Aly  · 技术社区  · 17 年前

    我打算开发一个小型(Java)应用程序来管理我的财务状况。我相信我需要使用一个嵌入式数据库,但我在这个问题上没有经验。我想看看 some of the available products 但是我不能决定哪一个更适合我。 H2 , HSQLDB , Derby Berkeley DB 看起来是个不错的候选人,但我还是看不出他们之间的比较。我感谢你的帮助,比较它们,并帮助我决定使用哪一个。

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

    谢谢您。

    18 回复  |  直到 7 年前
        1
  •  55
  •   Sven Lilienthal    17 年前

    要么

    • HSQLDB -由OpenOffice使用,测试并稳定。它很容易使用。如果要编辑数据库数据,只需打开文件并编辑insert语句。

    • H2 -据说速度更快(由最初设计HSQLDB的开发人员设计)

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

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

        2
  •  34
  •   Chris Dail    17 年前

    我用 Apache Derby 几乎所有嵌入式数据库的需求。您也可以使用基于DeBy的Sun Java数据库,但DelBy的最新版本更为新近。它支持许多商业、本地数据库支持的选项,但是要小得多,而且更易于嵌入。我有一些数据库表有超过一百万条没有问题的记录。

    我大约三年前用过高速飞行实验室和高超声速。当时它有一些主要的性能问题,因为这些问题,我从它切换到了Derby。德比已经是坚实的,即使是在孵化器在阿帕奇。

        3
  •  28
  •   Rohan Karwa    13 年前

    我需要在我的一个项目中使用Java嵌入式数据库,我做了大量的研究,了解每个数据库的利弊。我写了一个博客列出了流行的嵌入式Java数据库(H2,HQLDB,德比,ObjutDB,NeN4J,OrrutDB)的利弊,你可以看看它。我选择了H2,因为我认为它最适合我的要求。 博客链接: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html 希望它有帮助!

        4
  •  20
  •   K2J    17 年前

    我会选H2,这场比赛的表现要比德比好得多。读 http://www.h2database.com/html/performance.html 更多信息。

        5
  •  14
  •   Wookai    17 年前

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

    我用过 DB4O 在我的一个项目中,我非常满意。由于面向对象,您不需要整个休眠层,可以直接插入/更新/删除/查询对象!此外,您不需要担心模式,直接使用对象,db4o完成其余的工作!

    我同意可能需要一些时间来适应这种新类型的数据库,但请检查 DB40 tutorial 看看使用数据库有多简单!

    编辑:如注释中所述,db4o自动处理类的较新版本。此外,还提供了一个在应用程序外部浏览和更新数据库的工具: http://code.google.com/p/db4o-om/

        6
  •  12
  •   Dan Halbert Jehy    13 年前

    Java DB (太阳对阿帕奇德比的分配)现在是船 在里面 JDK 6!

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

        7
  •  7
  •   Jason Cohen    17 年前

    我们在生产中使用hsqldb作为应用程序的“无配置”选项。它允许人们在不费力地建立一个真正的数据库的情况下进行试验。

    不管我们做什么 支持正常使用。原因有几个:

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

    至少对于(2)和(3)来说,有很多方法可以解决这个问题,但是很困难;例如,安装MySQL要容易得多。

        8
  •  7
  •   devstopfix    17 年前

    neo4j 是:

    一种基于嵌入式、基于磁盘、完全事务的Java持久化引擎,它存储以图表而不是表中结构化的数据

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

        9
  •  5
  •   Uros Majeric    12 年前

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

    还要注意头对头DBMS/JPA比较

        10
  •  4
  •   Kilhoffer Guffa    17 年前

    我非常喜欢 DB4O for both .Net and Java .

    自早期发布以来,性能已经变得更好了。许可模式也不错。我特别喜欢用于查询对象的选项。示例查询非常强大,并且很容易习惯。

        11
  •  4
  •   Brian Agnew    17 年前

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

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

    我前段时间也遇到过同样的问题。我不知道该使用哪个数据库,所以我的第一个解决方案使用了Derby(或hsqldb?)后来我可以切换到hsqldb(或者德比?不记得哪个解决方案起作用了)一旦我确定了哪里有问题(与性能相关),哪个解决方案真的会对我起作用。

        12
  •  4
  •   willcodejavaforfood    17 年前

    大多数事情都已经说过了,但是我可以补充一下,我在我的一些宠物项目中使用了hsql、derby和berkely-db,它们都工作得很好。所以我认为诚实并不重要。值得一提的是,hsql将自己保存为带有SQL语句的文本文件,这非常好。使开发时快速进行测试和设置数据变得非常容易。如果需要,还可以进行快速编辑。如果需要更改的话,您可以很容易地将所有这些信息传输到任何数据库:)

        13
  •  4
  •   Chii    17 年前

    HSQLDB可能会给大型应用程序带来问题,它的稳定性不太好。

    我听到的最好的(但不是第一手经验)是柏克莱德。但是,除非您打开它,否则由于许可证的原因,使用它会花费您一大笔钱……看这个 http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html 详情。

    PS.BerkleyDB不是一个关系数据库,以防你不知道。

        14
  •  3
  •   Telcontar    17 年前

    我使用过Derby,我非常讨厌它的数据类型转换函数,尤其是日期/时间函数。(数字类型)<-->varchar转换很痛苦。

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

    Latest Derby Version data type conversions

        15
  •  3
  •   smartnut007    15 年前

    如果我是正确的话,h2和写hsqldb的人一样。如果你相信他们网站上的基准点,情况会好很多。另外,有人认为太阳社区太快就跳进了德比。

        16
  •  2
  •   Joachim Sauer    17 年前

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

    据说h2更快,并且提供了更好的GUI前端(顺便说一下,它是通用的,可以与任何JDBC驱动程序一起工作)。

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

        17
  •  2
  •   Fabian Steeg    17 年前

    我知道您提到了SQL浏览,但您问题中的其他所有内容都让我想建议您也考虑 DB4O ,这就是 a great, simple object DB .

        18
  •  2
  •   Chris Mureen    16 年前

    我想我有点晚(很多晚了;-)到这个帖子,但是我想添加一个开源的、面向对象的Java和.NET嵌入式数据库PrST。供你考虑。Pistt是Java的开源/双许可嵌入式数据库。该分布与谷歌的Android平台兼容,还包括JavaME的PrST Lite。我们甚至建立了一个Android基准,并制作了一份关于这个主题的白皮书……您可以在这里看看: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581&sectionid=133

    最好的, 克里斯

    推荐文章