Я собираюсь разработать небольшое (Java) приложение для управления своими финансами. Я считаю, что мне нужно использовать встроенную базу данных, но у меня нет опыта по этой проблеме. Я попытался посмотреть на некоторые из доступных продуктов , но не могу решить, какой из них мне больше подходит. H2 , HSQLDB , Derby и Berkeley DB кажутся хорошими кандидатами, но я все еще не понимаю, как они сравниваются друг с другом. Я ценю вашу помощь в сравнении их и помогаете мне решить, какой из них использовать.
Я намереваюсь использовать Hibernate для своего приложения (если вы не порекомендуете использовать API, предоставляемый СУБД), но я также хочу иметь возможность легко редактировать базу данных с помощью инструмента просмотра SQL (изменение схемы и изменение данных).
Спасибо.
источник
Ответы:
Либо
или
Какой из них вы будете использовать, зависит от вас, в зависимости от того, какая производительность и какая стабильность вам нужна.
Разработчик H2 дал хорошую оценку производительности:
http://www.h2database.com/html/performance.html
источник
Я использую Apache Derby практически для всех моих встраиваемых баз данных. Вы также можете использовать Java DB от Sun, основанную на Derby, но последняя версия Derby намного новее. Он поддерживает множество опций, которые поддерживают коммерческие собственные базы данных, но он намного меньше по размеру и легче встраивается. У меня было несколько таблиц базы данных с более чем миллионом записей без проблем.
Я использовал HSQLDB и Hypersonic года 3 назад. В то время у него были некоторые серьезные проблемы с производительностью, и я перехожу с него на Derby из-за этих проблем. Дерби был прочным, даже когда он находился в инкубаторе Apache.
источник
Мне нужно было использовать встроенную базу данных Java в одном из моих проектов, и я провел много исследований, чтобы понять плюсы и минусы каждой базы данных. Я написал в блоге список плюсов и минусов популярных встроенных баз данных Java (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB), вы можете взглянуть на него. Я выбрал H2, поскольку считал, что он лучше всего соответствует моим требованиям. Ссылка для блога: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html Надеюсь, это поможет!
источник
Я бы выбрал H2, производительность намного лучше, чем у Derby. Прочтите http://www.h2database.com/html/performance.html для получения дополнительной информации.
источник
HSQLDB - хороший кандидат (тот факт, что он используется в OpenOffice, может убедить некоторых из вас), но для такого небольшого личного приложения почему бы не использовать объектную базу данных (вместо классической базы данных отношений)?
Я использовал DB4O в одном из своих проектов и очень им доволен. Поскольку вы объектно-ориентированы, вам не нужен весь слой Hibernate, и вы можете напрямую вставлять / обновлять / удалять / запрашивать объекты! Более того, вам не нужно беспокоиться о схеме, вы работаете напрямую с объектами, а DB4O сделает все остальное!
Я согласен с тем, что может потребоваться некоторое время, чтобы привыкнуть к этому новому типу базы данных, но посмотрите учебник по DB40, чтобы увидеть, насколько легко он упрощает работу с базой данных !
РЕДАКТИРОВАТЬ: Как сказано в комментариях, DB4O автоматически обрабатывает новые версии классов. Кроме того, здесь доступен инструмент для просмотра и обновления базы данных вне приложения: http://code.google.com/p/db4o-om/
источник
Java DB (дистрибутив Sun Apache Derby) теперь поставляется с JDK 6!
Мне хотелось сделать что-то вроде Джейсона Коэна, и я думал, что это выглядит как самый простой способ быть в дистрибутиве JDK (который на прошлой неделе стал требованием для моего приложения). Или, может быть, я просто ленив.
источник
Мы используем HSQLDB в производстве как вариант «без конфигурации» для нашего приложения. Это позволяет людям пробовать без хлопот по настройке реальной базы данных.
Однако мы не поддерживаем его для нормального использования. Причин несколько:
По крайней мере, для (2) и (3) есть способы обойти это, но это сложно; гораздо проще, например, установить MySQL.
источник
neo4j это:
У меня еще не было возможности попробовать, но выглядит очень многообещающе. Обратите внимание, что это не база данных SQL - ваш граф объектов сохраняется для вас, поэтому он может не подходить для вашего существующего приложения.
источник
Хороший инструмент сравнения можно найти здесь: http://www.jpab.org/All/All/All.html
Также обратите внимание на прямые сравнения СУБД / JPA
источник
Большинство вещей уже было сказано, но я могу просто добавить, что я использовал HSQL, Derby и Berkely DB в нескольких своих любимых проектах, и все они работали отлично. Так что я не думаю, что это действительно так важно, если честно. Стоит упомянуть, что HSQL сохраняет себя как текстовый файл с операторами SQL, что неплохо. Делает это действительно простым, когда вы разрабатываете, быстро проводить тесты и настраивать данные. При необходимости может также делать быстрые правки. Думаю, вы могли бы легко перенести все это в любую базу данных, если вам когда-нибудь понадобится что-то изменить :)
источник
HSQLDB может вызвать проблемы для больших приложений, он не так стабилен.
Лучшее, что я слышал (однако не из первых рук), - это berkleyDB. Но если вы не откроете его исходный код, использование его будет стоить вам руки и ноги из-за лицензирования ... см. Http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html для подробностей.
пс. berkleyDB не является реляционной базой данных, если вы не знали.
источник
Я большой поклонник DB4O как для .Net, так и для Java .
Производительность стала намного лучше по сравнению с ранними выпусками. Модель лицензирования тоже неплохая. Мне особенно нравятся параметры, доступные для запросов к вашим объектам. Запрос на примере - очень мощный инструмент, к которому легко привыкнуть.
источник
Какие критерии вы будете использовать для их оценки? Если вы еще не знаете, то вам не нужно прямо сейчас решать. Постарайтесь сделать свое приложение максимально независимым от реализации базы данных, предоставив соответствующие оболочки, объекты доступа к данным и т. Д., И примите это решение, когда у вас есть все факты, и вам нужно принять решение.
Если вы используете реляционные базы данных и SQL, то вышеперечисленное не должно быть слишком сложным (с использованием JDBC и т. Д.). Убедитесь, что у вас есть множество окружающих тестов, чтобы при переключении между базами данных вы могли определить, что функциональность вашего приложения остается прежней.
Некоторое время назад я столкнулся с той же проблемой. Я не знал, какую базу данных выбрать, поэтому в моем первом решении использовался Derby (или HSQLDB?), А позже я смог переключиться на HSQLDB (или Derby? Не могу вспомнить, какое решение сработало), как только определил, где У меня были проблемы (связанные с производительностью), и какое решение мне действительно подойдет.
источник
Я использовал Derby, и я действительно ненавижу его функции преобразования типов данных, особенно функции даты / времени. (Тип числа) <--> Преобразование Varchar - это боль.
Так что, если вы планируете использовать преобразования типов данных в операторах БД, рассмотрите возможность использования других встроенных БД, я узнаю об этом слишком поздно.
Последние преобразования типов данных в версии Derby
источник
Лично я предпочитаю HSQLDB, но в основном потому, что это был первый вариант, который я пробовал.
Говорят, что H2 работает быстрее и обеспечивает более приятный интерфейс GUI (который, кстати, является общим и работает с любым драйвером JDBC).
По крайней мере, HSQLDB, H2 и Derby предоставляют серверные режимы, которые отлично подходят для разработки, потому что вы можете получить доступ к БД с помощью своего приложения и некоторого инструмента одновременно (что обычно не позволяет встроенный режим).
источник
Думаю, я немного опоздал (очень поздно ;-)) с этим постом, но я хотел бы добавить Perst, объектно-ориентированную встроенную базу данных с открытым исходным кодом для Java и .NET. на ваше рассмотрение. Perst - это встроенная база данных с открытым исходным кодом / двойной лицензией для Java. Дистрибутив совместим с платформой Google Android, а также включает Perst Lite для Java ME. Мы даже создали тест Android и подготовили технический документ по этому поводу ... вы можете посмотреть здесь: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581§ionid=133
Всего наилучшего, Крис
источник
Если я прав, H2 принадлежит тем же ребятам, которые написали HSQLDB. Намного лучше, если вы доверяете тестам на их сайте. Кроме того, есть мнение, что солнечное сообщество слишком быстро перешло в Дерби.
источник
Я понимаю, что вы упомянули просмотр SQL, но все остальное в вашем вопросе заставляет меня предложить вам также рассмотреть DB4O , отличную простую объектную базу данных .
источник