Index Treiber

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

Moderator: Moderatoren

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

Index Treiber

Beitrag von Manfred »

Moin,

ich finde immer neue Fragen :-)

Auch etwas, was mir schon lange auf der Zunge liegt:

Wer von euch hat eigentlich welche Erfahrung, egal ob gut oder schlecht, mit welchem Indextreiber unter xbase++ gemacht? Gemeint sind hier die Treiber, die von Hause aus dabei sind, bis zur aktuellen Version 1.90 RC X

Welchen benutzt ihr und warum, benutzt ihr den, oder auch nicht.

Gemeint ist ohne ADS.
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
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
ich nutze nur DBFNTX - warum? Nun, das habe ich schon immer so gemacht :wink:
Unsere alte Clipper-Anwendung lief damit und darum jetzt auch unsere Xbase++-Anwendung. Indexdateien gibt es bei mir sowieso nie dauerhaft - ich indiziere, wenn ich eine bestimmte Reihenfolge brauche und danach lösche ich die Indexdatei wieder.
Viele Grüße,
Martin
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

Beitrag von Manfred »

Hallo Martin,

jetzt verwirrst Du mich ein wenig....

Habe ich Dich richtig verstanden, Du hast wenig dauerhafte Indexdateien?

Das verstehe ich nicht. Du mußt doch die Datenbanken evtl. verknüpfen. Was machst Du bei großen DB´s ? Jedesmal den Index neu aufbauen?
Das ist mir jetzt im Moment zu hoch.

NTX Dateien? Hm. Nun, es stimmt, die waren unter Clipper normal. Aber die sind doch recht groß? Sind CDX nicht auch schneller. Und durch die Kompression auch kleiner und sie verwalten mehrere Tags in einem.

Also da muß ich mich jetzt wirklich etwas dumm stellen, kannst Du mir Deinen Weg etwas genauer erklären? Das wäre nett.
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
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
Manfred hat geschrieben:Hallo Martin,
jetzt verwirrst Du mich ein wenig....
Sorry :)
Manfred hat geschrieben:Habe ich Dich richtig verstanden, Du hast wenig dauerhafte Indexdateien?
Genau! Wenn ich mal eine Indexdatei brauche, dann baue ich sie mir neu. Dadurch habe ich keine Probleme mit korrupten Indexdateien.
Manfred hat geschrieben:Das verstehe ich nicht. Du mußt doch die Datenbanken evtl. verknüpfen.
Nun, ich arbeite nicht mit DbSetRelation(). Und da, wo ich Informationen aus einer anderen Datenbank brauche, öffne ich sie mir vorab und indiziere sie ggf., um dann mit SEEK einfach zu suchen.
In einem anderen Fall z.B. habe ich ein Hauptarchiv aller bisher gemeldeten Hunde - dieses sortiere ich mir wann immer ein Katalog komplett sortiert werden soll (nur in diesem Fall werden die Daten im Hauptarchiv nämlich erneuert!) und dann kann ich bei der Eingabe eines Hundes in der sortierten Datei mit binärem Suchen sehr schnell die Daten finden.
In anderen Fällen (bei kleineren Datenbanken) bin ich mittlerweile dazu übergegangen, die nötigen Felder in ein Array zu lesen und dieses zu sortieren. Daten werden dann nur noch im Array gesucht - geht viel schneller, als mit Indexdateien zu hantieren.
Manfred hat geschrieben:Was machst Du bei großen DB´s ? Jedesmal den Index neu aufbauen?
Im Prinzip ja! Ich habe (abgesehen von dem o.g. Hauptarchiv, das ja nicht indiziert ist) nur eine größere Datei und die enthält Nationalitäten, Postleitzahlen und Orte, so dass nach Eingabe eines Nationalitätenkürzels und der Postleitzahl der Ort automatisch vorbelegt wird und nicht neu erfasst werden muss.
Diese indiziere ich jedesmal neu, wenn man in die Eingabemaske der Hundedaten geht. Hört sich schlimm an, dauert aber effektiv im Moment gerade mal zwei bis drei Sekunden. Und das reicht gerade, um sich noch mal ordentlich zu recken und strecken, bevor man die nächsten Stunden mit der Dateineingabe beschäftigt ist.
Manfred hat geschrieben:NTX Dateien? Hm. Nun, es stimmt, die waren unter Clipper normal. Aber die sind doch recht groß? Sind CDX nicht auch schneller. Und durch die Kompression auch kleiner und sie verwalten mehrere Tags in einem.
Letzteres kann durchaus auch ein Nachteil sein!! Meine Applikation läuft ja nicht im Netz, sondern nur als Einzelplatzversion. Aber im Netz kann ein gemeinsamer Zugriff auf eine solche CDX-Datei eine ziemliche Bremse sein! Sobald nämlich einer einen entsprechenden Eintrag ändert, wird auch die Indexdatei für die anderen kurzfristig gesperrt. Das kann sich dann hochschaukeln...
Manfred hat geschrieben:Also da muß ich mich jetzt wirklich etwas dumm stellen, kannst Du mir Deinen Weg etwas genauer erklären? Das wäre nett.
Ich hoffe, ich war nett genug? :wink:

Viele Grüße,
Martin
thomas
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Fr, 23. Sep 2005 16:07
Wohnort: Bad Oldesloe
Kontaktdaten:

Beitrag von thomas »

Hi Martin.

Deine Umgehensweise mit NTX-Dateien hört sich sehr abenteuerlich an und man könnte meinen, das Dein vertrauen bzgl. des DBFNTX Treiber gleich Null ist. In diesem Fall würde ich mal über SQL nachdenken, denn dann sind keinerlei Indexe notwendig.
By the way: Mich würde gerne interessieren unter welchem Kontext Deine Anwender oder sogar Du selber Hundedaten sammelst oder speicherst.

Gurß Thomas
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

Beitrag von Manfred »

Hi Martin,

puh, jetzt bin ich ein wenig knatschig. (nicht über Dich :-) )

sind CDX im Netzwerk langsamer? Muß man sowas wissen, oder wo hätte ich das nachlesen können?

Meine Anwendungen laufen nur im Netzwerk. Unter Clipper waren sie alle mit NTX indiziert, aber die Menge an zusätzlichen Dateien hat dann irgendwie genervt. Probleme gab es damals auch immer wieder damit, wobei ich da aber immer noch genau prüfen muß, ob es nicht an der Art der Indizierung lag/liegt. Liegt deshalb, weil ich die Clipper Anwendung im Moment nur auf Xbase++ umkompliere mit den nötigen Anpassungen im Quelltext. Und das solange, bis ich sicher sein kann, dass sie läuft und dann wird nach und nach umgebaut. Jaja, ich weiß: evtl. kompliziert und mit großem Aufwand, aber das Grundmodell ist schon 15 Jahre alt und wurde immer wieder mit heißer Nadel gestrickt, weil ich es damals nicht besser wußte. Und jetzt muß ich sehen, was warum und wie eingebaut wurde. Tja, die Vergangenheit holt einen immer wieder ein :-)

Weiterhin habe ich einige DB´s, die jetzt schon, oder aber in absehbarer Zukunft 6 stellige Datensatzmengen beinhalten. Deshalb tue ich mich recht schwer damit keinen dauerhaften Index mitzuführen.

naja, bis hierhin erstmal ich muß nochmal in Ruhe über alles nachdenken
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
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Moin Manfred,

das Problem mit uralten Datenbanken und quick and dirty Ergänzungen kenne ich leider auch nur zu gut.

Ich habe das so gelöst, daß ich ab und an ein Update einbaue, das die komplette Datenbankstruktur reorganisiert. Dazu müssen natürlich 2 Bedingungen geschaffen werden: Niemand sonst darf gerade auf die Datenbanken zugreifen, und danach müssen alle unbedingt mit der neuen Version des Programms arbeiten. Was man z. B. über eine ini-dbf lösen kann, in der neben sonstigen Einstellungen die Mindest-revision des zugreifenden Programms abgelegt ist.

Nur so bekomme ich die ständigen Änderungen halbwegs vernünftig in den Griff.

Jan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Thomas,
thomas hat geschrieben:Deine Umgehensweise mit NTX-Dateien hört sich sehr abenteuerlich an und man könnte meinen, das Dein vertrauen bzgl. des DBFNTX Treiber gleich Null ist. In diesem Fall würde ich mal über SQL nachdenken, denn dann sind keinerlei Indexe notwendig.
Nun, gebranntes Kind - würde ich sagen :wink:
Wie ich schrieb - es dauert einmalig 3 Sekunden, um die Indexdatei neu aufzubauen. Und damit kann jeder leben.
SQL ist für mich kein Thema - zu teuer und bei Einplatzsystemen auf jeden Fall überdimensioniert!
thomas hat geschrieben:By the way: Mich würde gerne interessieren unter welchem Kontext Deine Anwender oder sogar Du selber Hundedaten sammelst oder speicherst.
Mit unserem Programm werden Rassehundezuchtausstellungen organisiert und durchgeführt. Die dabei anfallenden Daten werden akkumuliert, so dass ein Hund nicht komplett neu eingegeben werden muss, wenn er im nächsten Jahr wieder gemeldet wird.
Das Prinzip der Haupthundedatei wollen wir jetzt auch für die Internetmeldungen umsetzen - da werde ich jedoch leider nicht um das Thema Indexdatei drumrumkommen! Muß ich mir mal ein paar Gedanken machen, wie man sinnvollerweise aus beliebig vielen Threads zeitnah suchenderweise drauf zugreifen kann (nein, auch hier will ich nicht nur dafür auf SQL umsteigen).

Viele Grüße,
Martin
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

Beitrag von Manfred »

Hallo Jan,

ich glaube hier habe ich etwas unverständlich geschrieben. (muß ich mal irgendwie in Zukunft ändern...)

Was ich meinte war: In dem Programmcode selbst wurde herumgestrickt, was das Zeugs hielt. So gut wie nichts wurde damals dokumentiert von mir. Warum auch, ich hatte es ja damals selbst programmiert und wußte am nächsten Tag noch warum und wie. (vollkommener Blödsinn aus heutiger Sicht) Automatische Anpassung der Strukturen in den DB´s war mit eines der ersten Dinge, die ich eingebaut hatte.

Nur wenn ich heute sagen sollte, was und vor allen Dingen warum es wo eingebaut wurde... Das große Fragezeichen über dem Kopf. Also wird alles auf 32 Bit portiert, leserlicher gemacht und dann nach und nach dokumentiert, bzw. ausgeremt und dann abgewartet, was passiert. Blöde Situation, scheint aber zu klappen.

Ich hatte erst versucht alles sofort neu zu machen, habe es aber dann nach ca. 1/3 gestoppt, weil einfach zu viel berücksichtigt werden muß, was ich nicht mehr weiß.

Aber das mit ini Datei und der Revision,..... könntest Du mir da evtl. einen Tipp geben? Ich habe mir schon die ganze Zeit Gedanken gemacht evtl. mit ini Dateien zu arbeiten, aber irgendwie immer wieder vor mich hergeschoben.
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
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

Beitrag von Manfred »

Hallo Martin
Wie ich schrieb - es dauert einmalig 3 Sekunden, um die Indexdatei neu aufzubauen. Und damit kann jeder leben.
3 Sekunden?

Ich kriege immer größeren Frust. Um wieviel Datenätze geht es denn? Bei meinen Datenbanken dauert sowas immer mehrere Minuten. Bin ich jetzt wirklich zu blöde, oder was tut sich hier?
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
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Moin Manfred,
Manfred hat geschrieben:sind CDX im Netzwerk langsamer? Muß man sowas wissen, oder wo hätte ich das nachlesen können?
das Thema war (und ist immer mal wieder) Dauerbrenner in den Alaska-Newsgroups. Die Probleme gibt es natürlich nicht nur bei CDX, sondern bei allen Indexdateien im Netz.
Nur bei CDX ist es durch die mehreren Tags in der Datei wahrscheinlich, dass mehrere Leute zeitgleich drauf zugreifen wollen (bei NTX hat ja jeder Index seine eigene, so dass sich das verteilt).

Beispiel: 5 NTX-Dateien
  • 12 Leute nutzen Indexdatei 1
  • 3 Leute nutzen Indexdatei 2
  • 4 Leute nutzen Indexdatei 3
  • 8 Leute nutzen Indexdatei 4
  • 2 Leute nutzen Indexdatei 5
In der Indexdatei 5 muss durch eine Änderung der Index aktualisiert werden -> Sperren, Aktualisieren, Freigeben. Davon sind zwei Leute betroffen.

Beispiel: 1 CDX-Datei mit 5 Tags
  • 12 Leute nutzen Tag 1
  • 3 Leute nutzen Tag 2
  • 4 Leute nutzen Tag 3
  • 8 Leute nutzen Tag 4
  • 2 Leute nutzen Tag 5
In dem Tag 5 muss durch eine Änderung der Index aktualisiert werden -> Sperren, Aktualisieren, Freigeben. Davon sind alle 29 Leute betroffen.

Gerade bei CDX-Dateien sollte man einiges an Feintuning mit den DBE-Parametern betreiben.
Wie gesagt, ich nutze keine CDX-Dateien. Das oben geschriebene habe ich so aus den Newsgroups herausgelesen.

Viele Grüße,
Martin
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

Beitrag von Manfred »

Hi Martin,

das ist nachvollziehbar, aber das es einen gravierenden Effekt erzielt, würde ich jetzt nicht vermuten.

Wobei mir jetzt gerade einfällt: Ist da nicht was im 1.90 xx geändert worden in Sachen Locking? Ich habe noch nicht genau nachgelesen, bzw. die Werbung dafür.....
Zuletzt geändert von Manfred am Fr, 06. Jan 2006 9:08, insgesamt 1-mal geändert.
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
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
Manfred hat geschrieben:Hallo Martin3 Sekunden?
Ich kriege immer größeren Frust. Um wieviel Datenätze geht es denn? Bei meinen Datenbanken dauert sowas immer mehrere Minuten. Bin ich jetzt wirklich zu blöde, oder was tut sich hier?
bei mir sind es bei der betreffenden Datei nur 11.522 Datensätze. Alle drei Felder vom Typ Character der Länge 4, 7 und 30.
Der Index umfasst alle drei Felder.

Viele Grüße,
Martin
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
Manfred hat geschrieben:Hi Martin,

das ist nachvollziehbar, aber das es einen gravierenden Effekt erzielt, würde ich jetzt nicht vermuten.
Nunja, das hängt nicht zuletzt davon ab, wieviel Leute zeitgleich mit dem Index arbeiten und navigieren wollen.

Viele Grüße,
Martin
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

Beitrag von Manfred »

Martin

aber trotzdem,

ich habe hier gerade einen Test laufen. Bei 23.000 Sätzen, braucht der auch ca. 20 Sekunden. Ok, ich habe eine Funktion eingebaut, die eine Anzeige des akutellen Records zeigt, aber ich meine ich hätte es mal ohne getestet und es war nicht wesentlich schneller, wenn überhaupt.
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
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
wie lang ist denn Dein Indexausdruck? Meiner hat eine Länge von 41 Zeichen.
Was für eine Hardware hast Du denn? Ich habe hier eine Pentium 4 CPU mit 2,8 GHz und 512 MB RAM.

Viele Grüße,
Martin
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

Beitrag von Manfred »

Hi Martin,

ich werde bekloppt.

Ich habe gerade einen Index im NTX Format über den DBEDITOR (habe ich mir aus dem Internet geladen) aufgebaut. Der hat einen Statusbar für den Ablauf und regelt das bei einer Recordmenge von ca 600.000 Sätzen in ca. 10 Sekunden, oder knapp mehr.

Irgendwo, oder wie habe ich in meiner Anwendung einen verdammt großen Denkfehler. Das dauert bei mir viel länger.
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
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
den DbEditor nutze ich auch gern.
Und bei meiner Indexerstellung ist so ein Statusbar, der immer aktualisiert wird, auch mit bei.
Viele Grüße,
Martin
thomas
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Fr, 23. Sep 2005 16:07
Wohnort: Bad Oldesloe
Kontaktdaten:

Beitrag von thomas »

Hi Manfred.

Poste doch mal deine Funktion, die den Index erstellt.
Wird z.B. ein Macro für die Aufbereitung des Index-Strings verwendet,
dann dauert dieses natürlich etwas länger.

Gruß Thomas
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:

Beitrag von Tom »

Hallo, Manfred.
Ist da nicht was im 1.90 xx geändert worden in Sachen Locking?
Für DBFNTX wird das sogenannte Extended Locking eingeführt. Bei DBFNTX wird eine Indexdatei für jeden Aktualisierungsvorgang, aber auch (!) für Lesevorgänge komplett gesperrt. Das zwar nur für extrem kurze Zeit, aber es war so. Mit Extended Locking, das folgendermaßen zu aktivieren ist (Achtung: Funktioniert m.E. nicht mit Novell!):

Code: Alles auswählen

DbeInfo(COMPONENT_ORDER,DBE_LOCKMODE,LOCKING_EXTENDED)
wird ein datensatzorientiertes Locking aktiviert. Es gibt übrigens auch eine NTXDBE.DLL für die 1.82, die das bereits zur Verfügung stellt.

Zur Diskussion um Martins Datenhaltung: Man darf nicht vergessen, daß seine Applikation hauptsächlich per Web genutzt wird (Erfassung) und nur von Zeit zu Zeit lokal. Meine Anwendung hat hunderte von Indexdateien, die ich natürlich nicht ständig neu erzeugen kann, weil das den Betrieb massivst behindern würde (zumal die DBFs dafür exclusive geöffnet sein müssen).
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

Beitrag von Manfred »

Hi Thomas

dbCreateIndex("..\dbanken\vo\fstherst", "fstamm->v_bestnr + STR(fstamm->herst_nr,4,0)",{|| zeigwo(fstamm->v_bestnr + STR(fstamm->herst_nr,4,0))},NIL)

FUNCTION zeigwo(nParanr)

@ 17,72 SAY RECNO() PICTURE "@E 999,999"
RETURN(nParanr)

So mache ich das. Ich habe aber die zeigwo() rausgenommen und es geht doch um ein vielfaches schneller danach.
Hm, dann muß ich mir einmal Gedanken zu dem Statusbar machen.
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
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Zu dem Kommetar von Tom

Das Exetended Locking ist ja schon etwas länger bei Alaska aktuell, aber für ntx wurde es erst mit 1.82 stillschweigend eingeführt. Und ist wirklich eine gute Sache. Meines Wissens gibt es dabei nur 1 Aber: Es muß sicher sein daß nur Xbase++-Programme mit eingeschaltetem Extended Locking darauf zugreifen, nicht mit normalem ntx-Locking, und damit auch keine Clipper-Programme etc. Dann knallt das nämlich im Gebälk. Durch das extended Locking entfernt sich Alaska nämlich vom Clipper-Standard.

Zu den Index-Dateien: Ab und an habe auch ich Probleme mit korrupten Indize. Das kommt aber nur vor wenn mal jemand einfach den Stecker gezogen hat. Kalt oder warm. Und dafür baue ich normalerweise eine reindex-Funktion ein, um das zu beheben. Wobei dabei immer das Problem besteht, das Tom angesprochen hat: Das benötigt Exklusives Öffnen der Datenbanken. Alle anderen müssen also raus.

Ich arbeite allerdings bei einigen meiner Single-User-Systeme auch mit vielen temporären Indize. Die ich zur Laufzeit erstelle jenachdem, was der User gerade für Bedingungen stellt. So viele Indize möchte ich einfach nicht ständig mitführen wie da möglich wären. Vielleicht gäbe es auch elegantere Lösungen, aber so funktioniert es bei mir.

Jan
Josef

Beitrag von Josef »

Jetzt bin ich auch verunsichert. Mein Programm läuft auch im Netz und eben deswegen habe ich die Index auf CDX umgestellt.
Was ich hier so gelesen habe, war das wohl nicht so gut, oder? Bei mir sind aber nur max. 4 Personen gleichzeitig im Programm.
Was tatsächlich bei meinem Programm auffällt, dass es von Stunde zu Stunde langsamer wird. Hängt das mit CDX zusammen?

Autolock: Wäre es sinnvoll dies anzuwenden jetzt wo ich überall meine Satz- u. Dateisperren drin hab? Mit Autolock muß ich ja bei jeder DB ein Feld "_LOCK" einfügen.
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

Beitrag von Manfred »

Hallo Josef,

mit dem Langsamwerden... welche Version benutzt Du? Ich habe bei Alaska gelesen, dass es eine Version gab, die das generell gemacht hat. Ich meine irgendwas mit 1.8x, oder so.

Über Autolock haben wir auch schon einen Thread eröffnet, vieleicht liest Du dort mal nach und fragst dann nochmals.
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!!
Josef

Beitrag von Josef »

Hallo Manfred,

ich hab bis vorgestern die 1.70er benutzt (mit eXPress).

Nach dem Autolock Thread werd ich mal suchen. Sorry, aber ich meinte, dass es hier dazugehört.
Antworten