POSTS
Consulta sobre DDD #1: Pregunta sobre las entidades en DDD (Identidad y UUID)
By Carlos Buenosvinos
- 2 minutes read - 373 wordsA raíz del libro “Domain-Driven Design in PHP” y los videos que tengo en Youtube, semanalmente, me van llegando consultas sobre temas de relacionados. Son bastante interesantes y me gustaría compartirlas así como mis respuestas. A los autores de los mails les he pedido permiso para publicar la conversión. Las iré agregando en la medida que pueda. La primera es de Álex sobre Entidades, Identidad y UUIDs.
Hola Carlos,
Hace unos días he empezado a buscar información sobre DDD y me topé con tu repositorio en GitHub donde tienes un ejemplo que al parecer estas utilizando en el libro que estás haciendo. Lo primero felicitarte porque tiene buena pinta y seguro que merece mucho la pena.
Quería hacerte una pequeña pregunta sobre la identificación de entidades. En todos los sitios donde se habla sobre esto se cuenta que las entidades cuando se crean (vía constructor o vía factorías) deberían ser creadas ya con su ID y para ello hay mecanismos como los GUID o los UUID como el que muestras en el ejemplo de “last-wishes”, los cuales permiten generar ID’s a nivel de dominio.
Esto me ha chocado con lo que nos han estado enseñando todo este tiempo en el instituto. Siempre nos han mostrado crear bases de datos relacionales ligando tablas a través de ID’S autoincrementables y estos ID’s solamente se pueden conocer una vez que se hayan insertado en la base de datos mediante una operación Insert. Bueno, también se podría hacer una consulta a la tabla para obtener el máximo y después sumar 1 pero eso creo que podría causar problemas si se realizan varias peticiones a la vez.
Mis preguntas son: ¿En este tipo de diseño a caso se ha desplazado por completo la generación de identificación desde la base de datos al dominio? ¿Eso significa que debo de dejar de usar ID’s autoincrementables? ¿Utilizar un UUID no va a resultar en consultas más lentas al buscar por ejemplo por ID o relacionando con otras tablas? Parece que es más costoso buscar por ejemplo un post con un id así 550e8400-e29b-41d4-a716-446655440000 que con un número autoincrementable.
Perdona si me he enrollado mucho y si no ha sido el medio más apropiado para formularte la consulta.
Un saludo, Álex.
Hola Álex,