database - Base de datos incrustada(Java pura) para Clojure
derby embedded-database (8)
¿Has mirado FleetDB ? Es una base de datos Clojure con un protocolo JSON y clientes en varios idiomas. Sospecho que probablemente podría ejecutarlo incrustado sin trabajar demasiado duro en ello.
Estoy en necesidad de una base de datos integrada para una aplicación Clojure. Tal vez sea el mismo criterio que para cualquier otra aplicación Java, pero de todos modos prefiero obtener la opinión de otras personas. No estoy seleccionando SQLite porque eso no es Java puro, por lo que la distribución de una aplicación independiente se vuelve mucho más compleja. Parece que el camino a seguir es Apache Derby. ¿Algo más que deba considerar?
Creo que Derby es una excelente base de datos integrada 100% Java, y es útil para una amplia variedad de aplicaciones, bien mantenida por una comunidad activa y muy bien documentada.
Estoy usando https://github.com/clojurewerkz/archimedes que te permite especificar un backend más tarde.
Otra opción a considerar es un mapa de Chronicle Map de valor-clave, porque es Java puro y proporciona una interfaz de Java Map
vainilla, por lo que trabajar con él debería ser muy simple con Clojure.
Si no te importa NOSQL, neo4j es un db de gráfico incrustable con transacciones, licenciado bajo la GPL. Los enlaces más actualizados que he encontrado son https://github.com/hgavin/borneo
También hay un interesante proyecto db gráfico en clojure con backends conectables: https://github.com/flatland/jiraph
El aspecto bastante joven pero prometedor de OrientDB podría merecer una visita: http://www.orientechnologies.com/orient-db.htm
http://github.com/eduardoejp/clj-orient
Luego está http://jdbm.sourceforge.net/
Sin duda, H2
Aquí están los ajustes,
(def demo-settings
{
:classname "org.h2.Driver"
:subprotocol "h2:file"
:subname (str (System/getProperty "user.dir") "/" "demo")
:user "sa"
:password ""
}
)
Y luego el habitual código SQL de Clojure:
(with-connection demo-settings
(create-table :DEMO_TABLE
[:M_LABEL "varchar(120)"]
[:M_DATE "varchar(120)"]
[:M_COMMENT "varchar(32)"]))
Utilicé una base de datos integrada, H2 en clojure y usé clojureQL para acceder a ella. Sin embargo, tenga en cuenta que, dado que la base de datos está en proceso, no debe usarla para grandes cantidades de registros (> de 10.000 en una sola tabla), ya que tendrá grandes problemas de rendimiento, ya que la base de datos y el código compartirán la misma JVM.