Me pregunto si alguna otra base de datos no relacional sería adecuada para las secuencias de actividad, algo así como lo que ve en Facebook, Flickr (http://www.flickr.com/activity), etc. En este momento, Estoy usando MySQL, pero es bastante agotador (tengo decenas de millones de registros de actividad) y dado que son básicamente de solo lectura, una vez escritos y siempre vistos cronológicamente, pensé que una base de datos alternativa podría funcionar bien.Alternativas a las bases de datos relacionales tradicionales para las corrientes de actividades
Las actividades son cosas como:
- 6 PM: John favorited tocino
- 17:30: Jane comentado en Snow Crash
- 17:15: Jane añadido una foto de Bacon su álbum
el problema es que a diferencia de Twitter y algunos otros sistemas, no puedo simplemente agregar actividades a las listas para cada usuario que esté interesado en la actividad - si pudiera parece que Redis would be a good fit (con su lista de operaciones).
tengo que ser capaz de hacer los siguientes:
- actividades y jalar para un conjunto o un subconjunto de personas que se están siguiendo ("Juan" y "Jane"), en orden cronológico inverso
- actividades de atracción para una cosa (como "tocino") en orden cronológico inverso
- Filtrar por tipo de actividad ("favorito", "comentario") en
- tienda menos 30 millones de actividades
- Idealmente, si agrega o elimina a una persona a la que está siguiendo, su flujo de actividad reflejará el cambio.
He estado haciendo esto con MySQL. Mi tabla de "actividades" es tan compacta como pude, las claves son lo más pequeñas posibles y está indexada de forma adecuada. Funciona, pero se siente como la herramienta incorrecta para este trabajo.
¿Alguien está haciendo algo como esto fuera de un RDBMS tradicional?
actualización de noviembre de 2009: Es demasiado pronto para responder a mi propia pregunta, pero mi solución actual es seguir con MySQL, sino aumentar con Redis para un acceso rápido a los datos de flujo de actividad frescas. Más información en mi respuesta aquí: How to implement the activity stream in a social network ...
Actualización Agosto 2014: Años después, todavía estoy usando MySQL como el sistema de registro y el uso de Redis de acceso muy rápido a las más recientes actividades para cada usuario. Lidiar con los cambios de esquema en una tabla masiva de MySQL se ha convertido en un problema gracias a pt-online-schema-change
Me di cuenta de que Kellan Elliott-McCrea de Flickr ha marcado el artículo sobre lo que hace FriendFeed con MySQL (bret.appspot.com/entry/how-friendfeed-uses-mysql/...) con una nota que dice que es "muy similar a lo que Flickr hace para las corrientes de actividad. – casey
Me interesa la forma en que ha implementado la secuencia de actividad ... ¿Tiene sugerencias sobre cómo crear el modelo de objetos? He publicado una pregunta sobre esto (http://stackoverflow.com/questions/1443960/how-to-implement-the-activity-stream-in-a-social-network) pero no tuve mucha suerte .. –
@ electroportal: publiqué una respuesta a tu pregunta: http://stackoverflow.com/questions/1443960/how-to-implement-the-activity-stream-in-a-social-network/1766371#1766371 – casey