Що краще H2 або HSQLDB? [зачинено]


85

Незабаром буде випущений HSQLDB 2.0. Цікаво, чи він перевершить H2, оскільки, наскільки мені відомо, більшість користувачів віддають перевагу H2, ніж HSQLDB. Я зацікавлений у підтримці MVCC HSQLDB 2.0. Я дізнався, що MVCC щодо H2 все ще експериментальний. Що стосується підтримки / документації, одночасності та продуктивності, що краще між ними?


6
Який ваш варіант використання? Які запити ви будете виконувати щодо своїх даних? Наскільки великі ваші дані? Ваша програма для читання чи написання важка?
Matt

27
Ще одне цілком гарне питання закрите.
rtcarlson,

Я вважаю захоплюючим, що фокус на відповідях здається ефективністю, незважаючи на те, що питання лише згадує це як один із аспектів. Мене б набагато більше цікавили інші сфери, такі як підтримка / документ, зручність використання (простота використання, інтуїтивність, набір функцій), надійність тощо.
StaxMan

Відповіді:


61

Зверніть увагу, що я дав цю відповідь у 2011 році. Можливо, вона застаріла

Моя компанія розробляє бібліотеку абстракції баз даних ( jOOQ ), яка підтримує обидві бази даних. Наші тести інтеграції охоплюють багато функціональних можливостей, включаючи виклик збережених процедур і функцій, масиви, вкладені виділення тощо. Я вважаю, HSQLDB 2.1що це трохи швидше, ніж H2 1.3для невеликих баз даних, що стосується DML.

Однак HSQLDB значно перевершує H2 в операціях DDL, а також при запуску / вимкненні екземпляра, навіть для невеликої бази даних (завдяки компіляції H2 збережених функцій заново за допомогою Javaca при кожному запуску бази даних!) . Це залежить від способу зберігання збережених функцій. Очевидно, це досить специфічна для jOOQ "проблема", див. Також коментар Томаса Мюллера.

З іншого боку, я погоджуюсь з користувачем trashgod, вам слід перевірити ефективність за розумною схемою та варіантом використання для себе.


7
Збережені функції перекомпілюються лише в тому випадку, якщо вони зберігаються "як вихідний код", що є функцією, яка недоступна в HSQLDB (наскільки мені відомо). Якщо ви використовуєте попередньо скомпільовані збережені функції, то таких накладних витрат немає.
Томас Мюллер,

2
@ThomasMueller: Дякую, я цього не знав. Це допоможе значно пришвидшити мої інтеграційні тести. Відповідно адаптую свою відповідь. HSQLDB має PL / SQL-подібну процедурну мову, яка є потужнішою IMO. Але я не впевнений, якщо ця мова попередньо складена або інтерпретована ...
Лукас Едер,

45

І те, HyperSQLі H2 Databaseінше є досить прозорими, тому тестування може бути найкращим підходом для визначення того, що більше підходить для певного використання. Порівняння за участю одного та іншого доступні. Вони мають спільну спадщину , і обидва вони мають відкрите джерело .


10
"смітник - це важливий інструмент проектування" - loc. цит.
trashgod

3
Дякую за посилання "спадщина". Вони досить чудово узагальнюють історію. Спочатку з'явився HSQLDB (Гіперзвуковий SQL), потім з'явився H2, але HSQLDB і H2 не мають спільного коду і на сьогодні є окремими проектами.
specialk1st

1
@ specialk1st: Правильно, спадщина в цьому випадку є загальним автором, а не загальним кодом.
trashgod
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.