Сравнение встроенных баз данных Java

Я намерен разработать небольшое (Java) приложение для управления моими финансами. Я считаю, что мне нужно использовать встроенную базу данных, но у меня нет опыта в этой проблеме. Я попытался посмотреть некоторые из доступных продуктов, но я не могу решить, какой из них мне больше подходит. H2, HSQLDB, Derby и Berkeley DB, кажется, хорошие кандидаты, но я до сих пор не знаю Посмотрите, как они сравниваются друг с другом. Я ценю вашу помощь, сравнивая их и помогая мне решить, какой из них использовать.

Я намерен использовать Hibernate для своего приложения (если вы не порекомендуете использовать API, предоставляемый СУБД), но я также хочу иметь возможность легко редактировать базу данных с помощью инструмента просмотра SQL (изменение схемы и изменение данных).

Спасибо.

Ответ 1

Либо

  • HSQLDB - Используется OpenOffice, проверен и стабилен. Он прост в использовании. Если вы хотите отредактировать свои db-данные, вы можете просто открыть файл и отредактировать инструкции вставки.

или

  • H2 - Говорят, что быстрее (разработчиком, который изначально разработал hsqldb)

Какой из них вы используете, зависит от того, насколько высокая производительность и насколько вам нужна стабильность.

Разработчик H2 предложил хорошую оценку эффективности:
http://www.h2database.com/html/performance.html

Ответ 2

Я использую Apache Derby для почти всех моих встроенных потребностей в базе данных. Вы также можете использовать Sun Java DB, основанную на Derby, но последняя версия Derby намного новее. Он поддерживает множество опций, которые поддерживают коммерческие, собственные базы данных, но намного меньше и проще встраивать. У меня были несколько таблиц базы данных с более чем миллионом записей без проблем.

Я использовал HSQLDB и Hypersonic около 3 лет назад. В то время у него были некоторые проблемы с производительностью, и я переключился на Дерби из-за этих проблем. Derby был прочным, даже когда он находился в инкубаторе в Apache.

Ответ 3

Мне нужно было использовать встроенную базу данных Java в одном из моих проектов, и я много исследовал понимание плюсов и минусов каждой базы данных. Я написал блог, в котором перечислены плюсы и минусы популярных встроенных баз Java (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), вы можете посмотреть на него. Я выбрал H2, поскольку я считал, что это наилучшим образом соответствует моим требованиям. Ссылка на блог: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html Надеюсь, это поможет!

Ответ 5

HSQLDB является хорошим кандидатом (тот факт, что он используется в OpenOffice, может убедить некоторых из вас), но для такого небольшого personnal application, почему бы не использовать базу данных объектов (вместо классической базы данных отношений)?

Я использовал DB4O в одном из моих проектов, и я очень доволен им. Будучи объектно-ориентированным, вам не нужен весь уровень Hibernate и он может напрямую вставлять/обновлять/удалять/запрашивать объекты! Более того, вам не нужно беспокоиться о схеме, вы напрямую работаете с объектами, а DB4O делает все остальное!

Я согласен, что может понадобиться некоторое время, чтобы привыкнуть к этому новому типу базы данных, но проверьте руководство DB40, чтобы узнать, насколько это легко делает работу с БД!

EDIT: Как сказано в комментариях, DB4O автоматически обрабатывает новые версии классов. Кроме того, здесь доступен инструмент для просмотра и обновления базы данных вне приложения: http://code.google.com/p/db4o-om/

Ответ 6

Java DB (распределение Sun Apache Derby) теперь поставляется в JDK 6!

Я хотел сделать что-то вроде Джейсона Коэна и думал, что это выглядит как самый простой способ быть в дистрибутиве JDK (который на прошлой неделе стал требованием для моего приложения). Или, может быть, я просто ленив.

Ответ 7

Мы используем HSQLDB в качестве опции "без конфигурации" для нашего приложения. Это позволяет людям проходить пробную проверку без хлопот по созданию реальной базы данных.

Однако мы не поддерживаем его для нормального использования. Причины несколько:

  • Замедляет пропорционально размеру данных.
  • Трудно получить доступ за пределами нашего приложения (например, для пользовательских отчетов).
  • Транзакции/дисковая синхронизация трудно получить правильно, поэтому легко потерять данные.

По крайней мере (2) и (3) существуют способы вокруг него, но это сложно; это намного проще, например, установите MySQL.

Ответ 8

neo4j:

встроенный, основанный на диске, полностью транзакционный механизм сохранения Java, который хранит данные, структурированные в графиках, а не в таблицах

У меня еще не было возможности попробовать это, но это выглядит очень многообещающе. Обратите внимание, что это не база данных SQL - ваш графический объект сохраняется для вас, поэтому он может быть непригоден для вашего существующего приложения.

Ответ 9

Хороший инструмент сравнения можно найти здесь: http://www.jpab.org/All/All/All.html

Обратите внимание, что сравнение между СУБД /JPA с Head to Head

Ответ 10

Я большой поклонник DB4O для .Net и Java.

Производительность стала намного лучше с ранних выпусков. Модель лицензирования тоже не так уж плоха. Мне особенно нравятся параметры, доступные для запроса ваших объектов. Запрос на пример очень мощный и простой в использовании.

Ответ 11

Какие критерии вы будете использовать для их оценки? Если вы еще не знаете, то вам не нужно сейчас решать. Попытайтесь сделать свое приложение как агрегированное как средство реализации базы данных, так как вы можете предоставить соответствующие обертки, объекты доступа к данным и т.д., И принять это решение, когда у вас есть все факты, которые вы должны решить, и вы должны решить.

Если вы используете реляционные базы данных и SQL, то вышеуказанное не должно быть слишком сложным (с использованием JDBC и т.д.). Убедитесь, что у вас много окружающих тестов, поэтому, когда вы хотите переключаться между базами данных, вы можете определить, что ваша функциональность приложения остается прежней.

Я столкнулся с тем же вопросом некоторое время назад. Я не знал, к какой базе данных идти, поэтому мое первое решение использовало Derby (или HSQLDB?), И позже я смог переключиться на HSQLDB (или Derby? Не могу вспомнить, какое решение работал), как только я определил, где У меня были проблемы (касающиеся производительности), и какое решение действительно сработало бы для меня.

Ответ 12

Большинство вещей уже было сказано, но я могу просто добавить, что я использовал HSQL, Derby и Berkely DB в нескольких моих домашних проектах, и все они отлично работали. Поэтому я не думаю, что это действительно важно, если честно. Стоит упомянуть, что HSQL сохраняет себя как текстовый файл с SQL-заявлениями, что довольно хорошо. Делает это очень легко, когда вы развиваетесь, чтобы быстро выполнять тесты и настраивать данные. Может также выполнять быстрые изменения, если это необходимо. Угадайте, что вы можете легко перенести все это в любую базу данных, если вам когда-либо понадобится изменить:)

Ответ 13

HSQLDB может создавать проблемы для больших приложений, что не совсем стабильно.

Лучшее, что я слышал (но не первый опыт), это berkleyDB. Но если вы не откроете его, это будет стоить вам руки и ноги для использования из-за лицензирования... см. Этот http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html для получения более подробной информации,

пс. berkleyDB не является реляционной базой данных, если вы этого не знали.

Ответ 14

Я использовал Derby, и я действительно ненавижу его функции преобразования типа данных, особенно функции даты/времени. (Number Type) ↔ Преобразование Varchar - это боль.

Таким образом, если вы планируете использовать преобразования типа данных в своих операциях БД, рассмотрите использование встроенной БД, я узнаю это слишком поздно.

Последние преобразования типов данных Derby Version

Ответ 15

Если я прав, то H2 принадлежит тем же парням, которые писали HSQLDB. Это намного лучше, если вы доверяете бенчмаркам на своем сайте. Кроме того, есть мнение, что солнечное сообщество слишком быстро прыгнуло в Дерби.

Ответ 16

Я понимаю, что вы упомянули просмотр SQL, но все остальное в вашем вопросе заставляет меня хотеть предложить вам также рассмотреть DB4O, который отличный, простой объект DB.

Ответ 17

Я лично пользуюсь HSQLDB, но в основном потому, что это был первый, который я пробовал.

H2 называется быстрее и обеспечивает более удобный интерфейс GUI (который является общим и работает с любым драйвером JDBC, кстати).

По крайней мере, HSQLDB, H2 и Derby предоставляют режимы сервера, которые отлично подходят для разработки, поскольку вы можете одновременно обращаться к БД с помощью своего приложения и некоторого инструмента (который встроенный режим обычно не позволяет).

Ответ 18

Я думаю, что я немного опоздал (очень поздно;-)) на этот пост, но я бы хотел добавить Perst, открытую исходную, объектно-ориентированную встроенную базу данных для Java &.NET. для вашего рассмотрения. Perst - это встроенная база данных с открытым исходным кодом/двойной лицензией для Java. Распространение совместимо с платформой Google Android, а также включает Perst Lite для Java ME. Мы даже построили бенчмарк Android и подготовили технический документ по этому вопросу... вы можете посмотреть здесь: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581&sectionid=133 p >

Все самое лучшее, Крис