La estructura de datos principal de los sitios de redes sociales es graph. En Facebook, el gráfico no está dirigido (cuando eres amigo de alguien, son tus amigos). En twitter, el gráfico está dirigido (sigues a alguien, pero no necesariamente te siguen).
Las dos formas más comunes de representar gráficos son adjacency lists y adjacency matrices.
Una lista de adyacencia es simplemente una lista de bordes en el gráfico. Considere a un usuario con un ID de usuario entero.
User1, User2
1 2
1 3
2 3
La interpretación de estos registros no dirigido es que el usuario 1 es amigo de los usuarios 2 y 3 y el usuario 2 es también amigo de usuario 3.
En representación de esta en una tabla de base de datos es trivial. Es la tabla de unión de muchas a muchas relaciones con la que estamos familiarizados. Las consultas SQL para encontrar amigos de un usuario en particular son bastante fáciles de escribir.
Ahora que conoce a los amigos de un usuario en particular, solo necesita unir esos resultados a la tabla de actualizaciones. Esta tabla contiene todas las actualizaciones del usuario indexadas por ID de usuario.
Mientras todas estas tablas se indexan correctamente, tendría un tiempo bastante fácil diseñar consultas eficientes para responder a las preguntas que le interesan.
+1 por mencionar la desnormalización, esto no es obvio para el viejo SQL wor ld donde 3NF ha sido la estrella guía durante mucho tiempo. (http://en.wikipedia.org/wiki/Third_normal_form) – Crypth