2012-01-11 4 views
8

Я ищу базу данных, которую я могу использовать для хранения данных о некоторых запасах в течение нескольких лет. Вероятно, будет несколько тысяч записей. Я пишу приложение в Java и Clojure, которое вытаскивает данные из этой локальной базы данных, когда это необходимо для отображения данных.База данных для локального хранилища

Мне было интересно, знал ли кто-нибудь о хорошей базе данных для работы с этой целью? У меня только есть опыт работы с MySQL на стороне сервера.

С какой базой данных проще всего работать в Clojure и Java для локального хранилища?

Спасибо,

Адам

ответ

13

JDK 6 и больше поставляется в комплекте с Java DB, который достаточно хорош для вашего использования.

+1

Является ли Java DB таким же, как Apache Derby. Я думаю, что это всего лишь одно подтверждение, если есть какие-то существенные различия? – adamjmarkham

+1

@adamjmarkham «Sun сказал, что он объединит Apache Derby с его патчами и назовет его« Java DB ». Этот шаг добавляет еще одну базу данных к растущей поддержке Sun приложений с открытым исходным кодом». от http://www.internetnews.com/dev-news/article.php/3570696/Sun+Backs+Apache+Derby+With+Java+DB.htm –

3

Для такого мелкого применения это почти наверняка будет проще всего, если вы выберете одно из многих хороших embedded Java databases.

Мои главные выборы, вероятно, будет:

  • H2 - вероятно, лучшее исполнение чистой Java базы данных в целом, и, если верить их benchmarks то это значительно быстрее, чем MySQL и в самом деле большинство других баз данных при запуске в одной машинной среде.
  • Apache Derby - хорошо все круглее, зрелый и хорошо поддерживаются (Oracle включили версию помеченную как Java DB в последних JDKs)

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

Если вы используете действительно хороший DSL для взаимодействия с базами данных SQL с Clojure, вам также необходимо взглянуть на Korma.

+1

Имейте в виду, что упомянутый здесь «Apache Derby» был поглощен Java и переименован в «Java DB»; они просто разные имена для одного и того же. Apache Derby раньше был отдельным продуктом. Я исследовал различия и не мог даже найти достаточно с точки зрения возможностей или производительности, чтобы оправдать добавление в проект другого файла jar, поэтому я использую Java DB. – arcy

+0

hmmm исправьте меня, если я ошибаюсь, но не только Java DB в JDK? Если вы хотите развернуть конечным пользователям JRE (или людям, работающим с более старым JDK), вам все равно понадобится дополнительный файл jar ...... – mikera

3

Я использовал Apache Derby для аналогичного приложения (хотя написано в основном на Java). Они запускают его уже почти четыре года и выполняют более 60 000 транзакций с ним без серьезных проблем. Только случайная ошибка с моей стороны.

Derby - это та же база данных, что и JavaDB, однако с Derby легче поддерживать выпуск, так как вы можете просто включить его в зависимость, а не ждать по прихоти, когда выйдет следующий JDK rev.

Также, IIRC, JavaDB включен только в JDK, а не в JRE.

2

В зависимости от характера ваших данных и приложений, а также ваших желаний и/или ограничений при работе с новой базой данных, вы также можете рассмотреть одну из документов-ориентированных баз данных MongoDB или CouchDB. Если ваши данные и приложения ориентированы на SQL, используйте одну из предложенных баз данных.

Смежные вопросы