public class DIdxATimeMonotoneIndex extends ATimeMonotoneIndex
In dieser Klasse ist zusaetzlich gefordert, dass die Folge der Datenindexe streng monoton ist.
ATimeMonotoneIndex.IndexStartmode, ATimeMonotoneIndex.Key
APPEND_REUSE_LAST, AT, DI, DT, ENTRY_LEN, ERASE_OLD, IDX_FILENAME, NO_VALUE
Constructor and Description |
---|
DIdxATimeMonotoneIndex(int size)
Erzeugt einen neuen monoton steigenden Index.
|
DIdxATimeMonotoneIndex(int size,
java.lang.String basePath,
ATimeMonotoneIndex.IndexStartmode startmode)
Erzeugt einen neuen monoton steigenden Index.
|
Modifier and Type | Method and Description |
---|---|
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.
|
void |
checkForAdd(java.lang.String basePath,
long dIMin,
long dIMax,
long aTMin,
long aTMax,
long dTMin,
long dTMax,
long cID)
Prüft, ob dem Index ein neuer Eintrag hinzugefügt werden könnte.
|
long |
getAbsoluteDIdxMin(java.lang.String basePath)
Liefert den kleinsten Datenindex-Minwert, der jemals in diesem Index gespeichert wurde.
|
IndexResult<ArchiveTimeIndexEntry> |
getContainerIDByDIdx(java.lang.String basePath,
byte[] temp,
long minKey,
long maxKey) |
capacity, closeIndex, entries, getAbsoluteATMin, getContainerID, getContainerIDByATime, getCurrentATMax, getCurrentATMin, getCurrentCID, getCurrentDIMax, getCurrentDIMin, getCurrentDTMax, getCurrentDTMin, getMinEntry, resize, toString, updateMax
public DIdxATimeMonotoneIndex(int size)
Erzeugt einen neuen monoton steigenden Index. Neue Eintraege werden an eine bestehende Indexdatei angefuegt, wenn diese bereits existiert. Existiert keine Indexdatei, wird eine erzeugt. Initial werden keine Daten eingelesen; es findet kein Plattenzugriff statt.
size
- Größe des Buffers (Anzahl der Einträge). Wird mindestens auf 1 gesetzt.public DIdxATimeMonotoneIndex(int size, java.lang.String basePath, ATimeMonotoneIndex.IndexStartmode startmode) throws IndexException
Erzeugt einen neuen monoton steigenden Index.
Bei startmode==APPEND_REUSE_LAST wird der Ringpuffer mit den aktuellsten Daten aus einer vorhandenen Indexdate gefüllt. Zusätzlich wird der letzte Eintrag in der Indexdatei zum currentEntry. Damit kann ein Container fortgesetzt und der Key2 weiter aktualisiert werden.
Bei startmode==CREATE_NEW wird ein leerer Index erzeugt und die bisherige Indexdatei (sofern vorhanden) geloescht.
size
- Größe des Buffers (Anzahl der Einträge)basePath
- Verzeichnis der Indexdateistartmode
- IndexStartmode#ERASE_OLD
: alte Indexdatei loeschen, IndexStartmode#APPEND_REUSE_LAST
: anfuegen, letzten Eintrag weiterverwendenIndexException
public void add(java.lang.String basePath, long dIMin, long dIMax, long aTMin, long aTMax, long dTMin, long dTMax, long cID) throws IndexException
Fügt einen neuen Eintrag in den Buffer ein. Bei Bedarf wird der Puffer auf Platte geschrieben.
add
in class ATimeMonotoneIndex
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 NeueintragsIndexException
- Falls die Konsistenzpruefung der Eintraege fehlschlaegtpublic void checkForAdd(java.lang.String basePath, long dIMin, long dIMax, long aTMin, long aTMax, long dTMin, long dTMax, long cID) throws IndexException
Prüft, ob dem Index ein neuer Eintrag hinzugefügt werden könnte.
checkForAdd
in class ATimeMonotoneIndex
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 NeueintragsIndexException
- Falls die Konsistenzpruefung der Eintraege fehlschlaegtpublic IndexResult<ArchiveTimeIndexEntry> getContainerIDByDIdx(java.lang.String basePath, byte[] temp, long minKey, long maxKey) throws IndexException
IndexException
public long getAbsoluteDIdxMin(java.lang.String basePath) throws IndexException
Liefert den kleinsten Datenindex-Minwert, der jemals in diesem Index gespeichert wurde.
basePath
- Verzeichnis, in dem die Index-Datei liegtIndexException
- Bei Zugriffsproblemen mit der IndexDatei