Using Oracle
Dimensions
It appears that what we're talking about
when referring to "compression" in 10g OLAP
cubes is actually something called
"Compressed Composites". Composites should
be fairly familiar to anyone working with
Express or Oracle OLAP and are structures
that you set up when you've got very sparse
cubes. In cases where there are few actual
used combinations of dimensions for your
variable, compared to the potential set of
valid combinations, setting up composites,
which only store within them the actual
combinations of dimensions used, together
with indexes to the underlying dimensions,
reduces the amount of NA values stored in
the variable and results in more efficient
data storage.
The reduction in size occurs for those sets
of base dimensions values that identify
non-NA data at higher levels of hierarchical
dimensions.
For variables dimensioned by compressed
composites, Oracle OLAP reduces redundancy
in the variable, composite, and composite
index by using the"intelligence" of the
AGGREGATE command that populates the
variable. For sets of base dimensions values
that represent parent nodes, Oracle OLAP
creates a physical position in the composite
only for those tuples that represent a
parent with more than one descendant. Oracle
OLAP then creates an index between this
composite structure and the base dimensions
and uses this composite structure as the
dimensions of the variable. Since the actual
structure of a compressed composite is
smaller than that of a b-tree or hash
composite, a variable dimensioned by a
compressed composite is also smaller than a
variable dimensioned by a b-tree or hash
composite. Also, since the index for a
compressed composite only has nodes for
parents with more than one descendant, the
index of a compressed composite has fewer
levels and is smaller than the index of a
b-tree composite.
Although performance varies depending on the
depth of the hierarchies and the order of
the dimensions in the composite, aggregating
variables defined with compressed composites
is typically much faster than aggregating
variables defined with b-tree or hash
composites.
ROLLUP enables an SQL statement to calculate
multiple levels of subtotals across a
specified group of dimensions. It also
calculates a grand total. ROLLUP is a simple
extension to the GROUP BY clause, so its
syntax is extremely easy to use.
In multidimensional jargon, a "cube" is a
cross-tabulated summary of detail rows. CUBE
enables a SELECT statement to calculate
subtotals for all possible combinations of a
group of dimensions. It also calculates a
grand total. This is the set of information
typically needed for all cross-tabular
reports, so CUBE can calculate a
cross-tabular report with a single select
statement.
|
|