Встроенная (чистая Java) база данных для Clojure - PullRequest
18 голосов
/ 03 августа 2011

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

Ответы [ 8 ]

28 голосов
/ 03 августа 2011

Без сомнения, 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)"]))
4 голосов
/ 07 августа 2011

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

3 голосов
/ 03 августа 2011
2 голосов
/ 11 августа 2011

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

2 голосов
/ 06 августа 2011

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

1 голос
/ 30 января 2014

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

1 голос
/ 29 августа 2011

Если вы не возражаете против 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/

0 голосов
/ 08 июля 2016

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

...