Firebird Tutorials
![Aufbau des Volltextindex Aufbau des Volltextindex](words.gif)
In der Open Source Datenbank
Firebird gibt es leider keinen eingebauten Volltextindex. Aus diesem Grund wird hier beschrieben, wie ein
Volltextindex mittels PSQL nachgerüstet werden kann.
Vorteile
- Keine externen Module notwendig - sofort auf allen unterstützten Plattformen lauffähig.
- Indiziert CHAR-, VARCHAR-Felder und Text-BLOB's inklusive UNICODE-Zeichensätze.
- Pro Tabelle können mehrere Textspalten indiziert werden.
- Schnelle Suche im Volltextindex.
- Einfache Implementierung in vorhandene Datenbanken.
- Tabellenübergreifende Suche möglich.
Nachteile
- Langsame Indizierung - 10kB Text brauchen bei 1,6 GHz ca. 5s.
- Relativ großer Speicherverbrauch bei Indizierung von Wortteilen, da jeder indizierte Wortteil einen Datensatz in der Linktabelle erzeugt.
Die hier vorgestellte Variante basiert auf
Firebird 2.1.1.
![Schema des Soundex Schema des Soundex](soundex.gif)
Auch eine
Soundex Funktion zur Ähnlichkeitssuche wird nicht mitgeliefert. Da der Soundex Algorithmus nicht sehr kompliziert ist, läßt er sich ebenfalls sehr gut
in PSQL implementieren.Vorteile
- Keine externen Module notwendig - sofort auf allen unterstützten Plattformen lauffähig.
- Bei Bedarf können weitere Zeichen neben den Buchstaben verwendet werden.
- Die Gewichtung der einzelnen Zeichen ist frei von 1 bis 9 definierbar.
- Läßt sich für verschiedene Sprachen konfigurieren.
- Verschiedene Sprachen können parallel verwendet werden.
- Einfache Implementierung in vorhandene Datenbanken.
Nachteile
- Der Soundex Algorithmus findet auch Ähnlichkeiten, wo eigentlich keine sind. (Siehe Beispiel im Wikipedia-Artikel.)
Die hier vorgestellte Variante basiert auf
Firebird 2.5 Beta 1.
![Schema der Levenshtein-Distanz Berechnung Schema der Levenshtein-Distanz Berechnung](levenshtein.gif)
Eine weitere Möglichkeit der Ähnlichkeitssuche besteht in der Berechnung der
Levenshtein-Distanz. Auch diese Berechnung ist vollständig
in PSQL implementiert und kann mittels eines
Code Generators an eigene Bedürfnisse angepasst werden.
Vorteile
- Keine externen Module notwendig - sofort auf allen unterstützten Plattformen lauffähig.
- Einfache Implementierung in vorhandene Datenbanken.
Nachteile
- Relativ langsame Berechnung bei längeren Worten, da die Anzahl der Berechnungsschritte quadratisch zur Länge der Wörter wächst.
Die hier vorgestellte Variante basiert auf
Firebird 2.5 RC 1.
![Schema des Datensatzzählers Schema des Datensatzzählers](row_counter.png)
Das Zählen von Datensätzen mittels COUNT(*) über eine ganze Tabelle kann in Firebird und Interbase, je nach Größe der Tabelle, einige Zeit in Anspruch nehmen. Das läßt sich umgehen, in dem die Datenbank die Einfüge- und Löschoperationen mitzählen läßt.
Vorteile
- Die Anzahl der Datensätze einer Tabelle läßt sich mit einem einfachen Zugriff auf einen Generator (bzw. Sequenz) ermitteln.
- Es lassen sich auch Datensätze mit bestimmten Eigenschaften zählen. Z.B. alle Datensätze, in denen das feld "Active" gesetzt ist.
Nachteile
- Bei jeder Datensatzoperation, die einen Zählvorgang auslöst, werden zusätzliche Trigger aufgerufen, was zusätzliche Zeit in Anspruch nimmt.
Die hier vorgestellte Variante basiert auf
Firebird 2.5 RC 1.