Zur Beseitigung der Dbf-Korruption


Zur Beseitigung der DBF Korruption mit einem Posting-Motor

FoxTalkMai 1999

Copyright Pinnacle Publishing, Inc. Alle Rechte vorbehalten. Zur Beseitigung der DBF Korruption mit einem Posting-Motor
Steve Zimmelman


Die DBF-Datei ist seit etwa 15 Jahren bei uns, und während ich die offene Architektur der Struktur mag, es war schon immer ein inhärentes Problem mit Index- und Korruption--vor allem in einer Netzwerkumgebung. Das Problem scheint mit der Menge an Daten sein, die nach oben und unten das Netzwerk-Kabel übertragen wird. Paar dies mit mehreren Benutzern, und es dauert nicht lange, um einen Index zu pop. Auf der anderen Seite Einzelplatz-Systeme scheinen stabiler zu sein und nicht die gleichen Beschädigungsstufen als ihren vernetzten Vettern ausstellen. Eine Lösung, die oft von Entwicklern (mich eingeschlossen), verwendet wurde, Reindex oder Indexneuerstellung erhebt die Index-Dateien, wenn ein Index-bezogene Fehler den Kopf. Aber dies kann unüberschaubar geworden, wenn die Datasets mit 4 Millionen Rekordmarke zu nähern beginnen. Eine langfristige Lösung wäre die Mehrfachlizenz Anwendung Verhalten sich wie ein Einzelplatz-System entwickelt, was als Buchung Engine bekannt geworden ist.

Die Theorie hinter dem Motor Entsendung ist eigentlich ziemlich einfach. Die
Grundregel ist es, niemals erlauben den Benutzer, die nichts direkt mit der freigegebenen Tabelle gepostet. Stattdessen sendet der Benutzer zu einer Schatten-Tabelle. Nachdem die Schatten-Tabelle wird aufgefüllt, und keine Fehler während des Post aufgetreten, übergibt die Anwendung eine Richtlinie der Entsendung-Engine, die im Wesentlichen dem Motor sagt, was es tun soll. In diesem Fall wird die Haupttabelle aus den Daten in der Schatten-Tabelle aktualisiert. Also ist was tatsächlich geschieht, dass Buchung Motor oder eine Workstation, die nur eine Buchung auf der Haupttabelle. Das ist genau das, was ein Einzelplatzsystem tut.

Anatomie eines Motors Die meisten die Entsendung-Motoren, die ich gesehen habe sind in der Lage, eine Vielzahl von Anforderungen zu verarbeiten, mithilfe einer Tabelle, um die Richtlinien zu erhalten. Eine einfache Richtlinie Tabelle kann eine Struktur wie folgt haben:

FeldFieldNameTypGröße
1IDCharakter10
2PROGRAMMCharakter50
3PARAMSCharakter60
4SHADOWTABLCharakter50
5DATEREQESTDatum8
6DATEDONEDatum8
7START_TIMECharakter8
8END_TIMECharakter8
9FERTIGLogische1
10USERIDCharakter5

Der Motor sitzt in einer Schleife und sucht nach Datensätzen in dem Feld erledigt ist False. Wenn es man sieht, beginnt es mit in den Datensatz gespeicherten Informationen verarbeiten.

Nehmen wir beispielsweise, dass eine Anwendung muss eine Client-Datensatz aktualisieren. Die Anwendung würde erhalten Sie eine Kopie des Datensatzes und in einem Schatten-Tabelle zu speichern. Nachdem der Benutzer die gewünschten Änderungen vornimmt, er klickt auf den Button Post oder Commit und die Anwendung schreibt die Richtlinie-Tabelle einen Datensatz. Der Code könnte wie folgt aussehen:

*--Kundendatensatz in Schatten-Tabelle kopieren
*--zur Bearbeitung.
*

Kunden auswählen
Wenn Seek(m.CustNo)
cTempTable = 'Temp' + rechts (Sys 3, 4) + 'DBF'
Copy To (m.cTempTable);
Während Customer.CustNo=m.CustNo
EndIf

*
*--Wenn die Bearbeitung abgeschlossen ist, fügen Sie Datensatz
*--Richtlinie Tabelle hinzuzufügen.
*

Legen Sie in der Richtlinie;
(ID, Programm, Parameter von ShadowTabl,
DateReqest, UserID, getan);
Werte (SYS (2015), 'CustUpDt.fxp';
(m.CustNo,m.cTempTable,Date), m.UserID. F.)

Wenn die Entsendung-Engine den Datensatz sieht, beginnt er, den Eintrag wie folgt verarbeiten:

Wenn suchen (. F., 'Richtlinie')

Ersetzen Sie Directiv.Start_Time durch Funktion Time()

If! Empty(Directiv.ShadowTabl)
Wenn File(Directiv.ShadowTabl)
Verwenden Sie (Directiv.ShadowTabl) Alias Shadow In 0
EndIf
EndIf
If! Empty(Directiv.Program) und;
File(AllTrim(Directiv.Program))
If! Empty(Directiv.parms)
pParms = Directiv.Parms
(Directiv.Program) mit pParms zu tun
Sonst
Tun (Directiv.Program)
EndIf
EndIf

*
*--Schließen Sie die Schatten-Tabelle.
*

Wenn Used('Shadow')
Verwendung im Schatten
EndIf

*
*--Die Richtlinie-Tabelle zu aktualisieren.
*

Wählen Sie die Richtlinie
Ersetzen mit getan. T.,
DateDone mit Datum(),
End_Time mit Funktion Time()

EndIf

Der Motor kann eine Anwendung nicht sichtbare oder sichtbar werden. Ich bevorzuge eine sichtbare Engine, so dass ich den Motor bei Bedarf überwachen können.

Die Verwendung einer Entsendung-Engine ist natürlich nicht für kleinere Installationen, und es erfordert ein wenig Restrukturierungs-. Aber für große Installationen, in denen die Datenintegrität geschützt werden muss, es könnte der Weg zu gehen.









Zur Beseitigung der Dbf-Korruption


Zur Beseitigung der Dbf-Korruption : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Zur Beseitigung der DBF Korruption mit einem Posting-Motor

FoxTalkMai 1999

Copyright Pinnacle Publishing, Inc. Alle Rechte vorbehalten. Zur Beseitigung der DBF Korruption mit einem Posting-Motor
Steve Zimmelman


Die DBF-Datei ist seit etwa 15 Jahren bei uns, und während ich die offene Architektur der Struktur mag, es war schon immer ein inhärentes Problem mit Index- und Korruption--vor allem in einer Netzwerkumgebung. Das Problem scheint mit der Menge an Daten sein, die nach oben und unten das Netzwerk-Kabel übertragen wird. Paar dies mit mehreren Benutzern, und es dauert nicht lange, um einen Index zu pop. Auf der anderen Seite Einzelplatz-Systeme scheinen stabiler zu sein und nicht die gleichen Beschädigungsstufen als ihren vernetzten Vettern ausstellen. Eine Lösung, die oft von Entwicklern (mich eingeschlossen), verwendet wurde, Reindex oder Indexneuerstellung erhebt die Index-Dateien, wenn ein Index-bezogene Fehler den Kopf. Aber dies kann unüberschaubar geworden, wenn die Datasets mit 4 Millionen Rekordmarke zu nähern beginnen. Eine langfristige Lösung wäre die Mehrfachlizenz Anwendung Verhalten sich wie ein Einzelplatz-System entwickelt, was als Buchung Engine bekannt geworden ist.

Die Theorie hinter dem Motor Entsendung ist eigentlich ziemlich einfach. Die
Grundregel ist es, niemals erlauben den Benutzer, die nichts direkt mit der freigegebenen Tabelle gepostet. Stattdessen sendet der Benutzer zu einer Schatten-Tabelle. Nachdem die Schatten-Tabelle wird aufgefüllt, und keine Fehler während des Post aufgetreten, übergibt die Anwendung eine Richtlinie der Entsendung-Engine, die im Wesentlichen dem Motor sagt, was es tun soll. In diesem Fall wird die Haupttabelle aus den Daten in der Schatten-Tabelle aktualisiert. Also ist was tatsächlich geschieht, dass Buchung Motor oder eine Workstation, die nur eine Buchung auf der Haupttabelle. Das ist genau das, was ein Einzelplatzsystem tut.

Anatomie eines Motors Die meisten die Entsendung-Motoren, die ich gesehen habe sind in der Lage, eine Vielzahl von Anforderungen zu verarbeiten, mithilfe einer Tabelle, um die Richtlinien zu erhalten. Eine einfache Richtlinie Tabelle kann eine Struktur wie folgt haben:

FeldFieldNameTypGröße
1IDCharakter10
2PROGRAMMCharakter50
3PARAMSCharakter60
4SHADOWTABLCharakter50
5DATEREQESTDatum8
6DATEDONEDatum8
7START_TIMECharakter8
8END_TIMECharakter8
9FERTIGLogische1
10USERIDCharakter5

Der Motor sitzt in einer Schleife und sucht nach Datensätzen in dem Feld erledigt ist False. Wenn es man sieht, beginnt es mit in den Datensatz gespeicherten Informationen verarbeiten.

Nehmen wir beispielsweise, dass eine Anwendung muss eine Client-Datensatz aktualisieren. Die Anwendung würde erhalten Sie eine Kopie des Datensatzes und in einem Schatten-Tabelle zu speichern. Nachdem der Benutzer die gewünschten Änderungen vornimmt, er klickt auf den Button Post oder Commit und die Anwendung schreibt die Richtlinie-Tabelle einen Datensatz. Der Code könnte wie folgt aussehen:

*--Kundendatensatz in Schatten-Tabelle kopieren
*--zur Bearbeitung.
*

Kunden auswählen
Wenn Seek(m.CustNo)
cTempTable = 'Temp' + rechts (Sys 3, 4) + 'DBF'
Copy To (m.cTempTable);
Während Customer.CustNo=m.CustNo
EndIf

*
*--Wenn die Bearbeitung abgeschlossen ist, fügen Sie Datensatz
*--Richtlinie Tabelle hinzuzufügen.
*

Legen Sie in der Richtlinie;
(ID, Programm, Parameter von ShadowTabl,
DateReqest, UserID, getan);
Werte (SYS (2015), 'CustUpDt.fxp';
(m.CustNo,m.cTempTable,Date), m.UserID. F.)

Wenn die Entsendung-Engine den Datensatz sieht, beginnt er, den Eintrag wie folgt verarbeiten:

Wenn suchen (. F., 'Richtlinie')

Ersetzen Sie Directiv.Start_Time durch Funktion Time()

If! Empty(Directiv.ShadowTabl)
Wenn File(Directiv.ShadowTabl)
Verwenden Sie (Directiv.ShadowTabl) Alias Shadow In 0
EndIf
EndIf
If! Empty(Directiv.Program) und;
File(AllTrim(Directiv.Program))
If! Empty(Directiv.parms)
pParms = Directiv.Parms
(Directiv.Program) mit pParms zu tun
Sonst
Tun (Directiv.Program)
EndIf
EndIf

*
*--Schließen Sie die Schatten-Tabelle.
*

Wenn Used('Shadow')
Verwendung im Schatten
EndIf

*
*--Die Richtlinie-Tabelle zu aktualisieren.
*

Wählen Sie die Richtlinie
Ersetzen mit getan. T.,
DateDone mit Datum(),
End_Time mit Funktion Time()

EndIf

Der Motor kann eine Anwendung nicht sichtbare oder sichtbar werden. Ich bevorzuge eine sichtbare Engine, so dass ich den Motor bei Bedarf überwachen können.

Die Verwendung einer Entsendung-Engine ist natürlich nicht für kleinere Installationen, und es erfordert ein wenig Restrukturierungs-. Aber für große Installationen, in denen die Datenintegrität geschützt werden muss, es könnte der Weg zu gehen.


Zur Beseitigung der Dbf-Korruption

Zur Beseitigung der Dbf-Korruption : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Zur Beseitigung der Dbf-Korruption
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung