Estoy usando System.currentTimeMillis()
(que devuelve un número entero long
) en Java para generar una ID única para entidades de base de datos ya que supongo que no es posible que estos tiempos se superpongan en ningún momento.¿Es seguro usar System.currentTimeMillis() para generar una ID de base de datos única?
¿Es esto una suposición segura?
Por ejemplo, en el momento me sale esto:
1296691225227
En términos de probabilidad de fallo, I duda el enfoque milisegundos sobreviviría la unidad de pruebas. – Dolph
@Dolph - o prueba de carga del sistema. Ciertamente no debería ... si los estás haciendo bien. –
Me gusta mucho el UUID pero es bastante ineficiente (entendido que por la manera más dura ...) la forma habitual de almacenar es UUID.toString() que es horrible 36bytes de longitud (generalmente mapeado a algo como varchar (36)). Los índices DB deben mantenerse en la memoria: cuanto mayor sea el índice, mayor será la memoria necesaria, también la indexación se ralentizará, etc. Aconsejaría utilizar algunos esquemas high-low con bits de agrupamiento y 'long' id. – bestsss