AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird Trigger asynchron ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Trigger asynchron ausführen

Ein Thema von Morphie · begonnen am 9. Jan 2013 · letzter Beitrag vom 10. Jan 2013
Antwort Antwort
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

Firebird Trigger asynchron ausführen

  Alt 9. Jan 2013, 16:22
Datenbank: Firebird • Version: 2.5 • Zugriff über: egal
Hi,

gibt es in Firebird eigentlich eine Möglichkeit, einen Trigger, bzw. eine Procedure asynchron auszuführen?

Ich habe mir eine Volltextsuche mit diversen Procedures und Triggern programmiert.
Beim Insert oder Update wird die Volltextsuche für einen bestimmten Datensatz erneuert, beim Delete wird die Volltextsuche für den bestimmten Datensatz gelöscht. Funktioniert soweit super.

Jetzt ist es aber so, dass die Indizierung erst fertiggestellt werden muss, bevor ein Insert / Update / Delete fertig ausgeführt ist. Die Zugriffskomponenten warten da natürlich drauf und verlangsamen so das Programm.

Im Normalfall dauert die Indizierung zwar nur so kurz, dass ich den Performanceverlust nicht spüre, aber bei Batchimports oder ähnliches, merkt man es dann schon.

Toll wäre also eine Möglichkeit, um dem Trigger (der die Procedure aufruft) oder der Procedure selbst zu sagen, dass die Indizierung ruhig in einen 2. Thread ausgelagert werden kann, und die Indizierung nicht in "Echtzeit" ausgeführt werden muss...

Gibt es so etwas?
Auch würde mich interessieren, ob es sonst Datenbanken gibt, die so etwas können...
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#2

AW: Firebird Trigger asynchron ausführen

  Alt 9. Jan 2013, 16:30
Das geht nicht. Was du machen könntest ist den kompletten Trigger Body in ein IF zu packen und dort z.B. auf den CURRENT_USER abfragen. Ein Batch-Import könnte sich dann mit einem Benutzer verbinden, wo er dann in den IF Zweig nicht reinkommt und im Zuge des Batch-Import am Ende einmal die SP aufgerufen wird.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#3

AW: Firebird Trigger asynchron ausführen

  Alt 9. Jan 2013, 21:32
Aktuelle VT-Techniken aktualisieren die VT-Indexe im Hintergrund und periodisch. Nach meinem bescheidenen Kenntnisstand gibt es keine real-time VT-engines, eben genau wegen dem beschriebenen Problem.

Was Du machen könntest, ist in Triggern die Änderungen zu protokollieren und dann periodisch einen VT-Update mit den protokollierten Änderungen durchzuführen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Firebird Trigger asynchron ausführen

  Alt 9. Jan 2013, 21:43
Vielleicht würde es auch reichen, die Trigger für den Batchvorgang zu deaktivieren.
Markus Kinzler
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#5

AW: Firebird Trigger asynchron ausführen

  Alt 10. Jan 2013, 09:16
Danke erst mal für eure Antworten

Also die Trigger zu deaktivieren / zu umgehen macht für mich wenig Sinn, da die Indizierungsdauer dann einfach nur nach hinten verschoben wird. Macht unterm Strich also keinen Unterschied...

Dann werde ich wohl mit der Performancenachteil leben müssen... Hat dann auch den Vorteil, dass ich wirklich immer eine aktuellen Volltextindex habe.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Firebird Trigger asynchron ausführen

  Alt 10. Jan 2013, 11:04
Ich habe mir eine Volltextsuche mit diversen Procedures und Triggern programmiert.

Auch würde mich interessieren, ob es sonst Datenbanken gibt, die so etwas können...
Ja, es gibt eine Firebird Version mit integrierter Volltextsuche. Diese wird wenn ich mich richtig erinnere mit Apache Lucene realisiert, eine der bekanntesten (wenn nicht die bekannteste überhaupt) Volltext-Engines die es gibt (Open Source). Linnk poste ich eventuell später.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz