dmlls / jizt-tfg

Servicio de Resumen de Textos con AI en la Nube (versión TFG).
https://dmlls.github.io/jizt-tfg-website/
GNU General Public License v3.0
13 stars 3 forks source link

[Dispatcher] Diseño E/R de la BD #82

Closed dmlls closed 3 years ago

dmlls commented 3 years ago

Como se indica en #67, el Dispatcher hará uso de una base de datos con dos objetivos fundamentales:

Como SGBD hemos escogido PostgreSQL, debido a su relativamente sencillo despliegue en Kubernetes a través de postgres-operator, y a su reconocido prestigio como SGBD.

El modelo E/R para nuestra base de datos es simple por el momento. No obstante, existe un detalle que da lugar a varias posibles implementaciones. Se trata de los parámetros del resumen, los cuales no son fijos: podrían variar entre los diferentes modelos, familias de modelos, o simplemente de quién lo implemente.

Esto da lugar principalmente a tres posibles diseños.

1. Parámetros separados en otra tabla

Este enfoque consistiría en extraer los parámetros en una tabla diferente a la tabla de los resúmenes. Esta tabla externa contendría los parámetros concretos de una determinada implementación. Por ejemplo, en nuestro caso, por el momento únicamente tendríamos la tabla hugging_face_params:

dispatcher-db-0 0 7

En cuanto a la explicación de algunos de los campos/tablas que aparecen en el diagrama:

La principal desventaja de esta implementación es que el diseño de las tablas de parámetros depende de factores externos, concretamente de la implementación que empleemos. Esto conlleva que si el día de mañana dicha implementación cambiase, tendríamos que adaptar nuestro diseño. Es decir, aumenta la dependencia del mismo

Otra posible desventaja sería que potencialmente podrían existir un elevado número de tablas de parámetros, lo que dificultaría la mantenibilidad.

2. Todos los parámetros en una tabla, campos no relevantes a null

Una segunda opción sería introducir todos los parámetros de las diferentes implementaciones en la propia tabla summary. Los parámetros que no se correspondiesen con el modelo con el que se ha generado el resumen, quedarían a null.

Este diseño sigue estando fuertemente ligado a las implementaciones externas. Además, puede ser más propenso a errores, ya que de toda la lista de parámetros debemos saber cuáles son los relevantes para cada resumen. Asimismo, la mantenibilidad puede ser tediosa por las mismas razones que en el caso anterior.

3. Campo único con tipo de datos JSON

La tercera opción pasaría por introducir todos los parámetros en único campo. Los SGBD modernos ofrecen el tipo de datos JSON, que incluso permite realizar consultas basadas en las claves/valores de los propios documentos.

Siguiendo este diseño, el modelo E/R quedaría:

dispatcher-db-0 0 9

Este diseño resuelve, en principio, los principales incovenientes que encontrábamos en las anteriores opciones:

dmlls commented 3 years ago

Una vez consideradas las diferentes opciones, se ha decidido que se seguirá la opción 3, por ser la más apropiada en nuestro caso.