Мне нужна встроенная база данных для приложения Clojure. Возможно, это те же критерии, что и для любого другого приложения Java, но я, скорее всего, получаю мнение других людей. Я не собираю SQLite, потому что это не чистая Java, поэтому распространение отдельного приложения становится намного сложнее. Кажется, это путь Apache Derby. Что-нибудь еще я должен рассмотреть?
Встроенная (чистая Java) база данных для Clojure
Ответ 1
Без сомнения, H2
Вот настройки,
(def demo-settings
{
:classname "org.h2.Driver"
:subprotocol "h2:file"
:subname (str (System/getProperty "user.dir") "/" "demo")
:user "sa"
:password ""
}
)
И затем обычный Clojure код SQL:
(with-connection demo-settings
(create-table :DEMO_TABLE
[:M_LABEL "varchar(120)"]
[:M_DATE "varchar(120)"]
[:M_COMMENT "varchar(32)"]))
Ответ 2
Вы посмотрели FleetDB? Это база данных Clojure с протоколом JSON и клиентами на нескольких языках. Я подозреваю, что вы, возможно, запустили его, не слишком усердно работая над ним.
Ответ 3
Ответ 4
Я использовал встроенную базу данных H2 внутри clojure и использовал clojureQL для доступа к ней. Будьте осторожны, хотя, поскольку база данных находится в процессе, вы не должны использовать ее для больших объемов записей (более 10000 в одной таблице), так как вы получите огромные проблемы с производительностью, так как база данных и ваш код будут совместно использовать одну и ту же JVM
Ответ 5
Я считаю, что Derby отличная 100% встроенная Java-база данных, и она полезна для самых разных приложений, хорошо поддерживаемых активным сообществом и очень хорошо документирована.
Ответ 6
Если вы не против NOSQL, neo4j - встраиваемый граф db с транзакциями, лицензированный под GPL. Самые последние привязки, которые я нашел, https://github.com/hgavin/borneo
В clojure есть интересный проект db-графика с подключаемыми бэкэндами: https://github.com/flatland/jiraph
Еще довольно молодой, но перспективный смотрящий OrientDB может быть достоин: http://www.orientechnologies.com/orient-db.htm
Ответ 7
Я использую https://github.com/clojurewerkz/archimedes, который позволяет позже указать сервер.
Ответ 8
Еще один вариант, который следует учитывать, - это хранилище с ключевыми значениями Chronicle Map, потому что это чистая Java и предоставляет интерфейс Java Map
с ванильным интерфейсом, поэтому работа с ним должна быть очень простой, используя Clojure.