¿Pueden los modelos de dominio en la base de datos ser una solución sostenible?

13

Acabo de comenzar un nuevo trabajo como desarrollador de bases de datos para una empresa de tamaño mediano a pequeño, basada en la tecnología de Microsoft. En un principio me di cuenta de cuánto se desvían las prácticas de lo que me enseñaron en la escuela con respecto a las mejores prácticas, los patrones de diseño, las pruebas y la gestión de proyectos.

Lo que más me molesta es cómo el desarrollador de nuestra base de datos principal (en adelante, "John") mantiene el esquema del modelo en la base de datos. Hacemos esto teniendo 3 mesas "mágicas"; uno para esquemas de base de datos, uno para tablas y otro para columnas.

Al insertar un registro en la tabla " Tablas " se genera (a través de un activador de base de datos), la tabla real y correspondiente. Al insertar una fila en la tabla " Filas ", se actualiza la tabla a la que se hace referencia con esa fila. A su vez, estos son leídos por su programa C # casero para generar modelos C #, que son utilizados por los desarrolladores frontend para controladores y para el exterior.

Aparte de esto, la mayor parte del desarrollo se realiza de acuerdo con MVC de ASP.NET

Veo un par de fallas con este enfoque:

  • Lo necesitamos para mantener el ORM, y rara vez tiene tiempo para hacerlo (¡la seguridad laboral es buena!)
  • Los activadores para las tablas "Tablas" y "Filas" son defectuosos. No admiten actualizaciones de tablas, ni restricciones de verificación ni más funciones "avanzadas". Si bien seguramente podríamos mejorarlos, todavía no estoy seguro de si este es el camino a seguir.
  • Mantener la lógica programática en la base de datos parece extraño y restrictivo (aunque es posible extender sus modelos a través de C #).
  • Su generador de modelos de C # debe ser ejecutado manualmente por una de las 3 personas (entre las cuales soy uno), y aún no está lo suficientemente maduro como para ser incluido en un proceso de construcción automatizado.

Varias personas han sugerido la introducción gradual de un producto verdadero y probado como Entity Framework , pero él lo rechaza , diciendo que mantener la lógica de negocios en la capa de código solo es adecuado para aplicaciones a pequeña escala y proyectos de arranque para startups.

Esta publicación está conduciendo hacia algo que podría parecer una discusión de opinión, pero esa no es mi intención. Solo quiero una aclaración con respecto a nuestro enfoque arquitectónico.

¿Puede mantener los modelos de dominio en la base de datos una solución sostenible para una empresa en crecimiento?

    
pregunta krystah 13.11.2015 - 17:36

1 respuesta

16

Está describiendo una Inner Platform.

El problema con las plataformas internas es que reinventas todos los mecanismos de una plataforma o tecnología (en este caso, una base de datos relacional) que se han perfeccionado y perfeccionado a lo largo de décadas de evolución y esfuerzo, pero se han reinventado mal. Está omitiendo todas las optimizaciones que están disponibles para aquellos que eligen un diseño más convencional e intercambian la simplicidad y la elegancia iniciales por la complejidad y las dificultades futuras.

Dicho esto, si el producto final de este proceso es real y real modela real objetos de dominio empresarial, no lo hago. Ver mucho daño en este enfoque, aparte de la inmadurez de las herramientas. Stack Exchange realmente usa su propio ORM, de cosecha propia, y eso parece haber funcionado para ellos. Así que sé que este tipo de enfoques "caseros" pueden funcionar.

Tenga en cuenta que la mayoría de los ORM que adoptan el enfoque de "primera tabla" simplemente miran la estructura de la tabla en la base de datos para crear las clases. Las tablas de "tabla" y "fila" que su amigo ha creado son simplemente metadatos que ya existe en las tablas del sistema de la mayoría de los sistemas de bases de datos relacionales modernos.

Lecturas adicionales
El proyecto "Visión", una advertencia sobre el efecto de la plataforma interna
(Puede omitir el preámbulo y comenzar a leer el subtítulo "Introducción a Vision")

    
respondido por el Robert Harvey 13.11.2015 - 17:59

Lea otras preguntas en las etiquetas