H2或HSQLDB哪个更好?[关闭]


85

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


6
您的用例是什么?您将对数据执行哪些查询?您的数据有多大?您的应用程序读写是否繁重?
马特

27
另一个完美的问题结束了。
rtcarlson 2014年

尽管发现问题只是其中之一,但对答案的关注似乎是表现,这让我感到很有趣。我将对支持/文档​​,可用性(易用性,直观性,功能集),可靠性等其他领域感兴趣。
StaxMan

Answers:


61

请注意,我在2011年提供了此答案。它可能已过时

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

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

另一方面,我同意用户垃圾桶,您应该针对合理的模式和用例测试性能。


7
仅当存储的功能作为“源代码”存储时才重新编译,这是HSQLDB中不可用的功能(据我所知)。如果使用预编译的存储函数,则不会有此类开销。
Thomas Mueller

2
@ThomasMueller:谢谢,我不知道。这将大大帮助我加快集成测试的速度。我将相应地调整答案。HSQLDB具有类似于PL / SQL的过程语言,这是更强大的IMO。不过,我不确定该语言是否已预先编译或解释...
Lukas Eder

45

两个HyperSQLH2 Database相当透明的,所以测试可以是确定哪个更适于特定用途的最佳方法。比较涉及一个其他可用。他们都有一个共同的遗产,又都是开放 源码


10
“垃圾桶是重要的设计工具” 。cit。
垃圾桶

3
感谢您的“遗产”链接。他们很好地总结了历史。首先出现的是HSQLDB(Hypersonic SQL),然后出现的是H2,但是HSQLDB和H2并不共享任何相同的代码,并且至今都是独立的项目。
specialk1st

1
@ specialk1st:是的,这种情况下的遗产是普通作者,而不是普通代码。
垃圾神
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.