Instagram

Quelle est la base de données d’Instagram ?

Pour pouvoir supporter le très grand nombres de données ajoutées en permanence sur Instagram, l’équipe technique d’Instagram doit régler des problèmes de volume et de temps réels très importants. Des essais avec des technos NoSQL ont été essayés mais abandonnés : Pour Instagram, PostgreSQL est la solution de base de données finalement retenue.

Pour pouvoir absorber les 25 photos et les 100 likes par seconde, un seul serveur ne suffit pas. La base de données est donc répartie entre les différents serveurs PostgreSQL via une technique nommée « Shard » qui permet de partitionner l’ensemble. Multiplier les serveurs permet alors d’absorber la demande.

Mais cela pose des problèmes pour générer des identifiants uniques car comment être certain d’avoir des identifiants uniques alors qu’il y a plusieurs bases de données ? PostgreSQL dispose d’une fonctionnalité nommée « Schema » qui est alors utilisée conjointement avec des ID construits sur mesure (un timer, l’ID du Shard, un ID qui s’auto-incrémente). Les enregistrements générés sont alors uniques et permettent de subir la très forte volumétrie exigée.

L’ensemble est très bien détaillée dans l’article des développeurs Instagram.