Schnittstelle IndexStorage

Alle bekannten Implementierungsklassen:
BufferedIndexStorage, FileIndexStorage, HybridStorage, MemoryIndexStorage

public interface IndexStorage
Interface für die Low-Level-Speicherungsschicht für Indexe. Ein Index ist eine (sortierte) Liste von Index-Einträgen einer festen Byte-Größe.

Einen Index kann man sich vorstellen wie eine Excel-Tabelle, wobei Implementierungen dieses Interfaces keine Informationen über die einzelnen Spalten benötigen oder wie die Bytes einer Zeile auf die einzelnen Spalten abgebildet werden.

Klassen, die dieses Interface implementieren, speichern eine Menge von diesen Byte-Einträgen ab und ermöglichen einen wahlfreien Zugriff sowie das Hinzufügen von Einträgen.

  • Methodenübersicht

    Modifizierer und Typ
    Methode
    Beschreibung
    default void
    addLast(byte[] data)
    Fügt einen Eintrag ein.
    default void
    addLast(byte[] data, int numEntries)
    Fügt Einträge am Ende ein.
    void
    deleteEntryAtIndex(long entryIndex)
    Löscht den Eintrag am Index entryIndex
    int
    Gibt die Byte-Größe eines Eintrags zurück
    default byte[]
    Gibt alle Einträge als ein großes byte-Array zurück.
    default void
    getEntries(long entryIndex, int numEntries, byte[] result)
    Gibt Einträge aus dem Index zurück
    void
    getEntries(long entryIndex, int numEntries, byte[] result, int destPos)
    Gibt Einträge aus dem Index zurück
    default void
    getFirst(byte[] result)
    Gibt den ersten (obersten) Eintrag des Index zurück
    default void
    getLast(byte[] result)
    Gibt den letzten (untersten) Eintrag des Index zurück
    default void
    insertEntries(long entryIndex, int numEntries, byte[] data)
    Fügt Einträge im Index ein, anders als bei setEntries(long, int, byte[]) werden die dort bestehenden Daten aber nicht überschrieben, sondern nach hinten geschoben.
    void
    insertEntries(long entryIndex, int numEntries, byte[] data, int fromPos)
    Fügt Einträge im Index ein, anders als bei setEntries(long, int, byte[]) werden die dort bestehenden Daten aber nicht überschrieben, sondern nach hinten geschoben.
    long
    Gibt die Anzahl Einträge zurück
    default void
    setEntries(long entryIndex, int numEntries, byte[] data)
    Setzt Einträge im Index
    void
    setEntries(long entryIndex, int numEntries, byte[] data, int fromPos)
    Setzt Einträge im Index
  • Methodendetails

    • getFirst

      default void getFirst(byte[] result) throws IOException
      Gibt den ersten (obersten) Eintrag des Index zurück
      Parameter:
      result - Byte-Array in das das Ergebnis kopiert wird, muss mindestens entryByteSize() Bytes groß sein.
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • getLast

      default void getLast(byte[] result) throws IOException
      Gibt den letzten (untersten) Eintrag des Index zurück
      Parameter:
      result - Byte-Array in das das Ergebnis kopiert wird, muss mindestens entryByteSize() Bytes groß sein.
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • getEntries

      void getEntries(long entryIndex, int numEntries, byte[] result, int destPos) throws IOException
      Gibt Einträge aus dem Index zurück
      Parameter:
      entryIndex - Nullbasierte Position des ersten Eintrags, der angefragt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die angefragt werden sollen
      result - Byte-Array, in das das Ergebnis kopiert werden soll, muss mindestens destPos + (numEntries * entryByteSize()) Bytes groß sein.
      destPos - Ziel-Position im Byte-Array. Standardmäßig 0.
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • getEntries

      default void getEntries(long entryIndex, int numEntries, byte[] result) throws IOException
      Gibt Einträge aus dem Index zurück
      Parameter:
      entryIndex - Nullbasierte Position des ersten Eintrags, der angefragt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die angefragt werden sollen
      result - Byte-Array, in das das Ergebnis kopiert werden soll, muss mindestens destPos + (numEntries * entryByteSize()) Bytes groß sein.
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • setEntries

      void setEntries(long entryIndex, int numEntries, byte[] data, int fromPos) throws IOException
      Setzt Einträge im Index
      Parameter:
      entryIndex - Nullbasierte Position des ersten Eintrags, der gesetzt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die überschrieben werden sollen
      data - Byte-Array, aus dem die Daten kopiert werden sollen, muss mindestens fromPos + (numEntries * entryByteSize()) Bytes groß sein.
      fromPos - Von-Position im Byte-Array. Standardmäßig 0.
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • setEntries

      default void setEntries(long entryIndex, int numEntries, byte[] data) throws IOException
      Setzt Einträge im Index
      Parameter:
      entryIndex - Nullbasierte Position des ersten Eintrags, der gesetzt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die überschrieben werden sollen
      data - Byte-Array, aus dem die Daten kopiert werden sollen, muss mindestens fromPos + (numEntries * entryByteSize()) Bytes groß sein.
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • insertEntries

      default void insertEntries(long entryIndex, int numEntries, byte[] data) throws IOException
      Fügt Einträge im Index ein, anders als bei setEntries(long, int, byte[]) werden die dort bestehenden Daten aber nicht überschrieben, sondern nach hinten geschoben.
      Parameter:
      entryIndex - Nullbasierte Position an der Eingefügt werden soll (neuer Index des ersten eingefügten Eintrags). Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die eingefügt werden sollen
      data - Byte-Array, aus dem die Daten kopiert werden sollen, muss mindestens (numEntries * entryByteSize()) Bytes groß sein.
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • insertEntries

      void insertEntries(long entryIndex, int numEntries, byte[] data, int fromPos) throws IOException
      Fügt Einträge im Index ein, anders als bei setEntries(long, int, byte[]) werden die dort bestehenden Daten aber nicht überschrieben, sondern nach hinten geschoben.
      Parameter:
      entryIndex - Nullbasierte Position an der Eingefügt werden soll (neuer Index des ersten eingefügten Eintrags). Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die eingefügt werden sollen
      data - Byte-Array, aus dem die Daten kopiert werden sollen, muss mindestens (numEntries * entryByteSize()) Bytes groß sein.
      fromPos - Von-Position im Byte-Array. Standardmäßig 0.
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • numEntries

      long numEntries() throws IOException
      Gibt die Anzahl Einträge zurück
      Gibt zurück:
      die Anzahl Einträge
      Löst aus:
      IOException
    • entryByteSize

      int entryByteSize()
      Gibt die Byte-Größe eines Eintrags zurück
      Gibt zurück:
      die Byte-Größe eines Eintrags
    • addLast

      default void addLast(byte[] data, int numEntries) throws IOException
      Fügt Einträge am Ende ein.
      Parameter:
      data - Byte-Array, aus dem die Daten kopiert werden sollen, muss mindestens (numEntries * entryByteSize()) Bytes groß sein.
      numEntries - Anzahl Einträge, die eingefügt werden sollen
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • addLast

      default void addLast(byte[] data) throws IOException
      Fügt einen Eintrag ein.
      Parameter:
      data - Byte-Array, aus dem die Daten kopiert werden sollen, muss mindestens entryByteSize() Bytes groß sein. Weitere Bytes werden ignoriert.
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • getAll

      default byte[] getAll() throws IOException
      Gibt alle Einträge als ein großes byte-Array zurück. Diese Methode verbraucht möglicherweise viel Speicher und hat eine fragwürdige Performance, ist daher hauptsächlich für Unit-Tests gedacht.
      Gibt zurück:
      Alle gespeicherten Daten.
      Löst aus:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • deleteEntryAtIndex

      void deleteEntryAtIndex(long entryIndex) throws IOException
      Löscht den Eintrag am Index entryIndex
      Parameter:
      entryIndex - Index, der gelöscht werden soll
      Löst aus:
      IOException