In this chapter, we will cover:
MicroStrategy's in-memory technology is the most important part of the Intelligence Server extension named OLAP Services.
The OLAP Services' main advantage is the ability to perform very fast queries using desktop, web, and mobile clients without the need to overload the RDBMS server. It also allows for slicing and dicing data directly in the Intelligent Server memory without having to re-execute the SQL statement against the data warehouse.
Formerly known as Intelligent Cubes and now rebranded In-Memory cubes, this technology improves the efficiency and performance of reports, documents, and Visual Insight analyses. In previous chapters we already took advantage of some OLAP features like page-by, pivoting, dynamic aggregation, and view filters; we are now exploring the use of multidimensional datasets to leverage the fast response times and the MOLAP capabilities of In-Memory cubes.
Some other advantages of cubes:
You can think about In-Memory cubes as a big, fast cache that is stored in the memory of the Intelligence Server. There are exceptions to that, in fact, cubes can be unloaded and saved to disk when not used and memory is needed for other cubes. Since direct memory access is several times faster than disk I/O, it is easy to guess that the benefits of fast executions are seriously impacted by the swapping to/from disk. It is the administrator's responsibility to properly size the memory on the Intelligence Server in order to minimize this impact. Please refer to the administration manuals in the product documentation for more details on how to monitor memory usage.
So, the In-Memory cube is a static copy of result data that can be shared among many different reports. Static means that, until refreshed, the cube contains the same numbers; depending on your data warehouse ETL policy, you can decide when and how often these numbers need to be recalculated, daily, hourly, or else.
All reports and documents that read from the cube will have the same version of the truth, and this is a very nice-to-have side effect. We can restrict users' access in such a way that they can only view data inside a cube and never escape from there. This is a tremendous help to prevent snowball SQL.
On the other hand, for the advanced users, it is possible to allow drill functionalities outside the cube, so that they can navigate from the aggregate multidimensional data (MOLAP) to the underlying detailed RDBMS tables (ROLAP). This is another very useful perk to lure business analysts and give them full control over the results.
I don't need to remind you that an empowered BI user, after a training period, becomes independent, self-sufficient, and is able to satisfy his/her data needs without IT support. And this is a very, if not the most, important benefit of In-Memory cubes.
Having said that, a good in-memory strategy can make our life easier. The drawback is that we can't just "cubify" everything. There are cases when the benefits are more evident than others. For example, frequently accessed reports with a very large number of returned rows are good cube candidates; reports that run only once a month, or return a very limited set of rows, may not give added value if cubified. If you have a business user complaining that every day he/she has to spend 15 minutes waiting for the invoice report to pop up, well, that's a clear example of a candidate cube!