J'ai travaillé sur un projet complexe en utilisant une application distribuée qui nécessite la mise en cache de requêtes SQL: depuis que j'utilise iBatis framework, j'aimerais utiliser memcached - sysadmin l'exige - en tant que moteur de cache. Est-ce possible? Si oui, est-ce que quelqu'un connaît les solutions/implémentations existantes? Je sais déjà que OSCACHE fonctionne également en cluster, mais j'aimerais savoir si l'utilisation de l'architecture existante est possible, avant de passer à une nouvelle. Merci beaucoup d'avance !!!Est-il possible d'injecter memcached dans Apache iBatis?
Répondre
Question intéressante! IBatis renvoie un ou plusieurs JavaBeans, qui peuvent à leur tour contenir des listes imbriquées de JavaBeans. Un JavaBean est juste un objet Java qui adhère à certains conventions simples, dont l'un est qu'il implémente l'interface Serializable. Si c'est le cas, vous pouvez serialize une structure JavaBean dans une chaîne et désérialiser cette chaîne dans une copie complète de la structure JavaBean d'origine. Supposons que vous vous assuriez que tous vos objets de résultat sont déclarés "implémentables Serializable". Les JavaBeans ont une structure si simple que les mécanismes de sérialisation/désérialisation des objets Java par défaut n'ont pas besoin d'être remplacés, ce qui est bien.
Ces chaînes sérialisées sont les valeurs que vous avez placées dans la mappe de hachage distribuée de votre cluster memcached. Dans chacune de vos méthodes Java qui exécute une requête et retourne ses résultats, vous recherchez d'abord le résultat existant dans memcached, et si est là et n'a pas expiré, vous le désérialisez dans les JavaBeans que (probablement) votre requête sont retournés. Si le résultat de la requête est et non trouvé dans memcached, vous interrogez la base de données via iBatis, mais avant de renvoyer le résultat, vous le sérialisez dans une chaîne et stockez cette valeur dans memcached.
La question suivante est de savoir quoi utiliser pour le résultat de la requête memcached touches. Quelque chose comme
YourIbatisQueryName + ":" + FirstParameterValue + ":" + SecondParameterValue
devrait fonctionner (par exemple, "SelectStackOverflowReputation: Simone: Tripodi").
Vous avez presque terminé. La dernière étape consiste à déterminer combien de temps un résultat de requête peut être mis en cache sans devenir invalide. Vous pouvez peut-être définir un délai d'expiration différent pour chaque requête, ou vous avez peut-être besoin d'un mécanisme d'invalidation manuelle du cache. La mise en cache des résultats de la requête même pour quelques minutes peut avoir des effets très importants sur l'évolutivité de votre application.
Remarque: Une variante de cette approche consiste à ne pas utiliser la sérialisation Java par défaut, mais à utiliser XML ou JSON ou un autre format. Si vous choisissez XML ou JSON, examinez un framework de sérialisation tel que XStream pour sérialiser/désérialiser vos JavaBeans en XML Strings et revenir en arrière.
étend cacheController, mais alias utiliser ajouter global
- 1. Mapping dictionnaire avec iBATIS
- 2. Interrogation Memcached
- 3. Quel est -b dans memcached
- 4. ibatis return values
- 5. limitations memcached
- 6. memcached Surveillance
- 7. spymemcached (Client Java Memcached)
- 8. ibatis in/out problème problème
- 9. SmartGWT Live Grid (avec iBATIS)
- 10. Limite de bloc Memcached
- 11. Connexions persistantes à memcached dans PHP
- 12. pecl memcached sur windows
- 13. memcached demande de caches?
- 14. Client MemCached avec Delphi
- 15. Comment utiliser memcached avec Joomla
- 16. Enyim fournisseur memcached CPU spike
- 17. ibatis ibator Problème de génération de code Java
- 18. Comment mapper des enregistrements multiples en utilisant SqlMap dans Ibatis
- 19. Comment implémenter des relations un-à-plusieurs dans Ibatis?
- 20. Comparaisons de clients .NET Memcached
- 21. Avantages de plusieurs instances memcached
- 22. Intégration de Spring 2.5 avec Ibatis 3
- 23. Mise à l'échelle avec memcached pour stocker le fichier gzippé
- 24. Mise en cache de fragments avec Memcached
- 25. Remplacer un élément dans memcached sans modifier l'heure d'expiration
- 26. Transformer dans apache collection15
- 27. MS Velocity vs Memcached pour Windows?
- 28. Comment créer une requête à l'exécution avec iBATIS
- 29. l'extension Memcached pour PHP sur Windows Server
- 30. Définition des constantes Memcached en PHP
Pouvez-vous modifier votre réponse pour être plus précis sur les actions nécessaires. – Lipongo