|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.bsvrz.ars.ars.persistence.index.ATimeMonotoneIndex
public class ATimeMonotoneIndex
Diese Klasse implementiert einen monoton steigenden Index. Jeder Eintrag des Index besteht aus Datenindex-Minimum, Datenindex-Maximum, Archivzeit-Minimum, Archivzeit-Maximum, Datenzeit-Minimum, Datenzeit-Maximum und der Container-ID. In dieser Klasse ist gefordert, dass die Archivzeit monoton und die ContainerID streng monoton ueber alle Eintraege hinweg steigend sind. Datenindex und Datenzeit duerfen Rueckspruenge aufweisen (benoetigt fuer nachgeforderte Datensaetze). Daher kann diese Klasse nur nach Archivzeit suchen. Zudem muss in jedem Eintrag das Maximum groesser oder gleich dem Minimum sein. Wenn die Zahl der Einträge die Pufferkapazität im Speicher übersteigt, werden die Einträge in die Indexdatei geschrieben. Je größer die Pufferkapazität im Speicher, umso schneller ist die Suche, weil keine Plattenzugriffe notwendig sind. Die Suche nach ContainerIDs ist als Binärsuche implementiert, die automatisch im Speicher und in der Datei sucht.
Nested Class Summary | |
---|---|
protected static class |
ATimeMonotoneIndex.IndexStartmode
|
static class |
ATimeMonotoneIndex.Key
|
Field Summary | |
---|---|
static ATimeMonotoneIndex.IndexStartmode |
APPEND_REUSE_LAST
|
protected static ATimeMonotoneIndex.Key |
AT
|
protected static ATimeMonotoneIndex.Key |
DI
|
protected static ATimeMonotoneIndex.Key |
DT
|
static int |
ENTRY_LEN
|
static ATimeMonotoneIndex.IndexStartmode |
ERASE_OLD
|
static java.lang.String |
IDX_FILENAME
Der Dateiname, unter dem alle Indices dieser Art gespeichert werden (der Speicherort wird später bestimmt). |
static int |
NO_VALUE
|
Constructor Summary | |
---|---|
ATimeMonotoneIndex(int size)
Erzeugt einen neuen monoton steigenden Index. |
|
ATimeMonotoneIndex(int size,
java.lang.String basePath,
ATimeMonotoneIndex.IndexStartmode startmode)
Erzeugt einen neuen monoton steigenden Index. |
Method Summary | |
---|---|
void |
add(java.lang.String basePath,
long dIMin,
long dIMax,
long aTMin,
long aTMax,
long dTMin,
long dTMax,
long cID)
Fügt einen neuen Eintrag in den Buffer ein. |
int |
capacity()
|
void |
closeIndex(java.lang.String basePath)
Schließt den Index und speichert alle geänderten Daten auf Platte. |
int |
entries()
|
long |
getAbsoluteATMin(java.lang.String basePath)
Liefert den kleinsten Archivzeit-Minwert, der jemals in diesem Index gespeichert wird. |
protected IndexResult |
getContainerID(java.lang.String basePath,
byte[] temp,
ATimeMonotoneIndex.Key cmpKey,
long minKey,
long maxKey)
Liefert die IDs der Container, bei denen der gesuchte Key zwischen Anfang und Ende liegt. |
IndexResult |
getContainerIDByATime(java.lang.String basePath,
byte[] temp,
long minATime,
long maxATime)
Liefert die IDs der Container, deren Archivzeitspanne sich mit der angegebenen Spanne ueberschneidet. |
long |
getCurrentATMax()
|
long |
getCurrentATMin()
|
long |
getCurrentCID()
|
long |
getCurrentDIMax()
|
long |
getCurrentDIMin()
|
long |
getCurrentDTMax()
|
long |
getCurrentDTMin()
|
protected IndexResult |
getMinEntry(java.lang.String basePath)
Liefert den kleinsten Eintrag bei Sortierung nach Archivzeit. |
void |
resize(int newSize,
java.lang.String basePath)
Verändert die Größe des RingBuffers. |
java.lang.String |
toString()
|
void |
updateMax(long dIMax,
long aTMax,
long dTMax)
Aktualisiert die Maximumwerte des aktuellsten Eintrages. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final ATimeMonotoneIndex.IndexStartmode APPEND_REUSE_LAST
public static final ATimeMonotoneIndex.IndexStartmode ERASE_OLD
public static final int NO_VALUE
public static final java.lang.String IDX_FILENAME
protected static final ATimeMonotoneIndex.Key DI
protected static final ATimeMonotoneIndex.Key AT
protected static final ATimeMonotoneIndex.Key DT
public static final int ENTRY_LEN
Constructor Detail |
---|
public ATimeMonotoneIndex(int size, java.lang.String basePath, ATimeMonotoneIndex.IndexStartmode startmode) throws IndexException
size
- Größe des Buffers (Anzahl der Einträge)basePath
- Verzeichnis der Indexdateistartmode
- ATimeMonotoneIndex.IndexStartmode.ERASE_OLD
: alte Indexdatei loeschen,
ATimeMonotoneIndex.IndexStartmode.APPEND_REUSE_LAST
: anfuegen, letzten Eintrag weiterverwenden
IndexException
public ATimeMonotoneIndex(int size)
size
- Größe des Buffers (Anzahl der Einträge). Wird mindestens auf 1 gesetzt.Method Detail |
---|
public void resize(int newSize, java.lang.String basePath) throws IndexException
newSize
- basePath
-
IndexException
public void updateMax(long dIMax, long aTMax, long dTMax) throws IndexException
dIMax
- zu setzendes Datenindex-MaximumaTMax
- zu setzendes Archivzeit-MaximumdTMax
- zu setzendes Datenzeit-Maximum
IndexException
public long getCurrentCID()
public long getCurrentDIMin()
public long getCurrentDIMax()
public long getCurrentATMin()
public long getCurrentATMax()
public long getCurrentDTMin()
public long getCurrentDTMax()
public void add(java.lang.String basePath, long dIMin, long dIMax, long aTMin, long aTMax, long dTMin, long dTMax, long cID) throws IndexException
basePath
- Verzeichnis der IndexdateidIMin
- Min-Wert des DatenindexdIMax
- Max-Wert des DatenindexaTMin
- Min-Wert der ArchivzeitaTMax
- Max-Wert der ArchivzeitdTMin
- Min-Wert der DatenzeitdTMax
- Max-Wert der DatenzeitcID
- Container-ID des Neueintrags
IndexException
protected IndexResult getContainerID(java.lang.String basePath, byte[] temp, ATimeMonotoneIndex.Key cmpKey, long minKey, long maxKey) throws IndexException
basePath
- Verzeichnis der Indexdateitemp
- Speicherbereich, der als Puffer dient, wenn auf die Datei zurückgegriffen werden muss.cmpKey
- minKey
- maxKey
-
IndexException
public IndexResult getContainerIDByATime(java.lang.String basePath, byte[] temp, long minATime, long maxATime) throws IndexException
basePath
- Verzeichnis der Indexdateitemp
- Speicherbereich, der als Puffer dient, wenn auf die Datei zurückgegriffen werden muss.minATime
- Beginn der ZeitspannemaxATime
- Ende der Zeitspanne
IndexException
public long getAbsoluteATMin(java.lang.String basePath) throws IndexException
basePath
- Verzeichnis, in dem die Index-Datei liegt
IndexException
- Bei Zugriffsproblemen mit der IndexDateiprotected IndexResult getMinEntry(java.lang.String basePath) throws IndexException
basePath
- Verzeichnis, in dem die Index-Datei liegt
IndexException
- Bei Zugriffsproblemen mit der IndexDateipublic int capacity()
public int entries()
public void closeIndex(java.lang.String basePath) throws IndexException
basePath
- Verzeichnis, in dem die Index-Datei liegttemp
- Temporaerer Speicherbereich (wird nicht verwendet)
IndexException
public java.lang.String toString()
toString
in class java.lang.Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |