【问题标题】:Choosing between Firebird and HSQLDB in Java在 Java 中的 Firebird 和 HSQLDB 之间进行选择
【发布时间】:2010-11-14 08:24:35
【问题描述】:

我想用 Java 编写一个小型(5-6 表)桌面应用程序。我想使用火鸟 2.1。数据库。但我用谷歌搜索并看到了 HSQLDB。我想在 Firebird 和 hsqldb 之间做一个决定。

那么我必须使用哪个数据库?

【问题讨论】:

  • 你为什么把范围缩小到这两个?你看过 Oracle 还是 MySQL?
  • 我会选择 Apache Derby。它实际上制作得非常好,如果需要可以是事务性的(尽管从未尝试过),用 Java 编写是额外的优势。问题我发现,当您删除表中的数据时,一旦我无法修复一个索引,它就不会“归还”占用的磁盘空间..
  • +1 用于 Derby / Java DB,它包含在 Java SE 开发工具包中。
  • hsqldb 在其网站上的声明:它更符合 std sql。必须是真的。
  • 这主要是基于意见,因此最好搁置。

标签: java database comparison firebird hsqldb


【解决方案1】:

Firebird 在自己的进程中运行,您的 java 应用程序需要与之通信。 HSQLDB 的优点是它是用 java 编写的,并且可以在同一个进程中运行,这简化了您的安装和运行时检查(db 是否正在运行,连接错误等)。它也可以将数据持久化到磁盘。另一个选项是H2 database db,它也可以在进程中运行。

我会选择 HSQLDB 或 H2。

【讨论】:

  • 我认为H2是HSQLDB的继任者,原作者的第二个纯java数据库......似乎有更多的功能
  • Firebird Embedded 也在同一进程中运行。其优势在于,如果您以后需要扩展数据库,您只需将其移至服务器即可。
  • Firebird Embedded 能否嵌入在 Java 应用程序中运行,以便在 java.exe 进程中运行? AFAIK 事实并非如此。
  • @mjustin - 不,它在单独的进程中运行
【解决方案2】:

对于桌面应用程序,嵌入式数据库就足够了。 hsqldbh2 非常适合这种情况。您只需要将 JAR 文件添加到您的应用程序类路径中。 Firebird 看起来更复杂。

其实H2 is more advanced than hsqldb

【讨论】:

  • 这个列表已经被证明是相当有偏见的几次(我正在关注 Derby、H2、HSQLDB 的各种邮件列表)。它隐藏了一些事实,例如 H2 缺少对类型化数组的支持、缺少对类似 PL/SQL 的存储过程语言的支持、不完整的information_schema 实现、不太符合标准等。所以“更高级”可能不成立(不再)
  • 请注意:H2 不提供存储过程语言,而是让您在 Java/JDBC 中做到这一点。编写 JDBC 要比编写存储过程多得多。此外,H2 中的 JDBC 没有像 Firebird 的存储过程语言那样检查类型和依赖关系,因此在遇到错误之前可能不会显示错误;您不会阻止删除存储过程中存在依赖关系的内容。
【解决方案3】:

Firebird 是非常好的嵌入式数据库,刚刚在SouceForge this year 获奖

SQLite 对嵌入式数据库也有很好的宣传。

【讨论】:

    【解决方案4】:

    我推荐 HSQLDB,因为它是用 Java 实现的(因此您与应用程序具有相同的平台),而且我猜您不需要 FireBird 可以提供的那种规模的项目的任何功能。

    【讨论】:

      【解决方案5】:

      不要忘记 Java 6 附带了JavaDB,这对于第一个解决方案可能是一个有用的实现。这是一个重新包装的Apache Derby,因此非常强大。

      【讨论】:

      • 安装时可选。
      猜你喜欢
      • 2011-01-29
      • 2010-12-06
      • 2012-04-13
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多