2011-08-03 20 views
18

Necesito una base de datos integrada para una aplicación Clojure. Tal vez sea el mismo criterio que para cualquier otra aplicación Java, pero prefiero obtener la opinión de otras personas de todos modos. No selecciono SQLite porque 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?Base de datos incrustada (Java pura) para Clojure

+1

Esperamos las respuestas de este. He usado HSQLDB en Java más que Derby, pero solo para pruebas unitarias. Interesado en ver si alguien ha usado FleetDB ya que tiene un cliente Clojure ... –

Respuesta

28

Sin lugar a dudas, H2

Éstos son los ajustes,

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

Y entonces la habitual Clojure código SQL:

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

+1. H2 es el "Clojure de bases de datos" :-) –

+0

Definitivamente H2 para mí también. Me ha funcionado bien con la biblioteca de consultas clojureql. Hay una solución temporal necesaria para H2 con clojureql, H2 no tiene la sintaxis JOIN USING compatible cuando la última vez que lo verifiqué, debe usar el equivalente más detallado de JOIN ON. –

2

Utilicé una base de datos incrustada, H2 dentro de clojure y usé clojureQL para acceder a ella. Sin embargo, ten en cuenta que, dado que la base de datos está en proceso, no deberías usar esto para grandes cantidades de registros (> 10.000 en una sola tabla) ya que obtendrás enormes problemas de rendimiento ya que la base de datos y tu código compartirán la misma JVM

4

¿Has mirado FleetDB? Es una base de datos Clojure con un protocolo JSON y clientes en varios idiomas. Sospecho que probablemente puedas ejecutarlo incrustado sin trabajar demasiado.

2

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.

1

Si no le molesta NOSQL, neo4j es un gráfico embebible db con transacciones, licenciado bajo la GPL. Los más actualizada fijaciones que he encontrado son https://github.com/hgavin/borneo

También hay un proyecto gráfico db interesantes de clojure con backends enchufables: https://github.com/flatland/jiraph

El todavía muy joven pero prometedora buscando OrientDB podría valer la pena un vistazo: http://www.orientechnologies.com/orient-db.htm

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

Luego está http://jdbm.sourceforge.net/

0

Otra opción a considerar es una tienda de valores-clave Chronicle Map, porque es pura Java y proporciona una interfaz Java Map vainilla, por lo que trabajar con ella debería ser muy simple con Clojure.

Cuestiones relacionadas