Встроенная (чистая Java) база данных для Clojure

Мне нужна встроенная база данных для приложения Clojure. Может быть, это те же критерии, что и для любого другого Java-приложения, но я все равно получаю мнение других людей. Я не выбираю SQLite, потому что это не чистая Java, поэтому распространение автономного приложения становится намного сложнее. Кажется, путь - Apache Derby. Что-нибудь еще, что я должен рассмотреть?

8 ответов

Решение

Без сомнения, H2

Вот настройки,

 (def demo-settings
   {
    :classname   "org.h2.Driver"
    :subprotocol "h2:file"
    :subname     (str (System/getProperty "user.dir") "/" "demo")
    :user        "sa"
    :password    ""
   }
  )

А затем обычный код SQL Clojure:

  (with-connection demo-settings 
    (create-table :DEMO_TABLE
           [:M_LABEL "varchar(120)"]
           [:M_DATE "varchar(120)"]
           [:M_COMMENT "varchar(32)"]))

Вы смотрели на FleetDB? Это база данных Clojure с протоколом JSON и клиентами на нескольких языках. Я подозреваю, что вы могли бы запустить его встроенным, не слишком усердно работая над ним

Я использовал встроенную базу данных H2 в clojure и использовал clojureQL для доступа к ней. Имейте в виду, что поскольку база данных находится в процессе, вы не должны использовать ее для большого количества записей (> 10000 в одной таблице), так как вы получите огромные проблемы с производительностью, поскольку база данных и ваш код будут совместно использовать одну и ту же JVM

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

Я использую https://github.com/clojurewerkz/archimedes который позволяет вам указать бэкэнд позже.

Если вы не возражаете против NOSQL, neo4j - это встраиваемый граф БД с транзакциями, лицензированный по лицензии GPL. Самые последние привязки, которые я нашел, - это https://github.com/hgavin/borneo

Существует также интересный проект Graph DB в Clojure с подключаемыми бэкэндами: https://github.com/flatland/jiraph

Возможно, стоит взглянуть на еще довольно молодой, но многообещающий OrientDB: http://www.orientechnologies.com/orient-db.htm

http://github.com/eduardoejp/clj-orient

Тогда есть http://jdbm.sourceforge.net/

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

Другие вопросы по тегам