Вопрос

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

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

Спасибо.

Это было полезно?

Решение

Или

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

или

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

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

Разработчик 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, производительность предназначена гораздо лучше, чем Дерби. Прочитайте 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 в производственном процессе как " no-configuration " вариант для нашего приложения. Это позволяет людям судить без необходимости создания реальной базы данных.

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

<Ол>
  • Замедляется пропорционально размеру данных.
  • Трудно получить доступ за пределами нашего приложения (например, для пользовательских отчетов).
  • Транзакции / синхронизация диска трудно понять правильно, поэтому легко потерять данные.
  • По крайней мере, для (2) и (3) есть способы обойти это, но это сложно; например, намного легче установить MySQL.

    neo4j :

      

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

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

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

    Обратите также внимание на сравнение СУБД / JPA лицом к лицу

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

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

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

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

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

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

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

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

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

    Я использовал Derby, и я действительно ненавижу его функции преобразования типов данных, особенно функции даты / времени. (Тип числа) & Lt; - & Gt; Преобразование Варшар это боль.

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

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

    Лично я предпочитаю HSQLDB, но в основном потому, что это было первое, что я попробовал.

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

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

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

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

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top