260 likes | 334 Views
Datenbanksynchronisation. Venelina Jordanova Venelina@VandU.eu. Uwe Habermann Uwe@VandU.eu. Synchronisierung. Wofür brauche ich das? Datenabgleich mit Filialen Datenabgleich mit Vertretern Datenabgleich mit Außenstellen Wenn Online-Verbindung nicht (immer) möglich ist. Synchronisierung.
E N D
Datenbanksynchronisation VenelinaJordanova Venelina@VandU.eu Uwe Habermann Uwe@VandU.eu
Synchronisierung • Wofür brauche ich das? • Datenabgleich mit Filialen • Datenabgleich mit Vertretern • Datenabgleich mit Außenstellen • Wenn Online-Verbindung nicht (immer) möglich ist
Synchronisierung • Features • Mehrere Datenbanken in einem Ordner oder in verschiedenen Ordnern • Freie Tabellen • Berücksichtigung von Berechtigungen durch eigenen Code möglich • Unterstützung von Löschungen
Wie geht das? • FTP Protokoll • 1 Server – viele Clients • Austausch von Ini Dateien • Austausch von Zip Dateien mit Daten • Parallelbetrieb von Server und Client
Voraussetzungen beim Server • Ab Windows 2000 • IIS und FTP Server • Benutzerkonto mit FTP Zugriffsrechten • Die Zungangsdaten sind den Clients bekannt • Ordner mit FTP Zugriffsrechten • Dienst installieren • Dll registrieren
Installation des Servers • Benutzerkonto mit FTP Zugriffsrechten anlegen • Ordner mit FTP Zugriffsrechten anlegen • Dienst installieren • Dll registrieren • Server.ini Datei anlegen
Server.ini [FOLDERS] CLIENTINIFOLDER=C:\Inetpub\ftproot\FTPSync\CLIENTINI SERVERINIFOLDER=C:\Inetpub\ftproot\FTPSync\SERVERINI CLIENTDATAFOLDER=C:\Inetpub\ftproot\FTPSync\CLIENTDATA SERVERDATAFOLDER=C:\Inetpub\ftproot\FTPSync\SERVERDATA CLIENTCONFIRMATIONFOLDER=C:\Inetpub\ftproot\FTPSync\CLIENTCONFIRMATION SERVERCONFIRMATIONFOLDER=C:\Inetpub\ftproot\FTPSync\SERVERCONFIRMATION CREATEDATABASEPRGFOLDER=DATABASES [\FOLDERS] [DATABASES] [C:\FTPSYNC\DATA\vfp],[vfp] [\DATABASES] [TIMER] SYNCHRONIZATIONEXE=C:\FTPSync\FTPSyncServer.exe *!* Timeouts and delay are in seconds INITIMEOUT=60 DATATIMEOUT=60 CONFIRMATIONTIMEOUT=60 DELAY=0.5 *!* In log files it will be written if only the file exist SERVICELOGFILE=C:\TEMP\SYNCSERVICE.LOG SERVERLOGFILE=C:\TEMP\SYNCSERVER.LOG [\TIMER]
Voraussetzungen beim Client • Internetverbindung • FTP muss möglich sein (frei in Firewall) • Port konfigurierbar, Standard 21 • Normale VFP 9 Anwendung muss laufen • Ini Datei mit Pfadeinstellungen • Protokollierung in Log Datei möglich
Voraussetzungen beim Client • Die Synchronisierung von gelöschten Datensätzen funktioniert nur, wenn mit Cursoradaptern gearbeitet wird
Server Komponenten • Windows Dienst • Exe Datei? • DLL auf dem Server
Client Komponenten • Klassenbibliotheken • VfxFtpSync.vcx • VfxFtpSyncClient.vcx • VfxFtpSyncClientBase.vcx
Integration in VFPizza • Vorbereitetes Projekt verwenden!
Anforderungen an die Datenbank • Wir empfehlen GUIDs zu verwenden • Feldtyp C(36) • Von der Datenbank vergebene Primärschlüssel werden nicht unterstützt!
Anforderungen an die Datenbank • Es müssen folgende Felder in allen zu synchronisierenden vorhanden sein: • Edt_Date T • Edt_Usr C(36) • Ins_Date T • Ins_Usr C(36) • Del_Flag N(1) • Sync_Date T
Appl.vcx - cFoxAppl • .cDel_Fld = Del_Flag • .lFillEditDateForNewRecords = .T. • .lUseGUIDsKeys = .T. • .lUseUTCTime = .T.
VFXSDef.dbf • Ein Datensatz enthält alle für FTP erforderlichen Einstellungen
VFXSDef.dbf • FtpUrl = www.outsourcingitservices.net • FtpPort = 21 • FtpUpIni = FTPSync/CLIENTINI • FtpDwnIni = FTPSync/SERVERINI • FtpUpData = FTPSync/CLIENTDATA • FtpDwnData = FTPSync/SERVERDATA
VFXSDef.dbf • FtpUpConf = FTPSync/CLIENTCONFIRMATION • Ftpdwnconf = FTPSync/SERVERCONFIRMATION • Ftpuser = • Ftppass =
Start der Synchronisierung • Neues Formular basierend auf cForm • Per Drag&Drop cFtpsyncclient aus VfxFtpSyncClient auf das Formular fallenlassen • Commandbutton auf das Formular ziehen
Start der Synchronisierung • Im Click Ereignis schreiben: llRes = ThisForm.oFtpSyncClient.Execute() Wait Window llRes
Vfxfopen.dbf • Eintrag für das neue Formular hinzufügen
Client.ini [DATABASES] [DATA\vfp],[vfp] [\DATABASES] [TIMER] INITIMEOUT=30 DATATIMEOUT=30 CONFIRMATIONTIMEOUT=30 DELAY=0.5 CLIENTLOGFILE=SYNCCLIENT.LOG [\TIMER]
Und jetzt auch noch Code… • VfxFtpSyncClient.vcx • cFtpSyncClient • Kann bei Bedarf angepasst werden • Insbesondere SELECT
Ablauf der Synchronisierung • Ini Upload • Datenaufbereitung beim Server • Datenaufbereitung beim Client • Upload einer Zip Datei • Download einer Zip Datei • Auspacken des Archivs • Integration der Daten in die Datenbank
Das Mittagessen wartet… Um 14.00 Uhr geht es weiter