Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > DB Backup als XML im ZIP Archiv
Antwort
 
Themen-Optionen
Alt 12.09.2007, 22:48   Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 274
Standard DB Backup als XML im ZIP Archiv

Nabend miteinander,

Ich habe hier eine kleine Anwendung mit ca. 10 Tables mit insgesamt 2000 Zeilen. Da mein Script ein bisschen kritisch ist und ich es demnächst updaten muss werde ich für die alte Version einen XML Backup machen wo ich nach aufspielen der neuesten Script Version, den XML Backup der Vorgängerversion importieren kann. Das geht schneller als die alten Tabellenstrukturen mit Inhalt an die neue Script Version anzupassen.

Nun hatte ich mir gedacht ich gehe hin und mache aus den Tabellendaten jeder einzelnen Tabelle eine XML Datei. Nachdem alle Dateien erstellt worden sind packe ich die in ein ZIP Archiv und erzwinge den Download.

In der neuen Scriptversion lade ich dann das ZIP Archiv hoch, das wird entpackt, jede XML wird sicherheitshalber nochmal gegen ein DTD Schema geprüft und falls alles passt wir per Transaktion die jeweiligen Tabellen befüllt.

Was haltet ihr davon? Jetzt mal vom Aufwand abgesehen. Umsetzen würde ich das mit ein paar PEAR.

Oder sollte ich (wenn überhaupt) die Normalisierung der Tabellen komplett über den Haufen werfen, alles in eine riesige XML Datei packen (statt 2-6 XML Dateien je Tabelle) und beim import wieder alles auseinander frimeln?
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2007, 23:32   Nach oben    #2
Entwickler
 
Benutzerbild von dr.e.
 
Registriert seit: 05.02.2007
Ort: München
Beiträge: 115
Standard

Ich frage mich, warum du überhaupt XML verwenden möchtest, ein einfacher MySQL-Dump hat um einiges weniger Meta-Zeichen und du musst bei der Speicherung nicht auf Escape-Sequenzen Acht geben. Sollte sich während des Updates etwas an den Tabellen ändern, kann man ganz einfach auf Basis der SQL_Statements ein Mapping generieren. Der Import geht per

Code:
mysql --user="123" --password="456" dbname < /path/to/dump/file.sql
dann ganz einfach von der Hand. Zudem musst du bei XML-Operationen bedenken, dass PHP die komplette Struktur des XMLs in den Speicher laden muss, ehe dies in die Datenbank geschrieben werden kann. Hier sind "out of memory exceptions" bereits vorprogrammiert.
__________________
Grüße,
Dr.E.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a look at http://www.adventure-php-framework.org!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.09.2007, 06:55   Nach oben    #3
Erfahrener Benutzer
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
Standard

Nunja, bei 2000 Zeilen wird es wohl nicht gleich zu einem Speicherüberlauf kommen.

Dennoch bin ich persönlich der Meinung, dass man sich überlegen sollte, ob ein Import-Script überhaupt notwendig ist, da man in der Regel nur ein Mal von einem alten Script auf ein neues umzieht (außer, es wird für verschiedene Projekte genutzt). Denn egal, ob du XML oder SQL verwendest: Du musst entweder beim Export (SQL) oder beim Import (XML) die Daten umbauen, damit sie in die neuen Tabellen passen. Ich persönlich mache es dann eigentlich so, dass ich die SQL-Commands in PMA baue, um die Daten von der einen Tabelle in die andere zu bekommen und sobald die genau so funktioniert, wie ich das haben will, speichere ich sie in einer Text-Datei ab. Dann kommt die nächste Tabelle dran. Solange, bis ich alle Tabellen importiert habe (übrigens mit "INSERT INTO ... SELECT ..."). Danach speichere ich die Text-Datei als eine .sql-Datei und nutze diese dann beim Umzug für den Import der Daten. Vorteil: Ich ziehe direkt die Daten aus der Datenbank und muss nicht ggf. 20 MB an Daten per Upload auf den Server schieben und ich kann die Datei für jedes Projekt nutzen, welches die selben Scripte verwendet.

Ich finde das persönlich etwas praktischer und einfacher, als nachher manuell aus den XML-Daten die SQL-Commands zusammen bauen zu müssen, denn wenn in der neuen Tabellenstruktur auf ein Mal in einer Tabelle Daten aus mehr als einer alten Tabelle zusammengeführt werden, muss man die Funktionalität von JOINs im SQL-Command (bzgl. "INSERT INTO ... SELECT ...") für das XML selber realisieren. Ein wenig aufwendig für ein Script, das in der Regel sehr selten genutzt wird.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.09.2007, 08:37   Nach oben    #4
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 274
Standard

Das mit SQL Befehlen in einer Textdatei speichern ist auch eine gute Idee, also für eine einmalige Aktion. Bisher hatte ich das immer so gemacht, wenn die neue Tabellenstruktur steht und das neue Script ist online, dann nehme ich die alte Tabellenstruktur und bastele diese um, damit sie genauso ist wie die neue Tabellenstruktur ist, allerdings ist das nicht so das Wahre da in der Zeit mit dem Script nicht gearbeitet werden kann und ich beim umbauen vielleicht einen Fehler mache. Das wollte ich halt mit einem XML Import/Export vermeiden.

Aufwändig ist die Sache schon.
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.09.2007, 14:17   Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
Standard

Nunja, das ist immer das Problem bei einer Datenübernahme.

Wenn du im Vorfeld, also bevor auf das neue Script umgestellt wird, die SQL-Commands fertig hast, dann legst du vor dem Umzug eine neue DB an, lädst das neue Script hoch, richtest es für die neue DB ein, sperrst das alte Script, übernimmst die Daten, testest die neue Version und schaltest die dann frei. Wie genau du das dann machen musst ist natürlich auch abhängig davon, wie du auf deinen Webspace zugreifen kannst, denn am Einfachsten ist es, die neue Version erstmal in einen anderen Ordner zu schieben und dann per SSH einfach die Dateien nach der Übernahme und dem Test zu verschieben, das dauert dann nur wenige Sekunden.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bug im PEAR XML Parser? ex³ PEAR, PECL und Frameworks 11 15.02.2007 14:51
xml parsing nove HTML, XML und CSS 10 16.07.2005 07:43
File(s)/Package(s) zu Archiv HINZUFÜGEN bzw. Aktualisieren obiwankenobi Tools, Server, Betriebssysteme 0 26.10.2004 14:32
XML Schema GUI Engine (JAXFront) spor Nachrichten 2 05.08.2004 17:27


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:28 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44