Thema: Delphi Ganzes Wort suchen

Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
671 Beiträge
 
FreePascal / Lazarus
 
#19

Re: Ganzes Wort suchen

  Alt 21. Sep 2009, 15:39
genau, und damit das Datenmaterial in der Menge beherrschbar bleibt auch komplett ohne XML, da wäre für das gleich Material statt 60GB mindestens 500GB in der Datenbank ohne für mich erkennbare Vorteile, aber mit deutlich langsamerer Reaktionszeit, weil der Zugriff über 500GB physikalisch nun mal langsamer ist als über 60GB.

Noch ein Tip: mach für jede Variante der Verdichtung eine eigene Tabelle und die Echtdaten in eine andere Tabelle. Wenn du zum Beispiel über ein indiziertes Feld der Haupttabelle bereits einschränken kannst, dann ist es oft performanter, die jeweiligen zusatztabellen erst dann für die noch überig gebliebenen Datensätzen einzubinden, wenn man die auch braucht. Das geht über Stored procs relativ simpel oder super dynamisch mit gleicher Syntax als Block.

sinngemäß

SQL-Code:
for select id,bla from hauptdatenmenge where .... into :idmain
do
begin
  select count(*) from verdichtung2 where id=:idmain and txt containing '#ABC#and txt containing '#123#into :cnt; --sind beide worte enthalten?
  if cnt=1 then select count(*) from verdichtung1 where id=:idmain and txt not containing '#ABC#123#into :cnt; --dürfen aber nicht hintereinander stehen
  if cnt=1 then suspend;
end
der ganze innere teil kann dann dynamisch zusammengebaut werden für alle Kriterien, die dein User haben will. Wir haben das mal mit google syntax gebaut, ist ziemlich simpel und dem User angenehm einfach zu erklären. Lässt sich später auch gut skalieren, in dem man die Daten zum Beispiel auf mehrere Server oder Serverinstanzen verteilt und man die Abfragen einfach in eine Tabelle stellt und serverbasierende Dienste die Antworten dazu in die Datenbank schreiben. Ist bei der Datenmenge von Google sicherlich nicht ganz so schnell wie die, hat aber den vorteil, das auch die aktuellsten Einträge immer im Index sind, das kann google nämlich nicht (wir haben sowas auch schon speicherbasierend aufgebaut, aber da braucht man schon einen Server mit diversen Gigabyte RAM und diversen CPU Kernen, damit das deutlich schneller ist, aber machbar ist alles, und sogar mit Delphi Win32, Bei erreichen von 2GB splittet man einfach über mehrere Serviceprozesse).


[edit=mkinzler]SQL-Tag eingefügt Mfg, mkinzler[/edit]
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat