【问题标题】:Which is better H2 or HSQLDB? [closed]H2 和 HSQLDB 哪个更好? [关闭]
【发布时间】:2011-02-14 07:53:53
【问题描述】:

HSQLDB 2.0 即将发布。我想知道它是否会优于 H2,因为据我所知,大多数用户更喜欢 H2 而不是 HSQLDB。我对 HSQLDB 2.0 的 MVCC 支持很感兴趣。我了解到 H2 上的 MVCC 仍处于试验阶段。关于支持/文档​​、并发性、性能,两者之间哪个更好?

【问题讨论】:

  • 您的用例是什么?您将对数据执行哪些查询?你的数据有多大?您的应用程序读写量大吗?
  • 另一个非常好的问题已经结束。
  • 我发现关注答案似乎是表现令人着迷,尽管问题仅将其作为方面之一提及。我会对支持/文档​​、可用性(易用性、直观性、功能集)、可靠性等其他领域更感兴趣。

标签: java database comparison hsqldb h2


【解决方案1】:

请注意我在 2011 年提供了这个答案。它可能已经过时了

我公司开发了一个数据库抽象库 (jOOQ),它支持这两个数据库。我们的集成测试涵盖了很多功能,包括调用存储过程和函数、数组、嵌套选择等。就 DML 而言,对于小型数据库,我体验到 HSQLDB 2.1H2 1.3 稍快。

然而,在 DDL 操作以及启动/关闭实例时,HSQLDB 的性能远远优于 H2,即使对于小型数据库也是如此(由于 H2 在每次数据库启动时都使用 javac 重新编译存储函数!)。这取决于您存储存储函数的方式。显然,这是一个特定于 jOOQ 的“问题”,另请参阅 Thomas Mueller 的评论。

另一方面,我同意用户垃圾神,您应该针对自己的合理架构和用例测试性能。

【讨论】:

  • 存储函数只有在“作为源代码”存储时才会重新编译,这是 HSQLDB 中不可用的功能(据我所知)。如果你使用预编译的存储函数,那么就没有这样的开销。
  • @ThomasMueller:谢谢,我不知道。这将有助于大大加快我的集成测试。我会相应地调整我的答案。 HSQLDB 有一个类似 PL/SQL 的过程语言,它是更强大的 IMO。我不确定,如果该语言是预编译或解释的......
【解决方案2】:

HyperSQLH2 Database 都相当透明,因此测试可能是确定哪个更适合特定用途的最佳方法。可以进行涉及oneother 的比较。他们共享一个共同的heritage,并且都是opensource

【讨论】:

  • “垃圾桶是重要的设计工具”—loc. cit.
  • 感谢“遗产”链接。他们非常精彩地总结了历史。首先是 HSQLDB(Hypersonic SQL)然后是 H2,但是 HSQLDB 和 H2 不共享任何相同的代码,并且从今天开始是独立的项目。
  • @specialk1st: 对,这里的heritage是共同作者,不是共同代码。
猜你喜欢
  • 2011-03-06
  • 1970-01-01
  • 2014-07-26
  • 2013-12-15
  • 2016-07-10
  • 2011-08-21
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多