Base de datos resiliente: el contexto es clave

Fuentes: “Design Me a Highly Resilient Database”

El artículo aborda una pregunta común en entrevistas técnicas: "Diseña una base de datos altamente resiliente". El autor relata una experiencia negativa en una entrevista donde, al no recibir contexto sobre el sistema, propuso una solución compleja (CloudNativePG en Kubernetes con respaldo en S3) que el entrevistador consideró incorrecta. La clave, según el autor, es que la pregunta es inherentemente defectuosa: no se puede diseñar una base de datos resiliente sin entender el contexto del sistema en el que operará.

La resiliencia no es una propiedad intrínseca de una base de datos, sino una característica definida por las necesidades del sistema. El artículo explica que diferentes bases de datos están optimizadas para diferentes casos de uso, y la elección correcta depende de factores como el tipo de datos, los patrones de consulta, los requisitos de consistencia y disponibilidad, y el presupuesto. Por ejemplo, Cassandra es excelente para manejar grandes volúmenes de datos con eventual consistencia (ideal para IoT), pero no es adecuada para transacciones financieras que requieren ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad). PostgreSQL, por otro lado, es una opción común en finanzas precisamente por su cumplimiento de ACID.

El artículo introduce el Teorema CAP, que establece que en caso de partición de red, se debe elegir entre consistencia y disponibilidad, no ambas. Se presenta un mapa de diferentes bases de datos (PostgreSQL, Cassandra, Redis, Elasticsearch, DynamoDB, ClickHouse, TimescaleDB) y sus fortalezas y debilidades, destacando que no existe una solución universal. Finalmente, el artículo enfatiza la importancia de hacer preguntas exhaustivas sobre los requisitos del sistema antes de proponer una solución, cubriendo aspectos como el tipo de datos, los patrones de consulta, los requisitos de consistencia y disponibilidad, los modos de fallo esperados y el presupuesto disponible. Elegir la base de datos incorrecta puede tener consecuencias significativas, desde auditorías regulatorias hasta problemas de rendimiento y pérdidas financieras.