IndexService

<< Klicken Sie hier um das Inhaltsverzeichnis anzuzeigen >>

Navigation:  Detailbeschreibung >

IndexService

Der DABiS IndexService ist ein Dienst, welcher vom DABiS Server zur Verfügung gestellt wird. Er stellt Schnittstellen für DABiS Module zur Verfügung über welche Titel gesucht werden können. Module wie z.B. die Planning Base können diesen Dienst nutzen um die Suchpeformance wesentlich zu steigern. Insbesondere Textrecherchen in EventBase, NewsRoom und WebBase können bei grösseren Datenmengen lange andauern, wenn sie über die Datenbank abgesetzt werden. Das Problem ist, dass grosse Text- und Blobfelder der DABiS Datenbank nicht indexiert werden können, was sich schlecht auf die Suchperformance auswirkt. Der IndexService erstellt und wartet deshalb seinen eigenen Index. Dazu werden Metadaten zu sämtlichen Titeln indiziert und gepflegt. Bei der Nutzung des IndexServices können Anwendungen eine erhebliche Performancesteigerung bei Such- und Textrecherche Funktionen erzielen.

 

Abhängigkeiten

 

Für die Inbetriebnahme des IndexServices werden folgende DABiS Module benötigt:

 

Modul

Min. Version

Kommentar

DABiS Server

1.11.0

Der DABiS Server hostet den IndexService. Der IndexService wird erstmals in der Version 1.11.0 des DABiS Servers angeboten. (Corelibraries 1.17.0)

Administrator

1.0.0

Der Administrator wird benötigt für das Konfigurieren von Datenbank- und Index-Einstellungen.

Datenbank

UpdBC129

Das Datenbankscript UpdBC129 stellt eine Stored Procedure zur Verfügung, welche vom Updatemechanismus des IndexServices verwendet wird.

Planning Base

6.37.0

Die PlanningBase konsumiert den IndexService um eine schnelle Suche und Textrecherche anbieten zu können.

 

Die Dokumentation für die Konfiguration des IndexServices finden Sie hier.

Die Dokumentation für die Konfiguration der PlanningBase finden Sie hier.

 

Vollindizierung

 

Bei einer Vollindizierung werden sämtliche vorhandene Titel der zugehörigen Datenbank neu indiziert. Wenn noch kein Index besteht, wird der Index vollständig neu aufgebaut. Besteht bereits ein Index, werden alle Einträge des Indexes aktualisiert. Während einer Vollindizierung können gleichzeitig Anfragen an den Index bearbeitet werden, vorausgesetzt dass bereits ein Index vorhanden ist. Diese Anfragen sehen den alten Stand des Indexes. Erst wenn die Vollindizierung vollständig abgeschlossen ist und der Index neu geöffnet wurde, wird der aktuelle Stand für neue Suchanfragen sichtbar.

 

Während einer Vollindizierung erhöht sich der Arbeitsspeicherverbrauch nicht unwesentlich. Aber auch der Festplattenspeicherverbrauch steigt an. Während der Vollindizierung wird ungefähr dreimal so viel Festplattenspeicher verwendet wie die aktuelle grösse des Indexes. Nach der Vollindizierung ist die grösse des Indexes aber in der Regel kleiner als zuvor.

 

Eine Vollindizierung wird ausgeführt, wenn eine der folgenden Bedingungen eintrifft:

 

Der DABiS Server wird gestartet und im Verzeichnis IndexBaseDir ist kein Index vorhanden. Dies ist der Fall, wenn für die entsprechende Datenbank noch nie ein Index erstellt wurde, oder wenn der Index manuell gelöscht wurde.

Die Zeit für eine geplante Vollindizierung (RebuildSchedule) wurde erreicht oder überschritten.

Die Vollindizierung wurde manuell angefordert. (Manuelles Starten einer Vollindizierung).

Es wurde eine Änderung an der aktuellen Fachstruktur festgestellt. Zum Beispiel nach der Verschiebung eines Faches.

 

Der IndexService greift nur schreibend auf einen Index zu, wenn dies entsprechend konfiguriert wurde (siehe ManageIndex).

 

Geplante Vollindizierung

 

Es ist Sinnvoll in gewissen Abständen eine geplante Vollindizierung durchzuführen. Durch eine Vollindizierung wird nicht nur sichergestellt, dass der Index (wieder) aktuell ist, der Index wird auch einem Optimierungsprozess unterzogen. Dabei werden bestehende Segmente zusammengemergt um die Suchperformance zu optimieren. Es wird empfohlen mindestens einmal im Monat eine Vollindizierung durchzuführen. Erstellen Sie dafür einen Eintrag im RebuildSchedule.

 

Der Index sollte durch den Aktualisierungmechanismus immer auf dem neusten Stand sein. Wenn der IndexService jedoch keine Benachrichtigung erhält (z.B. durch eine ausfallende Semaphore), dann wird der Index mit einer Volldinizierung wieder auf den neusten Stand gebracht.

 

Index Update

 

Der IndexService wird über Änderungen an Titeln (und Fachpfaden) benachrichtigt und aktualisiert laufend die betroffenen Titel im Index. Nach der Aktualisierung des Indexes wird der Index neu geöffnet. Durch das erneute Öffnen des Indexes wird sichergestellt, dass neue Suchanfragen die aktuellsten Datensätze aus dem Index lesen (Öffnen des Indexes). In welchem Interval der IndexService Änderungen in den Index übernimmt, kann mit MinIndexReopenIntervalSec eingestellt werden.

 

Wenn eine Vollindizierung am laufen ist, werden anstehende Updates parallel dazu abgearbeitet. Damit wird sichergestellt, dass diese Änderungen so schnell wie möglich für neue Suchanfragen sichtbar werden, ohne auf die Beendigung der Vollindizierung warten zu müssen. Beim Abschliessen eines Updates werden auch die Änderungen der Vollindizierungen für neue Suchanfragen sichtbar, welche bis dahin vorgenommen wurden. Ansonsten gilt grundsätzlich, dass Änderungen durch die Volldindizierung erst sichtbar für Suchanfragen werden, wenn die Vollindizierung vollständig abgeschlossen ist.

 

Wird eine Änderung an einem Fachpfad detektiert, wird automatisch eine Vollindizierung ausgelöst. Dies ist zum Beispiel der Fall, wenn ein Fach verschoben wurde. Änderungen am Fachnamen lösen keine Vollindizierung aus.

 

Damit der IndexService mitkriegt, dass in der PB ein Titel verschoben oder gelöscht wurde, muss die PB Einstellung WriteTitleSemaphore auf 1 (Schreibt für jede Titeländerung eine Titel Semaphore) oder auf 2 (Schreibt nur beim Verschieben eines Titels eine Titel Semaphore) gesetzt werden (siehe PlaningBase Einstellungen).

 

Der IndexService greift nur schreibend auf einen Index zu, wenn dies entsprechend konfiguriert wurde (siehe ManageIndex).

 

Benachrichtigung über Semaphoren

 

Damit die Benachrichtigung von Titel- und Fachaktualisierungen funktioniert muss der Semaphorepfad in den Settings je Datenbank (Global) konfiguriert werden. Diese Einstellung kann z.B. mit dem DABiS Administrator vorgenommen werden. Zusätzlich muss für jede betroffene Anwendung, welche entsprechende Semaphoren schreibt, derselbe Semaphorepfad konfiguriert werden.

 

Öffnen / Erneutes Öffnen des Indexes

 

Um lesend oder schreibend auf den Index zugreifen zu können, muss der IndexService den Index öffnen. Diese Aktion wird als Öffnen des Indexes bezeichnet. Das Öffnen des Indexes kann unter Umständen eine kostspielige Angelegenheit sein. Die Dauer für das Öffnen / erneute Öffnen eines Indexes ist von verschiedenen Faktoren abhängig. Die wichtigsten Faktoren dafür sind folgende:

 

Menge der Datensätze (Documents) im Index

Zustand (Segmentierung) des Indexes. Ist abhängig von Such- und Aktualisierungsverhalten, sowie von der letzten durchgeführten Optimierung. Eine Optimierung wird vom IndexService bei jeder Vollindizierung durchgeführt.

Komplexität des Indexes. Beim Öffnen des Indexes wird eine Warmupphase durchlaufen. Die Dauer dieser Phase variiert mit der Grösse und Komplexität des Indexes.

Aktuelle Last des DABiS Servers und des Rechners auf dem er betrieben wird

 

 

Betrieb mehrerer DABiS Server

 

Ein DABiS Server kann mehrere Datenbanken hosten. Umgekehrt ist es aber auch möglich, dass mehrere DABiS Server auf dieselbe Datenbank zugreifen. In der Abbildung unten greifen drei DABiS Server auf dieselbe Datenbank zu. Das stellt grundsätzlich kein Problem dar. Es darf jedoch nur ein DABiS Server schreibend auf den Index zugreifen. Ein DABiS Server ist also verantwortlich für den Index, während weitere DABiS Server lesend darauf zugreifen dürfen. Ob ein DABiS Server für einen Index verantwortlich ist, wird mit der Option ManageIndex in der App.config angegeben.

 

 

Multiple DABiS Server

 

 

Beachten Sie, dass der Festplattenspeicher Verbrauch im Verzeichnis IndexBaseDir ansteigt, wenn mehrere DABiS Server auf den Index zugreifen.