We should be able to leverage a cache to improve application performance.
Actual behavior
When fetching permissions or asset lists (Cohort Defs, Concept sets, etc), a DB fetch is required which can impact performance.
Steps to reproduce behavior
Access any endpoint that leads to a JPA request.
Observe the database is accessed.
Implementation Notes
We intially had JCache implemented with a ehCache backend but this was removed because the initial implementation was applied to fetching record counts for vocabulary searching, and the search-semantics that we developed using JPA allowed to load ranges of value into the cache and search for a list of numbers from the cache.
However, this caching approach isn't as robust as using a caching framework where you can specify things like expiry, storage tiers, clustering cachings, cache write-through and statistics.
This issue sets the goal to re-introduce JCache, and provide an initial implementation to improve performance by caching results.
Expected behavior
We should be able to leverage a cache to improve application performance.
Actual behavior
When fetching permissions or asset lists (Cohort Defs, Concept sets, etc), a DB fetch is required which can impact performance.
Steps to reproduce behavior
Implementation Notes
We intially had JCache implemented with a ehCache backend but this was removed because the initial implementation was applied to fetching record counts for vocabulary searching, and the search-semantics that we developed using JPA allowed to load ranges of value into the cache and search for a list of numbers from the cache.
However, this caching approach isn't as robust as using a caching framework where you can specify things like expiry, storage tiers, clustering cachings, cache write-through and statistics.
This issue sets the goal to re-introduce JCache, and provide an initial implementation to improve performance by caching results.