com.bigdata.service.ndx
Interface ISplitter

All Known Subinterfaces:
IScaleOutClientIndex
All Known Implementing Classes:
AbstractScaleOutClientIndexView, AbstractScaleOutClientIndexView2, AbstractSplitter, ClientIndexView, ClientIndexViewRefactor

public interface ISplitter

Interface for finding the Splits for an ordered set of unsigned byte[] keys.

The splitter processes the keys in order. In queries the MDI for the partition spanning the first key. It then places all keys spanned by that partition into that split. When it reaches the first key which is GTE the rightSeparator, it queries the MDI for that key. Index partition Split, Move and Joins should not be able to cause a problem for this algorithm. At the worst, some tuples will be directed to a stale locator and the stale locator exception is handled.

The split operation is not atomic, however it is consistent in the following sense. Any identified Splits will either be for a valid index partition, for a partition of an index which has been deleted, or for an index partition which has since been split, joined or moved. In the latter case a StaleLocatorException will be thrown if the client attempts an operation on the unisolated view of that index partition. All clients know how to handle that exception and redirect the request as appropriate.

Version:
$Id: ISplitter.java 2265 2009-10-26 12:51:06Z thompsonbry $
Author:
Bryan Thompson

Method Summary
 LinkedList<Split> splitKeys(long ts, int fromIndex, int toIndex, byte[][] keys)
          Identify the Splits for an ordered array of keys such that there is one Split per index partition spanned by the data.
 LinkedList<Split> splitKeys(long ts, int fromIndex, int toIndex, KVO[] a)
          Identify the Splits for an ordered KVO[] such that there is one Split per index partition spanned by the data.
 

Method Detail

splitKeys

LinkedList<Split> splitKeys(long ts,
                            int fromIndex,
                            int toIndex,
                            byte[][] keys)
Identify the Splits for an ordered array of keys such that there is one Split per index partition spanned by the data.

Parameters:
ts - The timestamp for the IMetadataIndex view that will be applied to choose the Splits.
fromIndex - The index of the first key in keys to be processed (inclusive).
toIndex - The index of the last key in keys to be processed.
keys - An array of keys. Each key is an interpreted as an unsigned byte[]. All keys must be non-null. The keys must be in sorted order.
Returns:
The Splits that you can use to form requests based on the identified first/last key and partition identified by this process.

splitKeys

LinkedList<Split> splitKeys(long ts,
                            int fromIndex,
                            int toIndex,
                            KVO[] a)
Identify the Splits for an ordered KVO[] such that there is one Split per index partition spanned by the data.

Parameters:
ts - The timestamp for the IMetadataIndex view that will be applied to choose the Splits.
fromIndex - The index of the first key in keys to be processed (inclusive).
toIndex - The index of the last key in keys to be processed.
keys - An array of keys. Each key is an interpreted as an unsigned byte[]. All keys must be non-null. The keys must be in sorted order.
Returns:
The Splits that you can use to form requests based on the identified first/last key and partition identified by this process.


Copyright © 2006-2009 SYSTAP, LLC. All Rights Reserved.