together - textfield django example
¿Cuál es la razón por la cual Django tiene SmallIntegerField? (5)
Me pregunto por qué se proporciona. El campo depende de la base de datos, ¿no es eso totalmente inseguro de usar?
Quiero almacenar el año de nacimiento en un modelo, un poco como
class Person(models.Model):
name = models.CharField(max_length=256)
born = models.IntegerField()
Por supuesto, esto requiere muy poco espacio, siempre debe tener 4 "caracteres" de largo, por lo que un PositiveSmallIntegerField podría encajar, pero ¿por qué debería elegirlo en lugar de IntegerField normal?
Debería elegir SmallIntegerField si desea ahorrar espacio en la base de datos. El límite del valor depende de la base de datos, pero eso no lo hace poco confiable. Simplemente significa que debe saber qué sistema de base de datos está utilizando y averiguar cuál es el límite para ese sistema.
El año es una fecha sin ocupar meses y días. Elija DateField
y disfrute de todo el poder que Django le brinda. Dado que usted almacena yenes nacidos, esto también le permite en el futuro simplemente aceptar meses y días.
El rendimiento en muchos RDBM puede ser muy dependiente del tamaño de fila. Mientras que un enfoque "purista" podría decir que la aplicación debería ser completamente independiente de la estructura de datos subyacente, en muchas filas las mejoras como usar un número entero más pequeño podrían reducir los gigabytes del tamaño de la tabla, lo que hace que más tabla encaje en la memoria, lo que mejora drásticamente actuación. Es la parte de Brend del ABCs .
Utilizaría un entero pequeño como este, por ejemplo, una clave principal en una tabla que siempre tendría <100 filas, especialmente cuando se almacena como una clave externa en una tabla que espero crecer mucho. Si bien el tamaño es la implementación definida, es seguro asumir que es mayor que 127 como mínimo.
Esta es una de esas cosas así porque es así.
Django admite SmallIntegerField porque Django creció en PostgreSQL, y PostgreSQL admite smallint. Los doctores de PosgreSQL dicen
El tipo smallint generalmente solo se usa si el espacio en el disco es escaso.
Si bien parece un poco pintoresco ahora, cuando se pueden tener discos de 1TB en la tienda de la esquina, no fue hace tanto tiempo cuando los discos eran mucho más pequeños, costando significativamente más por byte. Memoria, también Usar una pequeña letra (cuando corresponda) en un índice significa ajustar más índices de fila en la caché de RAM, lo que significa un mejor rendimiento.
No es totalmente confiable. SMALLINT es parte del estándar SQL y ciertamente MySQL y PostgreSQL tienen tipos enteros pequeños que van desde -32768 hasta +32767