Empieza por relacional a menos que tengas una razón concreta para no hacerlo. Postgres te da transacciones, joins, restricciones y un planificador de consultas, lo que cubre la mayoría de las cargas y te mantiene las opciones abiertas. Tira de un almacén de documentos cuando el patrón de acceso sea de verdad una clave a un blob, cuando el esquema varíe realmente por registro, o cuando necesites un throughput de escritura por encima de lo que aguanta un solo primario.
Por qué lo preguntan los entrevistadores
El entrevistador quiere ver si eliges infraestructura a partir de los requisitos o de la moda. Escucha si tienes una opción por defecto honesta, si entiendes que las bases de datos relacionales escalan más de lo que la gente supone, y si eres consciente de que renunciar a joins y transacciones es un coste real que pagas después en el código de aplicación. Quien dice que NoSQL es más rápido sin matizar normalmente no ha operado ninguna de las dos a escala.
Cómo estructurar tu respuesta
- Enuncia tu opción por defecto y por qué lo es.
- Enumera los patrones de acceso que te harían cambiar de idea.
- Nombra lo que pierdes cuando renuncias a las funciones relacionales.
- Señala que los modelos de datos duran más que los servicios.
Ejemplo de respuesta
Mi opción por defecto es Postgres, y quiero que me convenzan de salir de ahí, no de entrar. La razón es que una base de datos relacional me da transacciones, joins y restricciones gratis, así que no tengo que acertar con mis patrones de acceso el primer día. Los modelos de datos duran más que los servicios que escriben en ellos, y prefiero mantener la flexibilidad en la capa de consulta y no en la de almacenamiento. Sí tiro de un almacén de documentos en casos concretos. Si cada registro es realmente autocontenido, si la forma varía por tenant, o si necesito throughput de escritura por encima de un solo primario, el intercambio tiene sentido. Con lo que intento ser honesto es con el coste: sin joins, cada relación se convierte en código de aplicación, y sin transacciones, cada actualización de varios documentos se convierte en un problema de idempotencia. En mi último proyecto mantuvimos las entidades centrales en Postgres y pusimos un log de eventos de mucho volumen en algo construido para eso, lo que nos dio escala donde la necesitábamos sin renunciar a la corrección en todo lo demás.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Hasta dónde llevarías una sola instancia de Postgres antes de hacer sharding?
- ¿Cómo modelas una relación de muchos a muchos en un almacén de documentos?
- ¿Cuándo usarías columnas JSONB en vez de una base de datos aparte?
Más preguntas para Ingeniero de software
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas