Si l'application demande un jeu de résultats similaire à celui qui a été récemment demandé, comment l'ORM peut-il garder la trace des résultats périmés et qui peuvent être réutilisés sans utiliser trop de ressources (mémoire) ou créer trop de complexité?Quelles stratégies un ORM peut-il utiliser pour mettre en cache des données tout en minimisant la complexité?
Répondre
L'invalidation de cache est une question très délicate. Le cas de base que vous proposez semble être quelque chose qui est le plus facilement géré par le cache de requêtes de la base de données (les requêtes fréquentes conserveraient la requête dans le cache). Une fois que la stratégie de cache devient plus compliquée que cela, la plupart des gains proviendraient de la gestion manuelle de l'expiration du cache et du cache avec un stockage de cache de valeur-clé séparé.
Si ce genre de chose est la norme pour l'accès aux données de votre application et que vous essayez de nouvelles choses à la mode, les vues mapreduce de couchdb pourraient bien convenir. Au-delà de la mémoisation de base, j'ai tendance à voir la mise en cache au niveau ORM comme un plan assez difficile et médiocre.
Je me référais directement à un cache en dehors du niveau ORM comme memcache (je fais du développement web), mais n'importe quel magasin de valeurs clés devrait fonctionner. Essentiellement, faire la mise en cache ORM automatiquement nécessiterait beaucoup de duplication des choses que la base de données devrait faire en ajoutant de l'architecture et des bogues. Dans la plupart des cas, les performances seraient mieux obtenues grâce à la mise en cache explicite au niveau de l'application et à une meilleure indexation de la base de données, etc. –
Lorsque j'ai besoin de savoir si les données locales sont synchronisées avec le serveur (distant), je garde une trace des transactions. Donc, avant de "rafraîchir" les données locales, je "interroge l'historique des transactions" et, si aucune transaction n'est survenue sur les données (distantes) concernées depuis la dernière "actualisation", elle est toujours synchronisée.
Mais je ne sais pas si c'est "minimiser la complexité".
- 1. Utiliser MediaTracker pour mettre en cache des images Swing application
- 2. Utilisation d'une variable statique pour mettre en cache des données
- 3. Stratégies pour l'accès au cache pendant l'actualisation?
- 4. Stratégies de cache utilisant IQueryables
- 5. Bibliothèque pour mettre en cache des pages Web sur iPhone?
- 6. La recherche automatisée des utilisateurs, quelles sont les bonnes stratégies?
- 7. Quelles sont les stratégies pour protéger les ressources Web en fonction de la logique métier?
- 8. Meilleure façon de mettre en cache les données
- 9. Devrais-je mettre les données en cache de manière préventive?
- 10. Quelles sont les stratégies pour tester un planificateur à l'unité?
- 11. Mise en cache Django pour un blog
- 12. mise en cache des données WebView (Android)
- 13. Passage à OR/M. Écrire des fichiers tout en enregistrant des objets
- 14. Modèle pour la mise à jour des bases de données SQL Server 2008 à partir d'un maître tout en minimisant la perturbation
- 15. Mise en cache des données chargées avec NHibernate
- 16. Quelle est la meilleure façon de mettre en cache des fichiers en php?
- 17. Création d'une méthode générique pour mettre en cache une entité
- 18. Utilisation de StructureMap pour mettre en cache une instance nommée
- 19. Comment puis-je pré-mettre en cache des images pour un affichage rapide avec javascript?
- 20. La complexité d'une fonction
- 21. comment puis-je mettre en cache FileContentResult pour les performances?
- 22. Quelles sont vos stratégies de gestion des risques?
- 23. Comment mettre en cache un fichier WSDL avec Java-WS
- 24. Existe-t-il un moyen de mettre en cache un mécanisme pour Class :: DBI?
- 25. Le meilleur moyen de mettre en cache des pages dans une base de données?
- 26. La meilleure façon de mettre en cache des données persistantes (par exemple des livres de code) au printemps?
- 27. Sur l'utilisation de Singlet basé sur Enum pour mettre en cache des objets volumineux (Java)
- 28. Impossible de mettre à jour les modèles avec la mise en cache des pages
- 29. objectdatasource et la mise en cache
- 30. zend ne pas utiliser des colonnes, et en sélectionnant tout
Sauf si vous construisez vous-même un ORM, c'est une question étrange à poser. Qu'est-ce que vous essayez de faire exactement? – Juliet
Veillez à examiner si votre ORM doit fonctionner sur plusieurs processus/machines ... la couche de mise en cache devient beaucoup plus difficile dans ce cas. –