Class ArchiveTimeIndexImpl
- All Implemented Interfaces:
ArchiveTimeIndex
,BaseIndex<IndexValues>
,AutoCloseable
- Direct Known Subclasses:
DataIndexAndArchiveTimeIndex
Zudem muss in jedem Eintrag das Maximum Größer 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
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
Der Dateiname, unter dem alle Indices dieser Art gespeichert werden -
Constructor Summary
ConstructorsConstructorDescriptionArchiveTimeIndexImpl
(int bufferSize, Path file) Erzeugt einen neuen monoton steigenden Index.ArchiveTimeIndexImpl
(int bufferSize, Path file, IndexContentDescriptor<IndexValues> contentDescriptor) Erzeugt einen neuen monoton steigenden Index. -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(long dIMin, long dIMax, long aTMin, long aTMax, long dTMin, long dTMax, long cID) Fügt einen neuen Eintrag in den Buffer ein.protected void
checkAdd
(long dIMin, long dIMax, long aTMin, long aTMax, long dTMin, long dTMax, long cID) static int
Gibt die anzahl Bytes zurück, die ein Indexeintrag belegt.long
Liefert den kleinsten Archivzeit-Minwert, der jemals in diesem Index gespeichert wird.Methods inherited from class de.bsvrz.ars.ars.persistence.index.backend.management.AbstractIndex
append, append, close, first, flush, getFile, getFirst, getLast, getStorage, insert, insert, insertOrReplace, insertOrReplace, numEntries, query, query, removeAll, setInsertValue, setInsertValue, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface de.bsvrz.ars.ars.persistence.index.ArchiveTimeIndex
getContainerID, getContainerIDByArchiveTime
Methods inherited from interface de.bsvrz.ars.ars.persistence.index.backend.management.BaseIndex
append, append, close, first, flush, getFile, getFirst, getLast, insert, insert, insertOrReplace, insertOrReplace, numEntries, query, query, removeAll, setInsertValue, setInsertValue
-
Field Details
-
IDX_FILENAME
Der Dateiname, unter dem alle Indices dieser Art gespeichert werden
-
-
Constructor Details
-
ArchiveTimeIndexImpl
Erzeugt einen neuen monoton steigenden Index.Bei startmode==APPEND_REUSE_LAST wird der Ringpuffer mit den aktuellsten Daten aus einer vorhandenen Indexdatei gefüllt. Zusätzlich wird der letzte Eintrag in der Indexdatei zum currentEntry. Damit kann ein Container fortgesetzt und der reaktivierte Eintrag weiter aktualisiert werden.
Bei startmode==CREATE_NEW wird ein leerer Index erzeugt und die bisherige Indexdatei (sofern vorhanden) geloescht.
- Parameters:
bufferSize
- Anzahl der Einträge, die der die der Index im RAM halten sollfile
- Datei- Throws:
CorruptIndexException
- Lesefehler der Indexe (z. B. korrupt)
-
ArchiveTimeIndexImpl
public ArchiveTimeIndexImpl(int bufferSize, Path file, IndexContentDescriptor<IndexValues> contentDescriptor) throws CorruptIndexException Erzeugt einen neuen monoton steigenden Index.Bei startmode==APPEND_REUSE_LAST wird der Ringpuffer mit den aktuellsten Daten aus einer vorhandenen Indexdatei gefüllt. Zusätzlich wird der letzte Eintrag in der Indexdatei zum currentEntry. Damit kann ein Container fortgesetzt und der reaktivierte Eintrag weiter aktualisiert werden.
Bei startmode==CREATE_NEW wird ein leerer Index erzeugt und die bisherige Indexdatei (sofern vorhanden) geloescht.
- Parameters:
bufferSize
- Anzahl der Einträge, die der die der Index im RAM halten sollfile
- DateicontentDescriptor
- Beschreibung der Spalten (wegen Subklasse)- Throws:
CorruptIndexException
- Lesefehler der Indexe (z. B. korrupt)
-
-
Method Details
-
add
public void add(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.- Parameters:
dIMin
- 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- Throws:
IndexException
- Lesefehler der Indexe (z. B. korrupt)
-
checkAdd
protected void checkAdd(long dIMin, long dIMax, long aTMin, long aTMax, long dTMin, long dTMax, long cID) throws IndexException - Throws:
IndexException
-
getAbsoluteATMin
Liefert den kleinsten Archivzeit-Minwert, der jemals in diesem Index gespeichert wird.- Returns:
- Kleinster Archivzeitwert
- Throws:
IndexException
- Bei Zugriffsproblemen mit der IndexDatei
-
entrySize
public static int entrySize()Gibt die anzahl Bytes zurück, die ein Indexeintrag belegt.- Returns:
- Anzahl bytes
-