2009-03-12 6 views
0

Je sais que N/Hibernate utilise un cache pour satisfaire les requêtes qu'il a déjà vues et qui s'appelle un cache de requête. Cependant, peut-il satisfaire un sous-ensemble de cette requête? Je ne m'imaginerais pas puisque je devinerais que le problème général de comprendre cela est indécidable.La requête de mise en cache aboutit à des ORM - satisfaire des requêtes de sous-ensembles arbitraires

Existe-t-il des stratégies pour cela? Dites que j'ai une requête pour tous les widgets qui coûtent moins de 20 $. Plus tard, j'ai une requête qui concerne tous les widgets de moins de 10 $. Évidemment, les résultats de la deuxième requête seraient déjà mis en cache (en supposant qu'il n'y ait pas d'expulsions, etc.), donc j'aimerais simplement réévaluer le prédicat par rapport au prédicat de requête mis en cache pour déterminer s'il le «contient». Existe-t-il des stratégies pratiques pour le faire?

Répondre

0

Est-il assez fréquent que le filtrage en mémoire soit utilisé sur les résultats de requête mis en cache, en utilisant par exemple LINQ.

+0

Mais comment savez-vous que la requête correspond aux résultats en mémoire, c'est-à-dire que les résultats d'une requête précédente couvrent la requête en question? Si une requête comme "Price <20 AND Color = 'Red'" est mise en cache, elle n'est pas satisfaite en filtrant juste pour "Price <20 OR Color = 'Red'". – codekaizen

+0

Vous mettriez généralement en cache l'intégralité de l'ensemble (où cela rend sesne en termes de taille) –

+0

Droit - et cela ne fonctionne pas vraiment pour les grands ensembles de données. – codekaizen

Questions connexes