2012-06-11 17 views
7

Estoy trabajando en un proyecto donde se necesita la generación de feed de actividad del usuario. Si el usuario A sigue al usuario B y el usuario B lo hace, algún usuario de la actividad A lo verá en su página de inicio.DB solution for user activity feed

Ahora estoy buscando una solución DB para la alimentación del usuario persistente. Una vez que el usuario B comete alguna acción, todos los usuarios que siguen al usuario B recibirán un registro. Creo que guardar un documento de mongodb para un usuario con una lista de referencias de objeto será mejor que guardar un documento para cada registro de feed.

Por otro lado, habrá muchas escrituras e incluso más lecturas y mongodb tiene un bloqueo en una colección. Tal vez esto podría ser un problema. O tal vez Redis podría ser utilizado para esto. Y redis teniendo algo con concurrencia. No tengo mucha experiencia en ambos.

La pregunta de resumen es ¿qué mejor sería usar para esta tarea: Mongo, Redis u otra cosa?

¡Gracias!

+0

Parece que la plataforma de la base de datos no ha sido seleccionada todavía? (De lo contrario, en una primera lectura, inicialmente parecía que tenía una base de datos existente y quería algún tipo de notificación de evento de cambio de datos, como desencadenantes o algo). Si esto está en la etapa de análisis inicial, y la tecnología de base de datos real no tiene dictado (afortunado), luego desarrollaré la arquitectura/diseño general (y los requisitos) antes de comprometerme con una tecnología de base de datos específica (y, a decir verdad, Mongo y Redis son bastante diferentes: uno es un caché en memoria, el other es una tienda persistente.) – michael

+0

¿Qué lenguaje de programación usará? – brycemcd

+0

@Bryce Estoy usando python. –

Respuesta

2

Asegúrese de evaluar neo4j. Fue creado para muchos de los mismos casos de uso que está describiendo.

+1

Los Db basados ​​en gráficos realmente brillan al calcular cosas relacionadas con "amigos de amigos", es decir: atraviesan más de 1 borde en un gráfico. Ese no parece ser el caso aquí –

2

Cassandra es una opción comprobada para las alimentaciones de actividad de alojamiento autónomo aunque se considera complejo de ejecutar y operar.

En la actualidad existen opciones de terceros/alojadas como GetStream.io y DynamoDB.