Question d'entretien pour Développeur backend

Une seule table a atteint plusieurs milliards de lignes et les écritures ralentissent. Quelles sont vos options ?

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

Réponse rapide

Épuisez d'abord les options les moins chères : de meilleurs index, l'archivage des lignes froides, le déplacement des grosses colonnes ailleurs, et des réplicas de lecture pour la charge de lecture. Ensuite partitionnez la table, en général par temps ou par tenant, pour que chaque partition reste petite et que les anciennes puissent être supprimées instantanément. Le sharding entre bases séparées vient en dernier, parce qu'il vous coûte les requêtes inter-shards, les transactions distribuées et le rééquilibrage, et que le choix de la clé de shard est très difficile à changer ensuite.

Pourquoi les recruteurs posent cette question

Le recruteur veut voir que vous montez en charge par ordre de coût plutôt qu'en sautant sur la solution la plus complexe. Il écoute la distinction entre partitionner dans une base et sharder entre plusieurs, une discussion sensée sur la clé de shard y compris les points chauds, et la réalité opérationnelle de migrer une table en production. Aller directement au sharding est en général un signal d'alarme.

Comment structurer votre réponse

  • Diagnostiquez d'abord : est-ce les écritures, la maintenance des index ou la contention de verrous.
  • Ordonnez les options du moins cher au plus invasif.
  • Expliquez le partitionnement et les bénéfices d'élagage et de rétention.
  • Traitez le choix de la clé de shard et ce que vous perdez en shardant.

Exemple de réponse

Exemple parlé, à la première personne

D'abord je chercherais ce qui est réellement lent, parce qu'une grosse table n'est pas automatiquement un problème. En général c'est la maintenance des index à chaque insertion, ou quelques index inutilisés, ou l'autovacuum qui prend du retard. Je commence donc par les gains faciles : supprimer les index que personne n'utilise, déplacer une grosse colonne texte ou JSON dans une table annexe pour que les lignes principales restent compactes, et archiver tout ce qui dépasse la politique de rétention. Si c'est encore vraiment trop gros, je partitionne, normalement par temps pour des données de type événement, ce qui garde chaque partition petite, permet au planificateur d'élaguer jusqu'à la plage pertinente, et transforme la suppression des données de l'an dernier en suppression d'une partition plutôt qu'en delete qui tourne une journée. Le sharding est le dernier recours parce qu'il change le modèle de programmation : les jointures inter-shards disparaissent, les transactions deviennent distribuées, et le rééquilibrage devient un projet. Si je shard, la clé fait l'objet d'une vraie réflexion, puisque sharder une table d'événements par identifiant client vous donne un shard chaud dès qu'un client est dix fois plus gros que les autres.

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

  • Comment choisiriez-vous une clé de shard qui évite les points chauds ?
  • Comment migrez-vous une table en production vers une table partitionnée sans interruption ?
  • Quelles requêtes deviennent coûteuses une fois les données shardées ?

Autres questions pour Développeur backend

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