mondrian.rolap.cache
Interface SegmentCacheIndex

All Known Implementing Classes:
SegmentCacheIndexImpl

public interface SegmentCacheIndex

Data structure that identifies which segments contain cells.

Not thread-safe.

Author:
Julian Hyde

Method Summary
 void add(SegmentHeader header, boolean loading, SegmentBuilder.SegmentConverter converter)
          Adds a header to the index.
 List<List<SegmentHeader>> findRollupCandidates(String schemaName, ByteString schemaChecksum, String cubeName, String measureName, String rolapStarFactTableName, BitKey constrainedColsBitKey, Map<String,Comparable> coordinates, List<String> compoundPredicates)
          Returns a list of segments that can be rolled up to satisfy a given cell request.
 SegmentBuilder.SegmentConverter getConverter(String schemaName, ByteString schemaChecksum, String cubeName, String rolapStarFactTableName, String measureName, List<String> compoundPredicates)
          Returns a converter that can convert the given header to internal format.
 Future<SegmentBody> getFuture(SegmentHeader header)
          Returns a future slot for a segment body, if a segment is currently loading, otherwise null.
 List<SegmentHeader> intersectRegion(String schemaName, ByteString schemaChecksum, String cubeName, String measureName, String rolapStarFactTableName, SegmentColumn[] region)
          Finds a list of headers that intersect a given region.
 void loadFailed(SegmentHeader header, Throwable throwable)
          Notifies the segment index that a segment failed to load, and removes the segment from the index.
 void loadSucceeded(SegmentHeader header, SegmentBody body)
          Changes the state of a header from loading to loaded.
 List<SegmentHeader> locate(String schemaName, ByteString schemaChecksum, String cubeName, String measureName, String rolapStarFactTableName, BitKey constrainedColsBitKey, Map<String,Comparable> coordinates, List<String> compoundPredicates)
          Identifies the segment headers that contain a given cell.
 void printCacheState(PrintWriter pw)
          Prints the state of the cache to the given writer.
 void remove(SegmentHeader header)
          Removes a header from the index.
 void setConverter(String schemaName, ByteString schemaChecksum, String cubeName, String rolapStarFactTableName, String measureName, List<String> compoundPredicates, SegmentBuilder.SegmentConverter converter)
          Sets a converter that can convert headers in for a given measure to internal format.
 

Method Detail

locate

List<SegmentHeader> locate(String schemaName,
                           ByteString schemaChecksum,
                           String cubeName,
                           String measureName,
                           String rolapStarFactTableName,
                           BitKey constrainedColsBitKey,
                           Map<String,Comparable> coordinates,
                           List<String> compoundPredicates)
Identifies the segment headers that contain a given cell.

Parameters:
schemaName - Schema name
schemaChecksum - Schema checksum
cubeName - Cube name
measureName - Measure name
rolapStarFactTableName - Fact table table
constrainedColsBitKey - Bit key
coordinates - Coordinates
compoundPredicates - Compound predicates
Returns:
Empty list if not found; never null

findRollupCandidates

List<List<SegmentHeader>> findRollupCandidates(String schemaName,
                                               ByteString schemaChecksum,
                                               String cubeName,
                                               String measureName,
                                               String rolapStarFactTableName,
                                               BitKey constrainedColsBitKey,
                                               Map<String,Comparable> coordinates,
                                               List<String> compoundPredicates)
Returns a list of segments that can be rolled up to satisfy a given cell request.

Parameters:
schemaName - Schema name
schemaChecksum - Schema checksum
cubeName - Cube name
measureName - Measure name
rolapStarFactTableName - Fact table table
constrainedColsBitKey - Bit key
coordinates - Coordinates
compoundPredicates - Compound predicates
Returns:
List of candidates; each element is a list of headers that, when combined using union, are sufficient to answer the given cell request

intersectRegion

List<SegmentHeader> intersectRegion(String schemaName,
                                    ByteString schemaChecksum,
                                    String cubeName,
                                    String measureName,
                                    String rolapStarFactTableName,
                                    SegmentColumn[] region)
Finds a list of headers that intersect a given region.

This method is used to find out which headers need to be trimmed or removed during a flush.

Parameters:
schemaName - Schema name
schemaChecksum - Schema checksum
cubeName - Cube name
measureName - Measure name
rolapStarFactTableName - Fact table table
region - Region
Returns:
List of intersecting headers

add

void add(SegmentHeader header,
         boolean loading,
         SegmentBuilder.SegmentConverter converter)
Adds a header to the index.

If loading is true, there must follow a call to loadSucceeded(mondrian.spi.SegmentHeader, mondrian.spi.SegmentBody) or loadFailed(mondrian.spi.SegmentHeader, java.lang.Throwable).

Parameters:
header - Segment header
loading - Whether segment is pending a load from SQL
converter - Segment converter

loadSucceeded

void loadSucceeded(SegmentHeader header,
                   SegmentBody body)
Changes the state of a header from loading to loaded.

The segment must have previously been added by calling add(mondrian.spi.SegmentHeader, boolean, mondrian.rolap.agg.SegmentBuilder.SegmentConverter) with a not-null value of the bodyFuture parameter; neither loadSucceeded nor loadFailed(mondrian.spi.SegmentHeader, java.lang.Throwable) must have been called.

Informs anyone waiting on the future supplied with add(mondrian.spi.SegmentHeader, boolean, mondrian.rolap.agg.SegmentBuilder.SegmentConverter).

Parameters:
header - Segment header
body - Segment body

loadFailed

void loadFailed(SegmentHeader header,
                Throwable throwable)
Notifies the segment index that a segment failed to load, and removes the segment from the index.

The segment must have previously been added using add(mondrian.spi.SegmentHeader, boolean, mondrian.rolap.agg.SegmentBuilder.SegmentConverter) with a not-null value of the bodyFuture parameter; neither loadSucceeded(mondrian.spi.SegmentHeader, mondrian.spi.SegmentBody) nor loadFailed must have been called.

Informs anyone waiting on the future supplied with add(mondrian.spi.SegmentHeader, boolean, mondrian.rolap.agg.SegmentBuilder.SegmentConverter).

Parameters:
header - Header
throwable - Error message

remove

void remove(SegmentHeader header)
Removes a header from the index.

Parameters:
header - Segment header

printCacheState

void printCacheState(PrintWriter pw)
Prints the state of the cache to the given writer.

Parameters:
pw - Print writer

getFuture

Future<SegmentBody> getFuture(SegmentHeader header)
Returns a future slot for a segment body, if a segment is currently loading, otherwise null. This is the method to use to get segments 'hot out of the oven'.

Parameters:
header - Segment header
Returns:
Slot, or null

getConverter

SegmentBuilder.SegmentConverter getConverter(String schemaName,
                                             ByteString schemaChecksum,
                                             String cubeName,
                                             String rolapStarFactTableName,
                                             String measureName,
                                             List<String> compoundPredicates)
Returns a converter that can convert the given header to internal format.

Parameters:
schemaName - Schema name
schemaChecksum - Schema checksum
cubeName - Cube name
rolapStarFactTableName - Fact table
measureName - Measure name
compoundPredicates - Compound predicates
Returns:
Converter

setConverter

void setConverter(String schemaName,
                  ByteString schemaChecksum,
                  String cubeName,
                  String rolapStarFactTableName,
                  String measureName,
                  List<String> compoundPredicates,
                  SegmentBuilder.SegmentConverter converter)
Sets a converter that can convert headers in for a given measure to internal format.

Parameters:
schemaName - Schema name
schemaChecksum - Schema checksum
cubeName - Cube name
rolapStarFactTableName - Fact table
measureName - Measure name
compoundPredicates - Compound predicates
converter - Converter to store

Get Mondrian at SourceForge.net. Fast, secure and free Open Source software downloads