Patrón de diseño: sistema de notificación.

Estoy trabajando en un sitio web que utilizará las características de las redes sociales (como Facebook, por ejemplo).

Me gustaría implementar un sistema de notificación que muestre cosas como "X te agregó como amigo", "Y te invito a la fiesta", "Z ha realizado el último cuestionario" ... y no sé cómo hacerlo .

Me pregunto cuál es la mejor solución:

Solución 1, también conocida como "registro".

Una tabla dedicada "notificación". Agrego filas en esta tabla cada vez que surge una notificación (amigo agregando, contestando preguntas, etc.). La tabla "notificación" tiene campos que contienen información diferente, según el tipo de notificación que se agrega a la tabla.

Bueno : fácil de codificar, separación entre la función de notificación y las funciones "normales", no necesito muchos recursos cuando necesito leer la tabla.

Malo : La tabla de notificaciones crecerá probablemente muy grande (creo que agregaré 10k filas / día en la tabla), información "duplicada": las informaciones en la tabla de notificaciones se pueden encontrar en todas las demás tablas usando fecha / lista / comparación.

Solución 2, también conocida como "buscar en todas partes".

Cada vez que necesito mostrar la lista de notificaciones o mostrar cuántas notificaciones nuevas hay, miro toda la tabla en cuestión, comparo la fecha / etc para saber si ocurrió algo nuevo desde la última vez que el usuario revisó la notificación.

Bueno : No es una tabla demasiado grande en comparación con la solución 1, no hay "redundancia" de información.

Malo : Tengo miedo por la cantidad de usuarios (~ 1k +), hace que el servidor explote porque consume muchos recursos y tiempo, y es un poco más difícil de codificar / mantener.

¿Puede decirme por favor qué piensa mejor y por qué, o tiene una solución que no imaginé?

Gracias =)

Editar: Digamos que uso un diseño de base de datos realmente básico: los usuarios tienen amigos, pueden hacer pruebas.

1 tabla para la lista de usuarios, lista de preguntas,

1 tabla de preguntas <-> relación de usuario,

1 mesa usuario <-> usuario para amistad.

Cada vez que un usuario visita su propio perfil, puede ver lo que sucedió: nuevos cuestionarios <-> relación de usuario, nuevo usuario <-> relación de usuario, etc. ¿Cómo diseñaría una notificación como esa?

Respuestas a la pregunta(4)

Su respuesta a la pregunta