2010-04-30 99 views
73

HSQLDB 2.0即将发布。我想知道它是否会超越H2,因为据我所知,大多数用户比HSQLDB更喜欢H2。我对HSQLDB 2.0的MVCC支持感兴趣。我已经知道H2上的MVCC仍然是试验性的。关于支持/文档​​,并发性和性能,哪一个更好?哪个更好H2或HSQLDB?

+6

你的用例是什么?您会针对您的数据执行哪些查询?你的数据有多大?您的应用程序是读取还是写入较重? – Matt 2011-04-20 15:06:05

+14

另一个完美的问题关闭。 – rtcarlson 2014-04-02 00:18:10

+0

尽管问题只是提到它作为其中一个方面,但我觉得注意力集中在答案上似乎是表现。我会对support/doc,可用性(易用性,直观性,功能集),可靠性等方面的其他方面更感兴趣。 – StaxMan 2015-05-13 18:17:36

回答

41

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

+7

“垃圾桶是一个重要的设计工具” - [_ loc。 (http://stackoverflow.com/a/22259102/230513) – trashgod 2014-09-21 22:00:08

+2

感谢您的“遗产”链接。他们对历史进行了非常精彩的总结。首先是HSQLDB(Hypersonic SQL)然后是H2,但HSQLDB和H2不共享任何相同的代码,并且是截至今日的独立项目。 – specialk1st 2016-03-18 10:16:47

+1

@ specialk1st:对,在这种情况下_heritage_是一个普通的作者,而不是普通的代码。 – trashgod 2016-03-18 17:15:21

53

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

然而,HSQLDB高度在DDL操作优于H2以及启动时/关闭的情况下,即使是一个小的数据库(在每个数据库的启动用javac由于H2的编译存储功能重新!)。这取决于你存储存储功能的方式。显然,这是一个相当特别的“问题”,另请参阅Thomas Mueller的评论。另一方面,我同意用户trashgod,你应该针对自己的合理模式和用例测试性能。

+5

存储的函数只有在被存储为“源代码”时才被重新编译,这是HSQLDB中不可用的功能(据我所知)。如果你使用预编译的存储函数,那么没有这种开销。 – 2011-10-20 09:01:08

+1

@ThomasMueller:谢谢,我不知道。这将大大加快我的集成测试。我会相应地调整我的答案。 HSQLDB具有类似PL/SQL的过程语言,这是更强大的IMO。但我不确定,如果该语言是预编译或解释的...... – 2011-10-20 09:19:26