Pregunta

Actualmente, las claves primarias en nuestro sistema tienen una longitud de 10 dígitos, justo por encima del límite para enteros Java. Quiero evitar cualquier problema de mantenimiento en el futuro causado por el desbordamiento numérico en estas teclas, pero al mismo tiempo no quiero sacrificar mucho rendimiento del sistema para almacenar números infinitamente grandes que nunca necesitaré.

¿Cómo manejas la gestión del tamaño de una clave principal? ¿Es mejor quedarme con los enteros de Java, por el beneficio de rendimiento en el Long más grande, y aumentar el tamaño cuando sea necesario? tamaño de la secuencia?

¿Fue útil?

Solución

Siempre he ido con claves largas (número (18,0) en la base de datos) porque simplemente eliminan la posibilidad de que esta situación ocurra en casi todas las situaciones (aparte de las aplicaciones de estilo extremo de acumulación de datos). Tener el mismo tipo de datos en todas las tablas para la clave significa que puede compartir ese campo en todos los objetos del modelo en una clase principal, así como tener un código coherente para sus usuarios de SQL, y así sucesivamente.

Otros consejos

Parece que la respuesta depende de la probabilidad de que desbordes los enteros de Java con tus datos. Y no hay forma de saberlo sin una idea de cuáles son sus datos.

El beneficio de rendimiento sería insignificante, por lo que mi consejo sería ir con las claves largas. Tener que lidiar con eso en el futuro probablemente sería una molestia importante.

Es un equilibrio entre el costo de almacenamiento y el uso de enteros largos, frente a la probabilidad de desbordar un entero de 32 bits.

Tenga en cuenta que un entero de 32 bits sin signo almacena más de 4 mil millones de valores. Si piensa que va a promediar más de 1 fila nueva por segundo en esta tabla durante los próximos 136 años, entonces necesita usar un Largo.

Los enteros de 32 bits en java son enteros con signo, por lo que solo 2 mil millones. Si por alguna razón, su SECUENCIA sigue saltando de vez en cuando, entonces habrá algunas brechas entre sus PK.

NO hace daño tener mucho tiempo (¿Recuerdas que el problema Y2K ocurrió porque algunos desarrolladores de COBOL pensaron que iban a guardar algunos bytes en las fechas?) :-)

Por lo tanto, siempre uso largo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top