2010-04-30 101 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