Downsampling (apache-cassandra API)
Date: 2014-10-21

org.apache.cassandra.io.sstable

## Class Downsampling

- java.lang.Object
- - org.apache.cassandra.io.sstable.Downsampling

-     public class Downsampling
      extends java.lang.Object

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `BASE_SAMPLING_LEVEL` The base (down)sampling level determines the granularity at which we can down/upsample.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Downsampling()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static int` | `getEffectiveIndexIntervalAfterIndex(int index, int samplingLevel, int minIndexInterval)` Calculates the effective index interval after the entry at `index` in an IndexSummary.
    `static java.util.List<java.lang.Integer>` | `getOriginalIndexes(int samplingLevel)` Returns a list that can be used to translate current index summary indexes to their original index before downsampling.
    `static java.util.List<java.lang.Integer>` | `getSamplingPattern(int samplingLevel)` Gets a list L of starting indices for downsampling rounds: the first round should start with the offset given by L[0], the second by the offset in L[1], etc.
    `static int[]` | `getStartPoints(int currentSamplingLevel, int newSamplingLevel)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### BASE_SAMPLING_LEVEL

          public static final int BASE_SAMPLING_LEVEL

      The base (down)sampling level determines the granularity at which we can down/upsample. A higher number allows us to approximate more closely the ideal sampling. (It could also mean we do a lot of expensive almost-no-op resamplings from N to N-1, but the thresholds in IndexSummaryManager prevent that.) BSL must be a power of two in order to have good sampling patterns. This cannot be changed without rebuilding all index summaries at full sampling; for now we treat it as a constant.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Downsampling

          public Downsampling()

  - ### Method Detail

    - #### getSamplingPattern

          public static java.util.List<java.lang.Integer> getSamplingPattern(int samplingLevel)

      Gets a list L of starting indices for downsampling rounds: the first round should start with the offset given by L[0], the second by the offset in L[1], etc.
      Parameters:
        `samplingLevel` - the base sampling level
      Returns:
        A list of `samplingLevel` unique indices between 0 and `samplingLevel`

    - #### getOriginalIndexes

          public static java.util.List<java.lang.Integer> getOriginalIndexes(int samplingLevel)

      Returns a list that can be used to translate current index summary indexes to their original index before downsampling. (This repeats every `samplingLevel`, so that's how many entries we return.) For example, if [7, 15] is returned, the current index summary entry at index 0 was originally at index 7, and the current index 1 was originally at index 15.
      Parameters:
        `samplingLevel` - the current sampling level for the index summary
      Returns:
        a list of original indexes for current summary entries

    - #### getEffectiveIndexIntervalAfterIndex

          public static int getEffectiveIndexIntervalAfterIndex(int index,
                                                int samplingLevel,
                                                int minIndexInterval)

      Calculates the effective index interval after the entry at `index` in an IndexSummary. In other words, this returns the number of partitions in the primary on-disk index before the next partition that has an entry in the index summary. If samplingLevel == BASE_SAMPLING_LEVEL, this will be equal to the index interval.
      Parameters:
        `index` - an index into an IndexSummary
        `samplingLevel` - the current sampling level for that IndexSummary
        `minIndexInterval` - the min index interval (effective index interval at full sampling)
      Returns:
        the number of partitions before the next index summary entry, inclusive on one end

    - #### getStartPoints

          public static int[] getStartPoints(int currentSamplingLevel,
                             int newSamplingLevel)

Copyright © 2014 The Apache Software Foundation