undplash - Uso de Application Id Generator vs. Database Id Generator
unsplash it (3)
¿Cuál es la mejor estrategia para generar ID de base de datos? ¿Utilizando generadores de bases de datos? ¿Usando un generador personalizado? ¿Cuales son las ventajas y desventajas de cada uno?
Creo que lo más importante es que elija algo que pueda ser utilizado por su empresa como identificador. Por ejemplo, el DMV pone su número de licencia en la tarjeta, y si se olvida de su billetera y recuerda el número, se puede usar para verificar su identidad (por ejemplo, cuando es detenido por un policía). No pondrías un UUID en una carta.
Es probable que ocultar los identificadores de su empresa cause mucha confusión, por lo tanto, elija algo que no le importe decirle a un cliente, cliente o socio comercial. No digo que todos puedan memorizarlo, pero al menos debería poder leerlo a alguien por teléfono si está mirando un recibo (por ejemplo).
Hay excepciones para el rendimiento, por supuesto, pero deben usarse con cuidado y no combinarse con un identificador visible del negocio.
Ver mi publicación de blog relacionada
Otra cosa para recordar es que no todas las inserciones a las bases de datos provienen de la aplicación. Usar un guid guiado por la aplicación realmente le hará daño cuando obtenga un nuevo cliente y tenga que migrar 100.000 registros de su último proveedor.
DB Generator:
- Fácil de asegurarse de que sea único
- Necesita un viaje de ida y vuelta adicional (debe volver a leer la ID generada)
- A menudo bastante simple (secuencia)
- Cuando se retrotraen las transacciones, pueden aparecer huecos en la secuencia (gracias a Kristen por señalar esto).
Generador de ID de aplicación
- Puede ser tan complejo como lo necesite (por ejemplo, puede codificar el tipo de objeto en el ID si lo desea)
- Difícil de hacer único (a menos que use UUID)
- Puede asignar una ID incluso sin hablar con el DB
[EDIT] Dado que los UUID son bastante caros (no hay soporte nativo en muchos DB, fragmentación de índices, etc.), la mayoría de las aplicaciones usan un generador basado en DB.