Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/01/2011, 05:04
leif_sk8er
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 14 años, 10 meses
Puntos: 5
duda de estructura y diseño

Buenas,
Estoy desarrollando una red social y tengo una duda en cuanto a la forma en la que guardar unos registros en las tablas.

Para que os hagais una idea quiero hacer lo mismo que hace facebook en su primera pagina cuando entras con tu usuario, que te muestra todas las novedades, o como en tuenti cuando sale todo lo nuevo que ha pasado con tus amigos.

Para organizar todas las cosas que pasan he creado una tabla de esta forma llamada movimientos:

movimientos
|-- ID
|-- FECHA
|-- ID_USUARIO
|-- ID_GRUPO
|-- ID_SECCION
|-- ID_ELEMENTO
|-- ACCION
|-- SECCION_OBJETO
|-- ELEMENTO_OBJETO
|-- ACCION_OBJETO


Os explico un poco, ID_USUARIO es el ID del usuario que realiza el movimiento, ID_GRUPO es por si indica que ese movimiento lo deben saber unicamente un ID al que pertenecen solo unas personas (Evitando que se enteren todos sus contactos), ID_SECCION es el ID de la zona donde realiza una accion (Por ejemplo si pone un comentario a un usuario el ID_SECCION es 1 y el ID_ELEMNTO es el ID del otro usuario, y la accion es 1 que es la de comentario), SECCION_OBJETO, SECCION_ELEMENTO y ACCION_OBJETO es para cuando es necesario guardar un ID de alguna cosa que hace relacion al movimiento, por ejemplo el ID del comentario o cosas similares

El problema es que una vez filtre los movimientos que le atañan a un usuario para cada una de esas filas devueltas deberé hacer una nueva consulta o dos para sacar los nombres de las cosas. Es decir que como dependiendo de cada accion las cosas que tiene que hacer son muy diferentes parece que es la unica forma.

Mi duda es: ¿Seria mejor guardar en esa tabla los movimientos de todos? o es mejor para cada usuario crear una tabla de movimientos unica solo con sus movimientos?


Por otro lado, y para evitar hacer todas esas consultas cada vez, se me habia ocurrido crear un xml con una estructura similar a la tabla pero ya con los nombres y todo puesto para luego solo parsearlo. El problema es que si yo hago un movimiento que hay 100 amigos que deben enterarse tendré que actualizar 1000 ficheros de golpe, haciendo que tarde mucho, mientras que de la forma de las consultas a cada usuario le tardará un poco solo.


No se, estoy bastante perdido y liado en este asunto por que alucino lo rapido que lo hace facebook con tantas cosas diferentes que tiene, y cuando yo tenga en una tabla 100,000 o 1,000,000 de registros va a ser eso eternamente lento.


A ver si podéis ayudarme, o si se os ocurre una buena forma de guardar los registros o filtrarlos toda ayuda es agradecida. Si no entendieseis alguna cosa decirmelo que os lo intento explicar mas a ver si consigo solucionar este aspecto que en casi todos los proyectos va a salirme como duda.