El mejor y más nuevo de bases de datos SQL parece ser HoneySQL y Yesql.
HoneySQL es una DSL bastante elegante para generar consultas SQL. Hay rumores de que incluso puede modificar los estados a ser altamente optimizados, consulte el hilo clojure-grupo "Current best-of-breed JDBC libraries?" desde el 24 de Feb de 2015.
Niels van Klaveren dice en el hilo antes mencionado:
"Básicamente, [HoneySQL] genera secuencias de comandos SQL para volver a vincular referencias de claves externas para limpiar duplicados en una base de datos. Se necesita una consulta de selección de honeysql con (al menos) una tabla from
, una group-by
y una cláusula order-by
como una definición básica. dobla, y en que orden se deben preservar los registros.En combinación con JDBC metadatos esa consulta efectivamente obtiene reescrito para generar:
- un reemplazo temporal tabla
- consultas para unificar índices únicos, para evitar enfrentamientos cuando las referencias de clave externa se actualizan
- de consultas para actualizar toda la clave externa referencias
- declaraciones eliminar para eliminar todos los duplicados
para crear el mejor rendimiento, pero aún base de datos SQL independiente, tuve que extender honeysql con cláusulas adicionales como OVER
y PARTITION BY
. No diría que fue muy fácil, pero pareció funcionar muy bien.
...
que reducen SQL para (a veces) de GB de secuencia de comandos para alrededor de unos 100 líneas de SQL, y en una ocasión, un tiempo de ejecución de 19 horas a 1,5 minutos."
Yesql, por el contrario, el objetivo de la simplicidad total de él se definen algunas funciones para cargar con parámetros .sql
-limas
es página web menciona lo siguiente "proveedores del servicio universal":..
- Sin sorpresas sintácticas. Su base de datos no se apega al estándar SQL, ninguno lo hace, pero a Yesql no le importa. Nunca perderás tiempo buscando "la sintaxis sexp equivalente". Nunca necesitará recurrir a una función
(raw-sql "some('funky'::SYNTAX)")
.
- Mejor soporte para el editor. Su editor probablemente ya tenga un gran soporte SQL. Al mantener SQL como SQL, puede usarlo.
- Interoperabilidad del equipo. Sus DBA pueden leer y escribir el SQL que usa en su proyecto Clojure.
- Ajuste de rendimiento más sencillo. ¿Necesitas EXPLICAR ese plan de consulta? Es mucho más fácil cuando su consulta es SQL ordinario.
- Reutilización de consultas. Coloque los mismos archivos SQL en otros proyectos, porque son simplemente ol 'SQL. Compártalos como un submódulo.
clojure-contrib se ha mudado. Está aquí ahora: http://code.google.com/p/clojure-contrib/ –
En realidad, se movió dos veces desde que publiqué esto. Ahora está aquí: http://github.com/richhickey/clojure-contrib :) –
debería mirar clojure ql también. – nickik