Indexaktualisierung

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Indexaktualisierung

Beitrag von Manfred »

Wenn in eine DBF geschrieben wird, muß dann jeder Index geöffnet sein, auch wenn kein Indexfeld betroffen ist? Ich bin mir im Moment nicht so ganz sicher. Nur Änderung, kein Löschen oder Anfügen ist gemeint.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Indexaktualisierung

Beitrag von brandelh »

Wenn du sicher sein willst, dann JA, aber eigentlich sollte eine Änderung in einem normalen Feld eines bestehenden Satzes den Index nicht ändern.
Natürlich immer "ohne Garantie" :!:
8)
Gruß
Hubert
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Indexaktualisierung

Beitrag von georg »

Hallo, Manfred -


grundsätzlich stimme ich Hubert zu, aber: in einem halben Jahr kommt eine Änderung, bei der auch ein Index-Feld geändert wird, und wenn Du Dich dann nicht daran erinnerst, dass die Indexdateien nicht geöffnet sind, dann ist der Index kapott, wie man in Köln so schön sagt.

Daher würde ich Index-Dateien immer öffnen, wenn Änderungen an einer Datei anstehen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Indexaktualisierung

Beitrag von brandelh »

georg hat geschrieben:Daher würde ich Index-Dateien immer öffnen, wenn Änderungen an einer Datei anstehen.
:!: :!: :!:
zu deutsch, solche Fallen baut man (sich) nicht :D
Gruß
Hubert
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Indexaktualisierung

Beitrag von Rolf Ramacher »

ich öffne den Index IMMER Mit
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Indexaktualisierung

Beitrag von brandelh »

so ist es auch richtig und wenn man die Sortierung nicht brauchen kann: SET ORDER TO 0
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Indexaktualisierung

Beitrag von Tom »

Wenn in einer Tabelle Felder aktualisiert werden, die nicht in Indexdateien referenziert sind, ist es völlig sinnlos, die Indexdateien zu öffnen - es kostet lediglich Zeit und Netzwerktraffic. Es sei denn, man benötigt sie ohnehin. Oder die Tabelle wird gepackt. Oder es gibt konditionale Indexe (FOR !Deleted() o.ä.). Anders gesagt: Man sollte sich schon bei dem sicher sein, was man da tut.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Indexaktualisierung

Beitrag von Manfred »

Es war nur eine Frage. Das Problem ist folgendes: ich stehe mit anderen in einem größeren Projekt, in dem ich einen gewissen Teil programmiere. Leider hapert es ein wenig mit dem Informationsfluss und ich bekomme nur teilweise mit, was alles in Benutzung ist. Jetzt ist natürlich passiert, was passieren mußte: Ein Index ging kaputt. Den benutze ich aber überhaupt nicht,weil ich gar nichts davon wußte. Also war ich schonmal nicht der Übeltäter. Es kam jetzt die Frage auf, ob es ratsam ist alle Indexdateien zu öffnen, selbst wenn nur ein Feld geändert wird, auf dem kein Index liegt, was in diesem Fall geschieht. Da wußte ich auch keine Antwort drauf. Deshalb meine Frage hier. In meinen eigenen Projekten gibt es diese Problem nicht, weil es CDX Dateien sind und die mache ich jedesmal auf. Hier geht es um NTX Dateien
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Indexaktualisierung

Beitrag von Tom »

Das ist allerdings die fast schon klassische Ursache für Indexkorruptionen, wenn ein Index nicht geöffnet ist, obwohl ein in ihm referenziertes Feld aktualisiert wird. Oder ein Datensatz angehängt oder gelöscht wird.

Äh. Bei gemeinsamer Arbeit an Datenbankprojekten gehört es zu den Essentials, jederzeit alle Tabellen, Indexe usw. für alle Beteiligten zu dokumentieren.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Indexaktualisierung

Beitrag von brandelh »

Wie ich und TOM geschrieben haben, eigentlich sollte es nicht nötig sein, aber woher willst DU wissen, was ANDERE gerade machen :?:
Im gemischten Betrieb ist es soger extrem wichtig, dass alle Dateien und Indexdateien in der gleichen Reihenfolge geöffnet werden, nachdem festgestellt wurde, dass alle benötigten da sind.

Wenn eine fehlt oder über eine Steuerdatei der Neuaufbau angeordnet wurde, öffne ich die Hauptdatei exclusiv, wenn das misslingt, baut wohl gerade ein anderer auf. Das zeige ich an und quit.
Wenn OK bleibt diese offen und alle anderen werden exclusive in der gleichen Reihenfolge geöffnet um alle Indexe aufzubauen, erst danach wird alles geschlossen und normal weiter gemacht.

Wenn nun jemand die Datei öffnet ohne sich um Indexe zu kümmern, oder in einer anderen Reihenfolge arbeitet, kann es passieren dass sich mehrere gegenseitig blockieren ohne dass der Index tatsächlich aufgebaut wird.

In deinem Beispiel rate ich dazu:

1. die DBESYS.PRG zentral identisch zu pflegen (einer ist verantwortlich, die anderen nutzen diese).
2. Indexerstellung über eine Funktion, die genauso von einem erstellt wird und alle nutzen.
3. Dateiöffnung über eine Funktion, die zuerst prüft ob alle Indexe da sind, wenn nicht dann 2., ansonsten öffnen.
Wenn es viele Dateien sind, die nicht alle benötigt werden (z.B. Kundenverwaltung, Lieferantenverwaltung, Artikel etc.) kann ein Parameter die aktuelle Aufgabe übermitteln und die Funktion öffnet nur die nötigen Dateien.

OHNE Indexe würde ICH nur ein kleines Programm erlauben, das lediglich einige Felder anpasst und die Datei mindestens mit FLOCK() sperrt.

Aber das ist natürlich auch Ansichtssache ;-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Indexaktualisierung

Beitrag von Manfred »

@Tom,

verstehe ich Dich jetzt falsch, oder Du mich? Es wird ein Feld geändert, das NICHT indiziert wurde.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Indexaktualisierung

Beitrag von Tom »

@Manfred: Ich denke, ich habe Dich durchaus richtig verstanden. Das war nur eine Randbemerkung zu Deinen Ausführungen bezüglich des gemeinsamen Projekts.
Herzlich,
Tom
Antworten