Firebird Tutorials

Volltextindex mit Bordmitteln

Aufbau des VolltextindexIn 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.

Soundex mit Bordmitteln

Schema des SoundexAuch 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.

Levenshtein-Distanz mit Bordmitteln

Schema der Levenshtein-Distanz BerechnungEine 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.

Datensatzzähler

Schema des DatensatzzählersDas 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.