Java中Firebird和HSQLDB之间的选择

Java中Firebird和HSQLDB之间的选择,java,database,comparison,firebird,hsqldb,Java,Database,Comparison,Firebird,Hsqldb,我想用Java编写一个小型(5-6表)桌面应用程序。我想用Firebird 2.1。数据库但我在谷歌上看到了HSQLDB。我想在Firebird和hsqldb之间做出决定 那么我必须使用哪个数据库呢?别忘了Java 6随附,这可能是第一个解决方案的有用实现。它是重新打包的,因此功能相当强大。Firebird运行在自己的进程中,您的java应用程序需要与之通信。HSQLDB的优点是它是用java编写的,可以在同一进程中运行,这简化了安装和运行时检查(数据库是否正在运行、连接错误等)。它还可以将数据

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


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

别忘了Java 6随附,这可能是第一个解决方案的有用实现。它是重新打包的,因此功能相当强大。

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


我会选择HSQLDB或H2。

对于桌面应用程序,嵌入式数据库应该足够了。或者非常适合这个。您只需将JAR文件添加到应用程序类路径中。火鸟看起来更复杂


实际上,.

我建议使用HSQLDB,因为它是用Java实现的(因此您的平台与应用程序相同),我想您不需要FireBird提供的任何规模的项目功能

Firebird是非常好的嵌入式数据库,刚刚在


SQLite对嵌入式数据库也很有吸引力。

为什么要把它缩小到这两个方面?你看过Oracle或MySQL吗?我会选择ApacheDerby。它实际上是精心设计的,如果需要可以是事务性的(尽管从未尝试过),用Java编写是额外的优势。我发现,当删除表中的数据时,它不会“回馈”占用的磁盘空间,一旦我无法修复Derby/Java DB的一个索引..+1,它就包含在Java SE开发工具包中。hsqldb在其站点上自己声称:它更符合std sql。必须是真的。这主要是基于观点的,因此最好搁置。它在安装中是可选的。我认为H2是原始作者的第二个纯java数据库HSQLDB的继承者。。。似乎还有更多的功能Firebird嵌入在同一进程中运行。其优点是,如果以后需要扩展数据库,只需将其移动到服务器即可。Firebird Embedded是否可以在Java应用程序中运行,以便在Java.exe进程中运行?好吧,事实并非如此。@mjustin-不,它是在一个单独的进程中运行的,该列表已经被证明有很多次是有偏差的(我正在跟踪Derby、H2、HSQLDB的各种邮件列表)。它还隐藏了一些事实,例如H2缺少对类型化数组的支持,缺少对类似PL/SQL的存储过程语言的支持,不完整的
信息\u模式
实现,不太符合标准,等等。因此“更高级”可能不再适用请注意:H2不提供存储过程语言,而是允许您在Java/JDBC中这样做。编写JDBC比编写存储过程的工作量要大得多。此外,H2中的JDBC不像Firebird的存储过程语言那样进行类型和依赖性检查,因此在遇到错误之前可能不会显示错误;如果存储过程中存在依赖项,则不会阻止您删除某些内容。