Esta podría ser una pregunta simple para un desarrollador experimentado (Django).
La base de datos de mi proyecto es PostgreSQL.
Tengo la intención de utilizar una sola instancia de modelo protegido como almacenamiento centralizado para ciertos datos. Esa instancia tendrá un JSONField que, a su vez, almacenará una colección dinámica de pares clave-valor (ambos son cadenas). Por "dinámico" quiero decir que se agregarán nuevos pares clave-valor a la colección de vez en cuando y, por lo tanto, la colección crecerá constantemente en tamaño.
Por lo que he leído (por ejemplo, límite de tamaño del tipo de datos JSON en PostgreSQL ), el límite de tamaño de JSONField es de aproximadamente 1 GB. Eso es bastante, pero aún no infinito.
Mi pregunta es: ¿qué pasará exactamente si logro agotar la capacidad de almacenamiento de JSONField? ¿Y hay alguna recomendación sobre cómo pronosticar este tipo de situación antes de que suceda (por ejemplo, monitorear el tamaño de almacenamiento de la instancia)?
Dado que no planea manipular el valor JSON en la base de datos, debe usar el tipo de datos json en lugar de jsonb .
Si excede ese límite, recibirá un mensaje de error. Pero dado que todo el valor debe mantenerse temporalmente en la RAM en el lado del cliente y en el lado de la base de datos, espero que tenga problemas antes de eso; probablemente recibirá un mensaje de falta de memoria de la base de datos, o el rendimiento podría ser realmente malo.
Si tiene más de 1 GB de estado para almacenar en la base de datos, podría ser una buena idea dividirlo en varias partes y actualizar solo aquellas partes que realmente cambiaron, como lo hace normalmente en una base de datos relacional.
Aquí está casi lo que querías.
Detalles del límite de Postgresql https://wiki.postgresql.org/wiki/FAQ#What_is_the_maximum_size_for_a_row.2C_a_table.2C_and_a_database.3F
¿Qué pasa si se excede el límite?