No debería tardar mucho si realmente lo escribe en lisp. Escribí un motor de base de datos simple en Lisp en aproximadamente una tarde. Aquí hay un ejemplo de cómo se ve:
(select movies (<= 1990 year 2000) (member director '(terry-gilliam tim-burton)))
Aquí, 'seleccionar' es una macro. Escanea los predicados que lo siguen para los símbolos que son nombres de campo y los vincula a los campos en la base de datos. Luego escribe una función que vincula esos campos a los valores de un registro pasado a la función, y filtra la tabla usando esa función. La macro se expande a algo como esto:
(flet ((filter (item)
(let ((year (movie-year item))
(director (movie-director item)))
(and (<= 1990 year 2000)
(member director '(terry-gilliam tim-burton))))))
(loop for item in movies
if (filter item) collect item))
Lo bueno de hacerlo de esta manera (en realidad en Lisp, en vez de utilizar una sintaxis Lisp) es que se llega compilación de forma gratuita.En mi sistema, el código anterior no es interpretado por el motor de la base de datos, en realidad es una parte compilada del programa (no se puede hacer eso en C, ¿verdad?). Como resultado, es rápido, a pesar de que el código de la base de datos en sí (el código para 'seleccionar' y las definiciones de tabla) tiene solo unas pocas líneas. La base de datos reside en su totalidad en la memoria, pero no importa ... simplemente podría cambiar la macro para acomodar bases de datos externas e incluso escribirla sí utiliza índices. Era lo suficientemente bueno para el proyecto en el que estaba trabajando, así que no agregué índices ni nada sofisticado.
Mi parte favorita es que si bien mantiene toda la concisión de SQL, el código no es diferente al código que lo rodea porque es todo Lisp. Puede introducir variables en su término de búsqueda sin tener que preocuparse por citarlas.
El ecosistema de MySQL y Storage Engine es el siguiente: Storage Engine es la capa que ubica inmediatamente encima de su sistema de archivos de almacenamiento nativo. Las capas superiores están compuestas por el analizador de consultas SQL, optimizador, caché de consultas, etc. La arquitectura del motor de almacenamiento conectable de MySQL se ha diseñado de tal manera que Storage Engine es una capa de separación entre los dispositivos de almacenamiento nativos y su capas superiores, como un cliente MySQL. –