2010-05-19 11 views
2

Je réfléchis beaucoup à la possibilité de créer un cache automatique ou manuel complet. Notre approche automatique serait une solution qui fouille dans la base de données, interroge et formate chaque demande de données potentielle et future et l'enregistre dans un stockage de cache approprié (basé sur memcache ou sur disque). Les données ne seraient alors pas invalidées et simplement écrasées par l'action de mise à jour automatique du cache.Avantages et inconvénients avec cache automatisé/manuel

L'approche manuelle consiste à laisser chaque requête vérifier s'il existe une version de cache valide et stockée contenant les données demandées et, dans le cas contraire, à les recréer et à les enregistrer dans un stockage de cache approprié.

Quel est le bon sens à faire? Comment les grands gars font-ils cela?

Merci beaucoup!

Répondre

1

La réponse est bien sûr: cela dépend! Si vous obtenez un grand nombre de requêtes à un sous-ensemble de vos données, alors la mise en cache à la volée pourrait être meilleure que la mise en cache de tout. Par exemple, si vous interrogiez une base de données de tarifs hôteliers avec une requête complexe, et que seulement quelques hôtels obtenaient souvent des résultats positifs, il ne serait pas logique de mettre en cache chaque recherche pour chaque hôtel. Attendez simplement que l'utilisateur interroge quelque chose, puis cache ce résultat.

Si, par contre, vous disposez d'un ensemble de bases de données largement répandu, vous pouvez rechercher quelque chose comme une vue matérialisée http://en.wikipedia.org/wiki/Materialized_view. Cela rend la base de données à toute la mise en cache pour vous et matérialise la requête pour l'ensemble complet dans une table "mise en cache".

Questions connexes