For one of our new initiatives we were looking at quotient cube. Taking the liberty of few over simplifications we can look at quotient cube as a precomputed cube for all the dimensional combinations available in the data which preserves the navigation(rollup/drilldown) semantics and is very concise. Using a tree representation for the same helps us keep the retrieval of any dimensional combination aggregation to k where k is the number of dimensions.

A quotient cube takes care of dimensional sparseness and also helps us in understanding which values may not have a say in a particular scenario. Lets take a simple case of 20 yr sales data for apple products. Time as usual would be one of the dimensions in it, computing the aggregated sales value for iPad for years before 2010 does not make sense, as iPad was launched in 2010. Since quotient cube computes and stores aggregates only for value combinations available in the data, it would not waste any computation on calculation of sales figures for iPad before 2010.

The data structure and the values that are stored facilitate programmatic discovery of the fact that iPad sales are not applicable for these years and could report this as an interesting trend.

We are trying to come up with a js implementation of the cube which can be run in the browser or using nodejs. Thanks to the awesome performance of modern day js engines, we should have a simple js include to convert any html table to a data cube. Our initial experiments with movie lens data prove that we can easily crunch about 100k records at server side in 2 seconds on an average laptop using node js, for a pure client side implementation without workers, 1.2k records can be processed without breaking any sweat.  The other implementation is as an UDF for MySQL.