Выбор между Firebird и HSQLDB в Java

Я хочу написать небольшое (5-6 таблиц) настольное приложение на Java. Я хочу использовать Firebird 2.1. база данных. Но я погуглил и увидел HSQLDB. Я хочу сделать выбор между Firebird и hsqldb.

Итак, какую базу данных я должен использовать?


person Ibrahim AKGUN    schedule 27.07.2009    source источник
comment
Почему вы сузили круг до этих двух? Вы смотрели на Oracle или MySQL?   -  person jjnguy    schedule 27.07.2009
comment
Я бы пошел с Apache Derby. На самом деле он очень хорошо продуман, может быть транзакционным при необходимости (хотя никогда не пробовал), написание на Java является дополнительным плюсом. Проблемы Я обнаружил, что он не «вернет» занятое дисковое пространство при удалении данных в таблицах, как только я не смог исправить один индекс ..   -  person ante.sabo    schedule 27.07.2009
comment
+1 для Derby / Java DB, он включен в Java SE Development Kit.   -  person mjn    schedule 06.12.2009
comment
Собственное заявление hsqldb на их сайте: он гораздо более совместим с std sql. должно быть правдой.   -  person nawfal    schedule 22.02.2013
comment
Это в первую очередь основано на мнении, и поэтому лучше отложить его.   -  person halfer    schedule 01.01.2020


Ответы (5)


Для настольного приложения должно быть достаточно встроенной базы данных. hsqldb или h2 очень хорошо для этого подходят. Вам просто нужно добавить файл JAR в путь к классам приложений. Firebird выглядит сложнее.

На самом деле H2 более продвинутый, чем hsqldb.

person Community    schedule 27.07.2009
comment
Этот список несколько раз оказался весьма необъективным (я слежу за различными списками рассылки Derby, H2, HSQLDB). И он скрывает некоторые факты, такие как отсутствие поддержки H2 для типизированных массивов, отсутствие поддержки PL / SQL-подобного языка хранимых процедур, неполная реализация information_schema, меньшая совместимость со стандартами и т.д. - person Lukas Eder; 17.06.2011
comment
Имейте в виду: H2 не предоставляет язык хранимых процедур, но вместо этого позволяет делать это на Java / JDBC. Написание JDBC потребует гораздо больше усилий, чем для написания хранимой процедуры. Кроме того, JDBC в H2 не проверяется на тип и зависимость, как язык хранимых процедур Firebird, поэтому ошибки могут не отображаться, пока вы не столкнетесь с ними; вам не запретили удалить что-то там, где есть зависимость в хранимой процедуре. - person jcalfee314; 05.08.2013

Firebird работает в собственном процессе, и ваше Java-приложение должно взаимодействовать с ним. Преимущество HSQLDB в том, что он написан на java и может работать в одном процессе, что упрощает установку и проверку во время выполнения (работает ли база данных, ошибки подключения и т. Д.). Он также может сохранять данные на диске. Дополнительной опцией является база данных H2 database, которая также может выполняться в процессе.

Я бы выбрал HSQLDB или H2.

person David Rabinowitz    schedule 27.07.2009
comment
Я думаю, что H2 является преемником HSQLDB, второй чистой Java-базы данных оригинального автора ... похоже, имеет гораздо больше возможностей - person basszero; 27.07.2009
comment
Firebird Embedded также работает в том же процессе. С тем преимуществом, что если вам понадобится масштабировать базу данных позже, вы можете просто переместить ее на сервер. - person Douglas Tosi; 28.07.2009
comment
Может ли Firebird Embedded быть встроенным в приложение Java, чтобы он работал в процессе java.exe? AFAIK это не так. - person mjn; 06.12.2009
comment
@mjustin - нет, запускается в отдельном процессе - person David Rabinowitz; 07.12.2009

Firebird - очень хорошая встроенная база данных, и в этом году просто выиграйте награду на SouceForge

SQLite также имеет хорошую прессу для встроенной базы данных.

person Hugues Van Landeghem    schedule 31.07.2009

Я рекомендую HSQLDB, потому что он реализован на Java (так что у вас та же платформа, что и приложение), и я предполагаю, что вам не нужны никакие функции для проекта такого размера, которые может предоставить FireBird.

person Senad Uka    schedule 27.07.2009

Не забывайте, что Java 6 поставляется с JavaDB, и это может быть полезной реализацией для первого решение. Это переупакованный Apache Derby и, следовательно, довольно мощный.

person Brian Agnew    schedule 27.07.2009
comment
Это необязательно при установке. - person David Rabinowitz; 27.07.2009