Quels sont tous les SGBD utilisés par Google, Facebook et Twitter?

Google utilise une base de données documentaire en 4 dimensions appelée grande table.
(MODIFIÉ après qu’il a été souligné que Facebook n’utilise pas de base de données propriétaire comme je le pensais)
Facebook utilise un MySQL très personnalisé: Client MySQL: Facebook
Facebook utilise Cassandra pour certains autres aspects de son activité.

Twitter utilise MySQL (EDIT: Ils n’utilisent plus RoR comme langue principale en raison de problèmes de mise à l’échelle, c’est maintenant dans Scala) (voici un article intéressant sur la façon dont ils le font: Comment Twitter stocke 250 millions de tweets par jour en utilisant MySQL – Haute évolutivité – )

Les bases de données basées sur des documents ont tendance à avoir un temps d’E / S plus rapide, avec une mise à l’échelle horizontale plus simple tout en augmentant les coûts associés aux relations de fabrication. Avec ceux-ci, vous disposez de collections de données et aucun schéma structuré géré par le système de gestion de base de données. Cela ne signifie pas que le schéma n’est pas important, mais simplement qu’il est plus flexible. Généralement, il n’y a pas de JOIN comme dans SQL Server, mais il existe des moyens de contourner ce problème, comme les sous-documents ou la gestion de la relation côté application.
(MongoDB (MongoDB University) est un dbms NoSQL basé sur des documents avec des cours en ligne très pratiques que vous pouvez suivre pour comprendre comment cela fonctionne.)

Les bases de données graphiques facilitent les requêtes basées sur les relations (comme trouver des amis d’amis, déterminer combien de vos amis aiment quelque chose, combien d’amis d’amis d’amis aiment quelque chose que vos amis aiment mais pas vous). (Neo4j, est une excellente base de données graphique open source que vous pouvez consulter si vous êtes intéressé)

MS SQL Server est un système de gestion de bases de données relationnelles, c’est ce que la plupart des gens pensent quand ils pensent aux bases de données (oracle et mysql sont aussi des SGBDR). Vous avez des tables et des champs avec des relations entre les différentes tables.

La chose la plus importante à considérer entre ceux-ci est le type de données que vous stockez et comment devrez-vous y accéder.

S’y associer est une notion de persistance polyglotte. Vous n’avez pas besoin d’utiliser une seule langue ou un système de stockage. S’il est logique d’utiliser une implémentation NoSQL et RDBMS, alors faites-le. Cela pourrait rendre les choses plus compliquées en fin de compte, mais vous obtiendrez de meilleures performances là où elles en ont le plus besoin.