Question d'entretien pour Ingénieur logiciel

Comment tranchez-vous entre une base relationnelle et un magasin de documents pour un nouveau service ?

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

Commencez en relationnel sauf raison précise de faire autrement. Postgres vous donne les transactions, les jointures, les contraintes et un planificateur de requêtes, ce qui couvre la plupart des charges et garde vos options ouvertes. Prenez un magasin de documents quand le motif d'accès est vraiment une clé pour un blob, quand le schéma varie réellement d'un enregistrement à l'autre, ou quand vous avez besoin d'un débit d'écriture supérieur à ce qu'un seul primaire peut encaisser.

Pourquoi les recruteurs posent cette question

Le recruteur veut voir si vous choisissez votre infrastructure à partir des besoins ou de la mode. Il écoute un choix par défaut honnête, la compréhension que les bases relationnelles montent bien plus haut qu'on ne le croit, et la conscience que renoncer aux jointures et aux transactions est un coût réel que vous payez plus tard dans le code applicatif. Les candidats qui disent que le NoSQL est plus rapide sans nuancer n'ont en général fait tourner ni l'un ni l'autre à l'échelle.

Comment structurer votre réponse

  • Énoncez votre choix par défaut et pourquoi c'est votre défaut.
  • Listez les motifs d'accès qui vous feraient changer d'avis.
  • Nommez ce que vous perdez en abandonnant les fonctions relationnelles.
  • Faites remarquer que les modèles de données survivent aux services.

Exemple de réponse

Exemple parlé, à la première personne

Mon défaut, c'est Postgres, et je veux qu'on m'en dissuade plutôt qu'on m'y pousse. La raison, c'est qu'une base relationnelle me donne les transactions, les jointures et les contraintes gratuitement, donc je n'ai pas à deviner correctement mes motifs d'accès dès le premier jour. Les modèles de données survivent aux services qui les écrivent, et je préfère garder la souplesse dans la couche de requête plutôt que dans la couche de stockage. Je prends bien un magasin de documents dans des cas précis. Si chaque enregistrement est réellement autonome, si la forme varie selon le locataire, ou s'il me faut un débit d'écriture au-delà d'un seul primaire, l'arbitrage a du sens. Ce sur quoi j'essaie d'être honnête, c'est le coût : sans jointures, chaque relation devient du code applicatif, et sans transactions, chaque mise à jour multi-documents devient un problème d'idempotence. Sur mon dernier projet, on a gardé les entités centrales dans Postgres et mis un journal d'événements à fort volume dans quelque chose fait pour ça, ce qui nous a donné l'échelle là où on en avait besoin sans renoncer à la justesse partout ailleurs.

Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.

Voir comment ça marche

Questions de relance à prévoir

  • Jusqu'où pousseriez-vous une seule instance Postgres avant de sharder ?
  • Comment modélisez-vous une relation plusieurs-à-plusieurs dans un magasin de documents ?
  • Quand utiliseriez-vous des colonnes JSONB plutôt qu'une base séparée ?

Autres questions pour Ingénieur logiciel

Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.

Prédire mes questions

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot