2010-02-22 17 views
8

Si tuviera que crear una aplicación como Twitter, ¿cómo diseñaría el sistema de mensajes?¿Cómo diseñarías un sistema de mensajes tipo twitter, cómo diseñar el sistema de mensajes?

Busque específicamente ideas sobre el modelo de datos básico, y cómo se escribiría el método que toma el tweet del usuario y luego se lo envía a todos sus seguidores.

ejemplo:

Tweets (tweetID, userID, message, datesend) 
User (userID, ...) 
Followers(userID, followerUserID) 

Inbox(userID, tweetID) 

es el modelo por encima de un buen punto de partida?

¿Primero insertarías el tweet y luego insertarías un mensaje en la cola? Luego, uno por uno, ¿saca un mensaje de la cola y envía el mensaje a sus suscriptores?

(estoy haciendo caso omiso de la funcionalidad móvil de Twitter, simplemente se centra en la funcionalidad basada en web, pero pensé en utilizar una cola desde el principio lo que se podría añadir otras funcionalidades más adelante)

Respuesta

0

No creo Twitter utiliza una cola de mensajes (bandeja de entrada en su modelo de datos). Creo que en Twitter todo se hace a través de la fecha. Por lo tanto, cada usuario tiene una "última fecha de visualización" y la lista de entrada/cola de mensajes se crea buscando todos los tweets suscritos después de la última fecha de visualización.

Para modificar su modelo de datos, elimine la bandeja de entrada y agregue una última columna de fecha de visualización al usuario.

También espero que la información del seguidor no se almacene como quién sigue a un usuario, sino como los usuarios que un usuario dado está siguiendo. Por supuesto, podría almacenarse en ambos sentidos, pero eso parece tener más sentido para mí.

+0

la cola de mensajes y la bandeja de entrada son 2 cosas separadas. – user275475

+1

@mrbux: Me estás tomando el pelo, ¿verdad? ¿Me das un -1 porque tu especificación del problema implicaba que pensabas que el problema estaba equivocado? Wow, eso no parece estar en el espíritu de SO en absoluto. ¿Cuál es exactamente tu diseño de base de datos? ¿Qué hace la bandeja de entrada? ¿Por qué lo mencionaste en tu pregunta? – Hogan

Cuestiones relacionadas