+2  A: 

As with everything performance-related, you need to try options and measure their performance. It is very hard to tell in advance which one will work best for you.

One of the latest trends is in-memory databases. Doing BI and analytics in the database which holds the entire needed dataset in memory. We're talking about gigabytes of RAM.

You could consider this option knowing it is not exotic any more. RAM is cheap these days. Maybe it will work for you. You need to try it out.

Developer Art
mmm I will have to take a hard look at this one as well
Anthony
+1  A: 

You forgot about the hybrid of your two extremes -- a smarter cache (smarter than everything in memory).

Initialize the cache with no rules (or a few of the most popular).
The app requests a rule from the cache.
If it exists in the cache, return it.
If not, load it from the database, store it in cache, and return it to the user.

Austin Salonen