¿Cuánto tiempo se guarda un dato?
El plazo de conservación es el tiempo que se guarda un dato antes de borrarlo. Cada dato debe tener uno, porque guardar de más aumenta el riesgo sin dar ningún beneficio.
Piensa en una tienda que aún guarda los pedidos de hace diez años. ¿Quién decide cuándo se borran, y cómo se hace sin borrar de más?
Al terminar esta lección
Nota
Puedo fijar cuánto tiempo se guarda un dato y borrarlo a tiempo.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Plazo de conservación | el tiempo que se guarda un dato | 2 años |
| Fecha de corte | la fecha anterior a la cual los datos caducan | |
| Prueba previa | mirar con SELECT qué filas se borrarían | |
| Borrado | quitar un dato para que ya no se pueda leer | |
| Copia de seguridad | una copia de los datos para recuperarlos si se pierden |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
El plazo sale de la finalidad
Un dato se guarda mientras hace falta y no más. Cuando la finalidad termina, el dato sobra.
Algunas normas obligan a guardar ciertos documentos durante años. Para el resto, tú decides el plazo y lo pones por escrito.
Ejecuta las dos líneas de preparación. Después mira qué antigüedad tienen los pedidos de la tienda.
Aceptar el certificado del servidor
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnfSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un nombre corto para el cliente
alias db='mariadb -h db -u student -pstudent -t -e'Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
El pedido más viejo y el más nuevo
db "SELECT MIN(ordered_at) AS primero, MAX(ordered_at) AS ultimo FROM shop.orders"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Ejemplo resuelto: un plazo para cada dato
| Dato | Finalidad | Plazo de ejemplo |
|---|---|---|
| Cuenta cerrada | Atender una reclamación | 1 año desde el cierre |
| Pedido entregado | Llevar las cuentas | 5 años desde la entrega |
| Registro de accesos | Investigar un fallo | 3 meses |
| Solicitud de empleo no elegida | Elegir a una persona | 6 meses |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Contar los pedidos anteriores a 2024
db "SELECT COUNT(*) AS antiguos FROM shop.orders WHERE ordered_at < '2024-01-01'"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Borra por fecha, pero mira antes qué borras
Un borrado no se puede deshacer, así que se ensaya. Primero haces un SELECT con la misma condición que tendrá el DELETE. Eso es la prueba previa.
Mira si salen filas que no esperabas. Un pedido viejo que aún está en curso no se borra.
Trabaja sobre una copia de los pedidos en tu propia base, no sobre la tienda.
Crear tu propia base
db "CREATE DATABASE IF NOT EXISTS student_privacy"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Tirar una copia antigua
db "DROP TABLE IF EXISTS student_privacy.order_log"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Copiar los pedidos
db "CREATE TABLE student_privacy.order_log AS SELECT id, customer_id, ordered_at, status FROM shop.orders"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Prueba previa: qué estados tienen los viejos
db "SELECT status, COUNT(*) AS filas FROM student_privacy.order_log WHERE ordered_at < '2024-01-01' GROUP BY status ORDER BY status"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que borrar las filas de una tabla borra el dato de todas partes. Quedan copias de seguridad, informes y registros. Anota dónde más vive cada dato y da a cada sitio su plazo.
Borrar solo los pedidos terminados y viejos
db "DELETE FROM student_privacy.order_log WHERE ordered_at < '2024-01-01' AND status IN ('delivered', 'cancelled')"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Contar lo que queda
db "SELECT COUNT(*) AS quedan FROM student_privacy.order_log"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Borrar también las copias
Un dato vive en más sitios que su tabla. Hay copias de seguridad, informes exportados y archivos de registro.
Si solo borras la tabla, el dato sigue en esos sitios. Cada uno necesita su plazo y su forma de borrar.
El diagrama siguiente muestra el ciclo de vida de un dato.
Pruébalo: la prueba previa de un borrado
-- Prueba previa: ¿qué incidencias cerradas antes de 2024 se borrarían?
SELECT id, customer, closed_on FROM tickets
WHERE closed_on < '2024-01-01'
ORDER BY id;
-- Una incidencia sin cerrar (closed_on vacío) no sale. Cambia la fecha de corte.
Pruébalo: cuántas incidencias hay por año
-- ¿Cuántas incidencias cerradas hay en cada año?
SELECT substr(closed_on, 1, 4) AS anio, COUNT(*) AS cerradas FROM tickets
WHERE closed_on IS NOT NULL
GROUP BY anio
ORDER BY anio;
-- Ves de un vistazo qué años pasan el plazo.
Para ir más allá
Escribe una política de conservación de una página para una tienda pequeña. Pon al menos cuatro tipos de dato, la finalidad de cada uno, su plazo y quién lo borra.
Después piensa en una tarea programada que borre cada noche lo que caducó. Di qué haría antes de borrar para estar segura de que no borra de más.