La biblioteca de abstracción de base de datos más utilizada en Haskell es HDBC. Significa que las consultas simplemente se representan como String
s con marcadores de posición. Menos personas usan HaskellDB, lo que proporciona una forma segura de generar consultas. Nada prohíbe tener tipos de datos de usuario para representar consultas comunes y funciones personalizadas para construirlos.
Los valores en Haskell son inmutables, lo que significa que no es útil tener un objeto mutable correspondiente a un registro en la base de datos. En cambio, creo que es más común definir tipos de datos de usuario y funciones que marcan y empujan/extraen valores de estos tipos hacia/desde la base de datos.
Cuando sea necesario actualizar la base de datos, es probable que se ejecute en una mónada con estado bajo IO
. Esto permitiría mantener la conexión abierta, por ejemplo, o hacer algo entre las solicitudes.
Finalmente, las funciones son de primera clase, por lo que es posible construir todas las funciones sobre la marcha. Entonces, una función en sí misma puede encapsular cualquier información que desee.
lo tanto, creo, el enfoque habitual Haskell consiste en
- tipos de datos algebraicos para representar los datos reales (como inmutables valores)
- el resto de la aplicación para transformar estos valores
- funciones que generan consultas (encapsulan detalles de esquema, marcan datos a/de tipos de datos Haskell)
- (opcionalmente) una mónada con estado para ejecutar consultas (ocultar detalles del acceso a la base de datos)
- funciones que se ejecutan las consultas (ocultar detalles de acceso de base de datos)
Tal vez http://blog.ezyang.com/2010/06/databases-are-categories/ vale la pena mirar. –
@Alexandre gracias, una buena lectura, pero no creo que sea lo que estaba buscando :) – Masse
Su diagrama ya no existe. ¿Puedes subirlo de nuevo? Esta pregunta más bien depende de eso. –