Überlegungen zu Parallelverfahren
Kalle_B
- programmiertechnik
0 Tom0 Klawischnigg
Hallöle,
durch einen Fachartikel komme ich zu der Frage, ob parallele Verarbeitungverfahren auch meinem Programmsystem von Nutzen sein könnten.
Für die Datensicherung fordere ich bis zu 11 Tabellen als CSV- Dateien an, speichere sie und arbeite sie dann ab, also:
A1: ein PHP- Programm auf Server abc.de fordert Tabelle A als CSV- Datei beim Server def.de an.
A2: Server def.de erzeugt die Datei und sendet sie an abc.de
A3: abc.de speichert die Datei ab.
A4: abc.de arbeitet die Datei zeilenweise ab und macht INSERTs, UPDATEs und DELETEs für die Datenbank MySQL davon.
B1: Schritt 1 für Tabelle B
...
K4: Schritt 4 für Tabelle K
4 Schritte für jede Tabelle mal 11 Tabellen, zur Zeit seriell (nacheinander).
Wie wäre es, wenn ich für jede Tabelle das anfordernde und verarbeitende Programm extra starte? Also:
Starte auf Server abc.de je ein Programm für Tabelle A, B, C, D, E, F, G, H, I, und K.
Geht Server def.de jetzt in die Knie? Oder arbeitet er 11 Parallel- Anfragen schneller ab, als wenn sie nacheinander kommen würden? Es ist ja dieselbe Datenbank, in der jetzt 11 Programme rumrödeln.
Und Server abc.de muss dann zeitgleich 11 Tabellen in die Datenbank einspeisen.
Es ist zuviel Arbeit, das nur aus Jux und Tollerei auszuprobieren. Deshalb die Frage: Kann parallele Arbeit meine Datensicherung verkürzen?
Lieben Gruß, Kalle
Hello Kalle,
der Server hängt hinter einen ganzen Kommunikationskette mit Hin- und Rückweg.
Die Datenübertragung wird ein gutes Stück der Zeit in Anspruch nehmen und der Server wird sich zischendurch langweilen.
Aber willst Du eigentlich Datensynchronisation zwischen zwei datenverändernden Speicherorten betreiben, oder willst Du ein Backup fahren?
Ein harzliches Glückauf
Tom vom Berg
Hello Tom,
Aber willst Du eigentlich Datensynchronisation zwischen zwei datenverändernden Speicherorten betreiben, oder willst Du ein Backup fahren?
Ein inkrementelles Backup.
LG Kalle
Hello,
Aber willst Du eigentlich Datensynchronisation zwischen zwei datenverändernden Speicherorten betreiben, oder willst Du ein Backup fahren?
Dann müsstest Du doch besser ein Transaktionslog schreiben lassen vom DBMS und das dann sichern.
Das in diesem Thread zuständige DBMS hast Du nicht genannt oder ich habe es überlesen.
Deshalb habe ich mal testhalber für MySQL gesucht.
Google: MySQL Transaction Log
ergibt:
http://dev.mysql.com/doc/refman/5.0/en/binary-log.html
http://dev.mysql.com/doc/refman/5.0/en/mysqlbinlog.html
Nur ein Transaktionslog gibt dir die Möglichkeit, die Sicherung im laufenden Betrieb durchzuführen.
In manchen Umgebungen werden Transaktionslogs überlappend gestartet und gestoppt.
Da die Aufsetzpunkte und die Manipulations-IDs bekannt sind, kann man sie schneiden und die Teile dann nahtlos aneinanderfügen. Durch diese Technik kann man die Teile auch "lagern".
Du wirst aber nicht darum herumkommen, einen Hauptaufsetzpunkt mit einer Vollsicherung zu bestimmen.
Wie groß ist denn die gesamte Datenmenge, die zu sichern ist?
Ein harzliches Glückauf
Tom vom Berg
Hi there,
Es ist zuviel Arbeit, das nur aus Jux und Tollerei auszuprobieren. Deshalb die Frage: Kann parallele Arbeit meine Datensicherung verkürzen?
Ich würde sagen, das hängt prinzipiell davon ab, inwieweit ein Prozess die Ressourcen des Rechners ausreizt. Wenn Dir das Sichern deshalb zu lange dauert, weil der Rechner zu langsam ist, wirst Du von einer Parallelisierung genau nichts haben, wenn es zu lange dauert, weil der Rechner für einen Prozess nur einen gewissen Anteil an Ressourcen zur Verfügung stellt, dann kannst Du das Sichern damit unter Umständen beschleunigen. Generell aber gehört Datensicherung sicherlich zu jenen Vorgängen, die von Prozessaufteilung am wenigsten profitieren dürften...