Stabile Indexdateien

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

Moderator: Moderatoren

Antworten
Benutzeravatar
peterdahlmann
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 20
Registriert: Do, 20. Dez 2007 6:54
Wohnort: München

Stabile Indexdateien

Beitrag von peterdahlmann »

Hallo, habe seit ca. 20 Jahren eine Anwendung laufen mit ca. 10 Usern im Netz. Früher unter Clipper, jetzt Alsaka. Die Performance ist gut trotz fehlender Client-Server DB wie z.B. ADS Server.
Ich habe nur ein Problem. Hin und wieder sind die Indexdateien corrupt (vermutlich nach Abstürzen oder wenn jemand seinen PC "hart" gekillt hat). Nicht mehr so häufig wie unter Clipper, aber ab und zu noch vorhanden. Das äußert sich durch einen echten Fehler oder dadurch, dass einzelne Datensätze nicht mehr sichtbar sind. Letzteres natürlich tödlich bei Auswertungen. Die Software öffnet die Index-Datein bei Start und schliesst sie am Ende zusammen mit den Tabellen. Dazwischen mache ich commits (bin aber nicht sicher, ob die wirklich der Stabilität zuträglich sind)
Gibt es Erfahrungswerte welche Indexe die stabilsten sind. Wie gesagt es passt alles - nur die Stabilität könnte besser sein.
Peter
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Stabile Indexdateien

Beitrag von Manfred »

Hi,

bei mir haben die Probleme drastisch nachgelassen seit dem ich von NTX auf CDX umgestiegen bin. Ist auch m.E. einfacher zu verwalten, da nur 1 Datei mit allen TAGs drin und komprimiert, dadurch auch in Netzwerken schneller.
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: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Stabile Indexdateien

Beitrag von brandelh »

Das wichtigste für stabile Indexe sind stabile Netzwerkverbindungen. Hier liegt mein Problem seit wir auf MS Server 2008 umgestiegen sind.
Mit den nötigen Registryeinstellungen sollte man zwar alle System stabil bekommen, aber spätestens bei Hardwarefehlern (Stromausfall, Spannungsschwankungen, Abschalten des Rechners, Netzwerkkarte, Netzteil usw.) kann Xbase++ nichts mehr retten.

Leider kann man beim Öffnen nicht erkennen ob eine Indexdatei defekt ist.
Seit ich massive Probleme habe, lösche ich die Indexdateien und baue neu auf, sobald:
1. XppError.LOG oder XppFatal.LOG gefunden werden (diese benenne ich gleichzeitig durch Anhängen eines Datums+Zeit um).
2. Einmal im Monat.
3. Logdatei protokolliert Öffnen und Schließen der Anwendung, wenn diese am Vortag nicht ausgeglichen sind, löscht der erste Rechner die Indexe
Danach baue ich immer wieder neu auf.

Ich persönlich habe lange die NTXDBE benutzt, allerdings besteht hier die Gefahr, dass man im Programm ab und an eine vergisst (insbesondere wenn man neue braucht).
Mit den CDXDBE kann einem das nicht passieren.
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: Stabile Indexdateien

Beitrag von Rolf Ramacher »

Ich mache dies seit langem so, daß ich wenn Programmteile und Masken erstellt werden, die Datenbank geöffnet wird und in arrays geladen werden. Dann werden die DBF wieder geschlossen und erst wieder geöffnet, wenn gespeichert wird. Dadurch habe ganz selten Index-probleme
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
peterdahlmann
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 20
Registriert: Do, 20. Dez 2007 6:54
Wohnort: München

Re: Stabile Indexdateien

Beitrag von peterdahlmann »

ich hatte früher mehr Probleme aber seit ich vor vielen Jahren die Windows-Server durch Linux-Server + Samba ersetzt habe gibt es nur noch Probleme nach Abstürze der Clients. Reindiziert wird sowieso morgens täglich und automatisch, aber es ist auffällig, dass die Auswertungen am Nachmittag (z.B. Umsatzauswertungen) ab und an dahingehend fehlerhaft sind, dass Datensätze nicht im Index enthalten sind und daher "überlesen" werden.
Aufgrund Eures Echos werde ich es mal anstelle von NTX mit CDX probieren..
Danke
Peter
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Stabile Indexdateien

Beitrag von Jan »

Hallo Peter,

reindizieren ist keine gute Idee. Immer den Index löschen und neu anlegen. Manche Fehler werden durch reindizieren nicht behoben. Außerdem wächst die Indexdatei an.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Stabile Indexdateien

Beitrag von brandelh »

schneller ist es auch nicht ;-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Stabile Indexdateien

Beitrag von Manfred »

Interessant,

ich benutze auch Linux mit Samba, habe aber keine Probleme damit. Allerdings erst im Zusammenhang mit CDX wurden die Probleme verschwindend gering.
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
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Stabile Indexdateien

Beitrag von Koverhage »

Ist CDX denn schneller ?
Was muss man alles tun um von NTX auf CDX zu wechseln?
Welche DbeInfo Einstellungen sollten gemacht werden ?
Gruß
Klaus
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Stabile Indexdateien

Beitrag von Wolfgang Ciriack »

Hallo Klaus,
ist zwar schon ein paar Jahre her, dass ich umgestellt habe, damals war es definitiv so, dass es mit CDX Dateien etwas schneller und stabiler lief. Es gab damals auch in den Newsgroups den Hinweis, maximal 5 Indexschlüssel pro Indexdatei zu verwenden, ob dass heute noch notwendig ist, kann ich nicht sagen, ich habe trotzdem dass bis heute beibehalten und erzeuge bei z.B. 12 Indeschlüsseln 3 Indexdateien. Wichtig war noch bei der Umstellung, die Indexdateien unbedingt vor dem Neuerzeugen unbedingt zu löschen, da sonst die neuen Schlüssel hinten rangehängt werden, dass merkte ich dann, als eine Indexdatei dann mal hunderte von MB groß geworden war.
Meine jetzigen (ob optimal weiss ich nicht) CDX Einstellungen sind diese:

Code: Alles auswählen

IF !DbeLoad( "DBFDBE",.T.)
   DC_WinAlert( "Database-Engine DBFDBE not loaded" )
ENDIF
IF !DbeLoad( "CDXDBE",.T.)
   DC_WinAlert( "Database-Engine CDXDBE not loaded"  )
ENDIF
IF !DbeBuild( "DBFCDX", "DBFDBE", "CDXDBE" )
   DC_WinAlert( "DBFCDX Database-Engine, Could not build engine" )
ELSE
  DbeSetDefault("DBFCDX")
  DbeInfo(COMPONENT_ORDER,CDXDBE_LOCKRETRY,20000000)
  DbeInfo(COMPONENT_ORDER,CDXDBE_LOCKDELAY,10)
  DbeInfo( COMPONENT_ORDER, CDXDBE_MODE, CDXDBE_COMIX )
  DbeInfo(COMPONENT_ORDER, DBE_LOCKMODE, LOCKING_EXTENDED)
ENDIF
Viele Grüße
Wolfgang
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Stabile Indexdateien

Beitrag von Jan »

Hallo Wolfgang,

die Grenze von 5 Tags je Datei kenn ich garnicht. Und hab mich auch nie daran gehalten. Probleme hatte ich trotzdem nicht.

Ich mach mir die Verwaltung relativ einfach - die Indexdatei heißt so wie die dbf. Das hat in meinen Augen den Vorteil, das Datenbank, Memodatei, und Indexdatei im Explorer immer direkt beieinander stehen. Und ich beim Öffnen auch immer weiß, wie denn eigentlich die Indexdatei heißt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Stabile Indexdateien

Beitrag von brandelh »

Koverhage hat geschrieben:Ist CDX denn schneller ?
Hallo Klaus,

das kommt natürlich auf die Netzwerklast und die Dateigröße an.
Die CDX werden komprimiert gespeichert. Weniger Daten in der Übertragung wirken sich insbesondere auf langsamen Netzen positiv aus.
Auf jeden Fall bringt die Umstellung auf
DbeInfo( COMPONENT_ORDER, DBE_LOCKMODE, LOCKING_EXTENDED )
bei mehreren Stationen im Netz Vorteile solange überwiegend gelesen wird (Nachteile gibt es meines Wissens nicht).
Wenn du zudem noch UPPER(cFeld) sparen kannst, weil CDX nicht zwischen Groß-/Kleinschreibung unterscheidet, dann bringt das was beim Indizieren.

In Verbindung mit der FOXDBE kannst du dann noch kleinere Memofelddateien und mehr Datentypen verwenden.
Oder endlich Daten in ANSI in der Datei speichern.

Auch ich sehe einen großen Vorteil in der Regel ein NAME für alle Dateien !

DBU geht allerdings nicht mehr ohne Anpassung ;-)

PS:

DBF mit 500.000 Datensätzen, Indexfeld CHAR 5
NTX: 7.865 KB
CDX: 2.246 KB
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Stabile Indexdateien

Beitrag von brandelh »

DbeInfo( COMPONENT_ORDER, CDXDBE_MODE, CDXDBE_COMIX )
diese Zeile würde ich nur nutzen, wenn wirklich eine Kompatibilität mit dem alten COMIX Treiber nötig ist.
Laut Beschreibung ist die Standardeinstellung die modernste Version.
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Stabile Indexdateien

Beitrag von Herbert »

Koverhage hat geschrieben:Ist CDX denn schneller ?
Was muss man alles tun um von NTX auf CDX zu wechseln?
Welche DbeInfo Einstellungen sollten gemacht werden ?
Ich habe bei grösseren Kunden auf CDX umgestellt.
Geschwindigkeitsmässig ist der erwartete Gewinn an Geschwindigkeit nicht eingetreten.
Vorteil: 1 Datei für eine dbf, bei .ntx pro Schlüssel eine.
Programmstart: mit cdx schneller
Datensuche mit cdx langsamer (unwesentlich)
Daher: ein Wechsel auf cdx lohnt nicht.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Stabile Indexdateien

Beitrag von AUGE_OHR »

peterdahlmann hat geschrieben:Gibt es Erfahrungswerte welche Indexe die stabilsten sind. Wie gesagt es passt alles - nur die Stabilität könnte besser sein.
auch wenn deine Applikation und Indexe 100% stimmen wirst du bei einem "File basierendes" System wie DBF Dateien immer ein Problem mit dem M$ Server und SMB haben. man kann das zwar "optimieren" aber die M$ Server sind eben für "grosse" Dateien gedacht und der "Cache" macht ja die Geschwindigkeit aus. Dumm nur wenn der "Cache" nur kleine Häppchen bekommt die den "Cache" gar nicht richtig "füllen" -> SMB Probleme -> defekte Indexe.

glücklicherweise kommt mit Xbase++ v2.x nun pgDBE und damit kann man schon mal Erfahrung mit SQL und Xbase++ sammeln wenn man vorher noch nichts mit SQL zu tun hatte. bei dem jetzigen Konzept werden die IndexKey Ausdrücke von NTX / CDX, bei Verwendung des "UpSizeDbf.EXE", in die Table als internes Fields übernommen und "gepflegt".
gruss by OHR
Jimmy
Benutzeravatar
peterdahlmann
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 20
Registriert: Do, 20. Dez 2007 6:54
Wohnort: München

Re: Stabile Indexdateien

Beitrag von peterdahlmann »

Die Desktop-Datenbanken sind im Netz immer eine Krücke, besonders wenn viele Clients auf die selben Daten zugreifen. Corrupte Indizes treten ja in der Regel und bei aller fehlerfreiheit des Codes gerne nach Abstürzen der Software oder der Netzverbindungen auf. Und da ist ein Client-Server-System um Welten weniger anfällig.

Ja das mit Postgres hört sich gut an, wenn es denn bald kommt. In der Vergangenheit wurden ja die angepeilten Termine immer beliebig gerissen.

Wenn ich es richtig verstanden dann soll es nicht nur einen "Treiber" für Postgres geben, sondern es soll sogar eine Moglichkeit geben die satzbassierten Befehle in Postgres auszuführen. Damit müsste man nicht den kompletten Code umschreiben. Ich bin auf jeden Fall gespannt. Wäre schön, wenn man belastbare Infos bekommen könnte - zu den Features wie zu den Terminen.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Stabile Indexdateien

Beitrag von Manfred »

ich denke mal belastbare Infos gibt es nicht, aber dehnbare zuhauf. :badgrin:
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
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Stabile Indexdateien

Beitrag von AUGE_OHR »

peterdahlmann hat geschrieben:... sondern es soll sogar eine Moglichkeit geben die satzbassierten Befehle in Postgres auszuführen.
das ist im Prinzip möglich ...
peterdahlmann hat geschrieben: Damit müsste man nicht den kompletten Code umschreiben. Ich bin auf jeden Fall gespannt.
wenn dein Code "so simple" ist und du in 2GB Dimensionen denkst "könnte" es funktionieren ...

pgDBE ist ein Xbase++ "Wrapper" für die libpq.dll API wobei Alaska PostgreSQL v8.x verwendet
diese beziehen sich nur auf "bekannte" Xbase++ Datenbank Functionen und die nutzen längst nicht die Fähigkeiten von PostgreSQL.

Konzept bedingt kann man aber Xbase ( Daten SATZ) und SQL ( Daten MENGE ) aber nicht so einfach unter einen Hut bekommen.
Es gibt also, ohne "Optimierung", nur einen Kompromiss was mit steigender Grösse der Table sich am Tempo bemerkbar macht.

nun sagte ich "so simple" ... "kompliziert" wäre z.b. eine "incrementelle" Suche ...
klar funktioniert wohl dein Code ... die Frage ist nur wie schnell ...
du wirst also vermutlich deinen Code auf die neuen Umstände "anpassen" müssen und teilweise dein Xbase Konzept umstellen wie du mit "Daten" umgehst weil man "so" mit SQL nicht vernünftig arbeiten kann.
peterdahlmann hat geschrieben:Wäre schön, wenn man belastbare Infos bekommen könnte - zu den Features wie zu den Terminen.
Informationen ergeben sich aus Ergebnissen.
Dazu muss man sich "nur" die letzte CTP installieren und PostgreSQL "lernen" ...

PostgreSQL : Das offizielle Handbuch, ISBN 3-8266-1337-6
gruss by OHR
Jimmy
Benutzeravatar
peterdahlmann
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 20
Registriert: Do, 20. Dez 2007 6:54
Wohnort: München

Re: Stabile Indexdateien

Beitrag von peterdahlmann »

Danke für Deinen Hinweis auf CTP. Werde mich mal ranmachen.
Nach meiner Meinung macht es natürlich keinen Sinn Postgres prinzipiell wie xBase anzusteuern. Aber wenn man zumindest alte Programmteile "nur" durch den Austausch der Treiber weiterhin benutzen könnte und dann bei den neuen Teilen die Vorteile von Postgres ausreizt, dann wäre das schon super.
Ich habe mal vor einigen Jahre in einem größeren Bahn-Projekt als Projektleiter in einer sehr großen Anwendung Postgres eingesetzt. Da kannviel machen - viel richtig und ganz viel falsch. Bin auf jeden Fall gespannt.
Antworten