Interface IndexImplementation


public interface IndexImplementation
Ein SpaltenIndex innerhalb eines AbstractIndex, hiermit kann über eine Spalte der kleinste oder größte Wert bestimmt werden, wenn der Index über diese Spalte sortiert abgespeichert ist.
  • Method Details

    • query

      @Nullable LongRange query​(LongRange inputRange) throws java.io.IOException
      Fragt die Indizes (Zeilennummern) eines Wertebereichs ab. Falls die Spalte, die dieser Index implementiert bspw. Datenzeitwerte enthält, wird query(new LongRange(1000, 2000)) den Zeilenbereich (bspw 12...45) zurückliefern, in denen die Werte in diesem Bereich stehen. In dem Fall könnte z. B. Zeile 12 den Wert 999 enthalten (wenn Zeile 13 den Wert 1002 enthält) und Zeile 45 den Wert 1985 (wenn Zeile 46 den Wert 2002 enthält). Das Verhalten entspricht hierbei Archivanfragen, d. h. der erste Datensatz vor Intervallanfang wird ebenfalls mit zurückgegeben wenn auf dem Intervallanfang kein Datensatz liegt.
      Parameters:
      inputRange - Wertebereich
      Returns:
      Zeilenbereich oder null
      Throws:
      java.io.IOException - IO-Fehler beim Lesen des Index
    • findEntryIndexOrPreviousLowest

      long findEntryIndexOrPreviousLowest​(long searchValue, byte[] tmp) throws java.io.IOException
      Findet den Element-Index des Eintrags zu einem Wert in diesem Index. Das Verhalten der Methode ermittelt die untere Grenze für den initialen Datensatz einer Archivanfrage.
      Parameters:
      searchValue - Zu suchender Wert
      tmp - Byte-Array zum ablegen von temporären Daten. (Mindestgröße: eine Index-Zeile)
      Returns:
      Der Index (Zeilennummer) an dem dieser Wert vorkommt.
      • Falls der Wert mehrmals vorkommt (bei nicht streng monoton ansteigenden Werten) wird die niedrigste passende Zeilennummer zurückgegeben.
      • Kommt der Wert nicht direkt vor, wird die Zeilennummer vor dem gesuchten Wert zurückgegeben, d.h. der Wert vor dem Intervallanfang. (-1 falls die erste Zeile mit dem Index 0 bereits zu groß ist)
      Throws:
      java.io.IOException
    • findEntryIndexOrPreviousHighest

      long findEntryIndexOrPreviousHighest​(long searchValue, byte[] tmp) throws java.io.IOException
      Findet den Element-Index des Eintrags zu einem Wert in diesem Index. Das Verhalten der Methode ermittelt die obere Grenze einer Archivanfrage.
      Parameters:
      searchValue - Zu suchender Wert
      tmp - Byte-Array zum ablegen von temporären Daten. (Mindestgröße: eine Index-Zeile)
      Returns:
      Der Index (Zeilennummer) an dem dieser Wert vorkommt.
      • Falls der Wert mehrmals vorkommt (bei nicht streng monoton ansteigenden Werten) wird die höchste passende Zeilennummer zurückgegeben.
      • Kommt der Wert nicht direkt vor, wird die Zeilennummer vor dem gesuchten Wert zurückgegeben, d.h. der Wert vor dem Intervallende. (-1 falls die erste Zeile mit dem Index 0 bereits zu groß ist)
      Throws:
      java.io.IOException
    • findEntryIndex

      long findEntryIndex​(long searchValue, byte[] tmp) throws java.io.IOException
      Findet den Element-Index des Eintrags zu einem Wert in diesem Index
      Parameters:
      searchValue - Zu suchender Wert
      tmp - Byte-Array zum ablegen von temporären Daten. (Mindestgröße: eine Index-Zeile)
      Returns:
      Der Index (Zeilennummer) an dem dieser Wert vorkommt.
      • Falls der Wert mehrmals vorkommt (bei nicht streng monoton ansteigenden Werten) wird eine beliebige passende Zeilennummer zurückgegeben.
      • Kommt der Wert nicht direkt vor, wird analog zu Arrays.binarySearch(int[], int) die Zahl (-(<i>Einfügeposition</i>) - 1) zurückgegeben, wobei Einfügeposition die ist, an der der Eintrag "fehlt" und eingefügt werden sollte, falls das beabsichtigt ist.
      Throws:
      java.io.IOException
    • getColumn

      Die von diesem Objekt indexierte Spalte
      Returns:
      Spalte