Le Programme D'Installation:
Imaginer un "twitter comme" le service lorsqu'un utilisateur envoie un message, qui est ensuite lu par un grand nombre (des centaines, des milliers, ou plus) utilisateurs.
Ma question est au sujet de la meilleure façon de l'architecte de la mémoire cache et la base de données pour optimiser pour un accès rapide et bien lit, mais toujours garder l'historique des données afin que les utilisateurs peuvent (s'ils le veulent) voir les messages plus anciens. L'hypothèse ici est que 90% des utilisateurs ne seraient intéressé par les nouveaux trucs, et que les vieux trucs aurez accédé à l'occasion. L'autre hypothèse ici est que nous voulons optimiser pour les 90%, et son ok si le vieux de 10%, un peu plus de temps pour récupérer.
Avec cela à l'esprit, ma recherche semble fortement point dans le sens de l'utilisation d'un cache pour les 90%, et puis aussi de stocker les messages dans un autre plus long terme du système persistant. Donc, mon idée à ce jour est l'utilisation de Redis pour le cache. Avantages est que le Redis est très rapide, et aussi il a construit dans pub/sub qui serait parfait pour la publication des postes à beaucoup de gens. Et puis j'ai été envisage d'utiliser MongoDB comme un plus permanent de la banque de données pour stocker les mêmes postes qui seront accessibles qu'ils expirent hors de Redis.
Questions:
1. Cette architecture contenir de l'eau? Est-il une meilleure façon de le faire?
2. Concernant le mécanisme de stockage de postes dans les deux le Redis & MongoDB, je pensais avoir l'app faire 2 écrit: 1er - écrire pour le Redis, il est alors immédiatement disponible pour les abonnés. 2e - après le succès de stockage pour le Redis, écrire à MongoDB immédiatement. Est-ce la meilleure façon de le faire? Devrais-je plutôt Redis pousser l'expiration de postes à MongoDB lui-même? J'ai pensé à ce sujet, mais je ne pouvais pas trouver beaucoup d'informations sur le poussant vers MongoDB de Redis directement.