Daten in XML speichern statt MySQL
fr@gma
- datenbank
Hallo,
ich brauche mal Eure Meinung.
Ich hatte mir zur Rechnungsverwaltung mit PHP ein Programm geschrieben.
Bisher nutzte ich dafür eine MySQL-Datenbank mit folgenden Tabellen:
Von der Tabelle Rechnungen sind die beiden anderen Tabellen dann "verknüpft" u.s.w.
Jetzt habe ich das Problem, dass sich oftmals bei den Kundendaten die Adressdaten und/oder Ansprechpartner geändert haben.
Das von mir geschriebene Script ist zur Speicherung mehrerer Adressdaten und Ansprechpartner aber nicht ausgelegt.
Nun könnte man die Tabellen um eine weitere ergänzen.
Ich habe mich nun aber gefragt, ob ich die Daten nicht gleich in eine XML-Datei speichern sollte (mit simpleXML o.ä.).
Erste Überlegungen waren, 2 XML-Dateien (Rechnungen, Kunden).
In die rechnung.xml würde ich ALLE relavanten Daten für jede Rechnung speichern wollen.
Damit die Datenmenge nicht zu groß wird, so meine Überlegungen, würde ich jedes Jahr eine neue rechnung.xml (z.B. rechnung_2011.xml) anlegen.
Nun wäre aber das Problem, dass für Auswertungen, die alle Jahre betreffen, die Daten wieder verknüpft werden müssten (evtl. in einer hilfs.xml)
Nun meine Frage, was haltet Ihr von diesem Ansatz (XML-Speicherung)?
Für die Verknüpfungen der XML-Dateien würden ja große Datenmengen abzuarbeiten sein – wie sieht es in Richtung Performance aus?
Vielen Dank vorab.
fr@gma
Hi!
Ich habe mich nun aber gefragt, ob ich die Daten nicht gleich in eine XML-Datei speichern sollte (mit simpleXML o.ä.).
Nun meine Frage, was haltet Ihr von diesem Ansatz (XML-Speicherung)?
Nichts. Du hast bereits ein System, dem musst du nur noch in der Tabelle Rechnungen die Spalten für eine Rechnungsanschrift hinzufügen. In diese kopierst du dann den Kunden-Datensatz ohne oder mit Änderungen, wie zum Beispiel temporär anderer Ansprechpartner wegen Urlaubsvertretung.
Für die Verknüpfungen der XML-Dateien würden ja große Datenmengen abzuarbeiten sein – wie sieht es in Richtung Performance aus?
Sicher schlechter als mit dem DBMS, XML ist eher ein Datenaustauschformat und weniger ein Speicherformat.
Lo!
Moin Moin!
Bei Dateien (im Gegensatz zu Relationalen Datenbanken) kommt immer das Problem des Lockings hinzu. (Damit man sich nicht mitten in der Arbeit mit einem parallel laufenden Prozess die Daten zerschießt.) Relationale Datenbanken kümmern sich hinter den Kulissen ums Locking, bei Dateien muß man das selbst machen, und zwar fehlerfrei.
Erschwerend kommt bei XML hinzu, dass man die Daten sehr umständlich ein- und auspacken (serialisieren / deserialisieren) muß, während relationale Datenbanken recht effizient beim Lesen und Schreiben sind.
Alexander
hi,
Jetzt habe ich das Problem, dass sich oftmals bei den Kundendaten die Adressdaten und/oder Ansprechpartner geändert haben.
Ein Zusammenhang mit dem Ort der Datenhaltung ist hieraus nicht wirklich erkenntlich.
Hpzzu
ob ich [...] Daten [...] in eine XML-Datei speichern sollte [...]
Die Frage ist nicht: XML oder RDBMS?
Die Frage ist: Datei oder Datenbank?
Wenn du da mal googlest findest du sicherlich die einzelnen Vorteile von Datenbanken und in welchen Situationen was warum besser ist - ich denke für dich sind allein schon aus Performancegründen Datenbanksysteme besser geeignet.
Erste Überlegungen waren, 2 XML-Dateien [...]
Allerdings: DBMS != MySQL && DBMS != MSSQL
Es gibt auch nicht-relationale bzw. Nicht-SQL-Datenbanken (Stichwort: NoSQL). Fast für jeden Bereich gibt es "maßgeschneiderte" DBMSs. Das heißt du kannst auch XML-Knotenbäume in speziellen DBMSs (abgesehen von der Möglichkeit Knotenbäume in RDBMSs abzulegen *nichtnähereingeh*) speichern - nicht nur in Dateien (wäre ja auch langweilig).
[...] was haltet Ihr von [...] XML-Speicherung [...]
Auch wenn du XMLDBMSs anstatt von XML-Dateien verwendest: XML ist meiner Meinung nach nicht das Format deiner Wahl - es ist hauptsächlich für semistrukturierte Daten wie XHTML sinnvoll. Für strukturierte Daten ist RDF oder ähnliche logische Verfahren besser.
Informiere dich doch vielleicht einmal über NoSQL, Speicherung von RDF in DBMS und über OODBMS.
lg. hummerlabber