Ich arbeite seit einigen Jahren an datenbankgesteuerten Webanwendungen und habe kürzlich ein Projekt mit einem XML-fähigen CMS übernommen. Dies hat mich dazu gebracht, über die Verwendung von XML / XSLT im Allgemeinen nachzudenken und darüber, in welchen Situationen dies nützlicher wäre als der Ansatz, den ich immer verwendet habe, bei dem alle meine Daten in einer (meiner) SQL-Datenbank gespeichert und dann verwendet werden PHP / Python / etc. nach Bedarf im Web damit zu arbeiten.
Es gibt offensichtlich etwas, das ich hier nicht "bekomme". Kann mir jemand Beispiele für Anwendungen geben, bei denen das Speichern der Daten in XML-Dateien anstelle einer Datenbank vorzuziehen wäre?
Antworten:
So zitieren Sie dieses Buch (Effektives XML: 50 spezifische Möglichkeiten zur Verbesserung Ihres XML):
Ich denke, das fasst es zusammen, wenn auch ein wenig unverblümt. XML ist ein Datenaustauschformat. Man kann XML-Parsing-Bibliotheken haben, die ein DOM mit XPath-Ausdrücken abfragen können, aber das ist nicht dasselbe wie ein DBMS. Sie können ein DBMS mit einer DOM / XPath-Schnittstelle erstellen. Um jedoch ACID-Eigenschaften zu erhalten oder auf große Datenmengen zu skalieren, müssen Sie eine DBMS-Engine und ein Datenformat mit Indizes, Protokollierung und anderen Artefakten eines DBMS implementieren - was (per Definition) der Fall ist es ist etwas anderes als XML.
quelle
Verwenden Sie XML, um Dateien zu erstellen, die an andere Anwendungen gesendet werden müssen. XML eignet sich eher als Datenaustauschformat als als Datenspeicherformat.
Der folgende Link ist bei der Verwendung von XML nicht schlecht zu beschreiben: Warum sollte ich XML verwenden?
quelle
SQL sind gute Tabellendaten - Daten, die leicht in Zeilen und Spalten passen. XML eignet sich für hierarchische Daten - Daten mit mehreren Ebenen unterschiedlicher Größe.
SQL ist gut für die Speicherung und Suche. XML eignet sich gut zum Übertragen und Formatieren.
quelle
1) Wenn Sie Ihre Daten mit anderen austauschen müssen. XML ist die " Verkehrssprache " des Webs - im Gegensatz zu einer Datenbankdatei kann es fast jeder lesen und interpretieren.
2) Wenn Ihr Datenvolumen klein ist und Sie keine komplexen Abfragen durchführen müssen. XML-Dateien eignen sich zum Speichern von Konfigurations- oder Dokumentvorlagen.
3) Wenn nicht viele Autoren versuchen, auf dieselben Daten zuzugreifen. Bei SQL-Datenbanken handelt es sich um Parallelitätsmechanismen, die für Sie hinter den Kulissen funktionieren. SQL-Datenbanken können Indizes zum schnellen Abrufen von Informationen zu großen Datenmengen unterstützen ...
quelle
Dinge, für die ich XML verwende:
Es gibt nicht viele Überschneidungen zwischen diesen Anwendungsfällen und den Anwendungsfällen für eine Datenbank. Einige, aber nicht viel.
Ironischerweise verwende ich XML derzeit am intensivsten in einer Desktop-App, die ein In-Memory-ADO-DataSet erstellt und die WriteXml- und ReadXml-Methoden des DataSet verwendet, um es beizubehalten und abzurufen. Ich verwende ADO, weil es viel einfacher ist, ein durch Metainformation definiertes Datenmodell mit ADO dynamisch zu erstellen, als mein eigenes Objektmodell für die Aufgabe zu implementieren.
Also hier ist ein Fall , dass aussieht wie ich bin mit XML als Datenbank. Aber ich bin es wirklich nicht. Ich verwende ein Objektmodell, das zufällig viele datenbankähnliche Funktionen implementiert, und ich verwende XML als Persistenzformat.
quelle
Tu es nicht.
Versuchen Sie SELECT author FROM book
quelle
Ich glaube, es gibt einige kommerzielle Anwendungen, die XML als Speichermedium stark nutzen. Ich habe es für eine Projektplanungsanwendung gemacht, bei der der Benutzer jedes Projekt in einer eigenen Datei speichert. Die App lebt auf einem USB-Stick und muss nicht installiert werden. Alle Daten werden aus dem XML abgerufen und im Speicher bearbeitet, sodass getRecord (id) schnell verrückt ist.
Meine Antwort wäre also ... Wenn die Daten klein genug sind, um im Speicher gespeichert zu werden, ist eine Datenbank überlastet.
quelle
Wann immer Sie nicht den Luxus haben, eine Datenbank zu haben (denken Sie an Einzelbenutzeranwendungen) oder ein sehr leichtes Speicherformat benötigen.
Auch wie im vorigen Poster erwähnt, ein Austauschformat.
quelle
Sowohl XML als auch RDMS können als Datenspeicher verwendet werden, aber jede Implementierung hat ihre eigenen Vor- und Nachteile.
Die Verwendung von XML zum Speichern von Daten für eine Webanwendung ist normalerweise kein großes Problem, bis Sie mit großen Datenmengen arbeiten oder entscheiden, dass Sie andere Informationen aus Ihren Daten ermitteln möchten (Beispiel: Data Mining). Mit anderen Worten, das Speichern großer Mengen von XML-Dateien für eine Datenquelle ist nicht sehr skalierbar, erleichtert jedoch das Verschieben der Daten. XML kann auch zum Serialisieren komplexer Objekte in einem nicht relationalen Format verwendet werden, wodurch die Notwendigkeit eines ORM entfällt, wenn Sie Ihre Objekte direkt aus dem XML serialisieren / deserialisieren können
RDMS (Datenbanken) sind normalerweise skalierbarer, bieten eine bessere Unterstützung für Parallelität und sind bei der Arbeit mit großen Datenmengen viel schneller. Das relationale Modell erleichtert später die Datenerfassung. Datenbanken leiden unter der Nichtübereinstimmung der objektrelationalen Impedanz ( http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch ), bei der Sie möglicherweise hässlichen Code schreiben oder komplexe ORMs verwenden müssen.
quelle
Ich würde gehen, wenn ich MySQL-Datenbanken auf meinem Host eingeschränkt hätte, dann würde ich die Möglichkeit sehen, XML als Datenspeicher zu verwenden.
quelle
Hier ist ein Beispiel für die Verwendung von XML mit SQL: Authentifizierte Benutzer lesen und schreiben Daten in verschiedene Datenbanken, von denen nicht alle dasselbe DBMS sind. Benutzer für Unternehmen A verwenden Daten aus einer lokalen SQL Server-Datenbank. Benutzer für Unternehmen B verwenden Daten aus einer entfernten Oracle-Datenbank. Und so weiter. Ein Dutzend verschiedene Datenbanken mit jeweils leicht unterschiedlichen Schemata für dieselben Basisdaten.
Der Website-Entwickler kann keine gespeicherten Prozeduren in den entfernten Datenbanken erstellen. SQL muss direkt von der Web-App an die Datenbank gesendet werden. Da jede Datenbank eine geringfügig andere SQL-Syntax und ein etwas anderes SQL-Schema hat, muss für jede der 12 Datenbanken für dieselbe Operation (SELECT, INSERT usw.) ein anderes SQL verwendet werden.
Eine der Möglichkeiten zum Einbetten der SQL-Anweisungen in die Webanwendung besteht darin, sie in XML-Dateien zu platzieren. Jede XML-Datei enthält die SQL-Anweisungen für eine der zwölf Datenbanken. Der Code bestimmt, auf welche Datenbank für den angemeldeten Benutzer zugegriffen wird, und ruft das entsprechende SQL aus der angegebenen XML-Datei ab.
Genau wie bei gespeicherten Prozeduren kann die SQL in der XML-Datei aktualisiert werden, ohne die Anwendung anzuhalten oder neu zu kompilieren.
quelle
Einige Anwendungen verwenden XML-Dateien zum Speichern der Konfiguration. Ich bevorzuge SQLite, um dies zu tun.
quelle
Ich würde niemals XML verwenden, um meine Daten zu speichern.
Wir verwenden XSLT-Transformationen als Datenabstraktionsschicht in unserer SOA-App. Alle Objekte senden sich gegenseitig Daten in XSLT, sodass sie nur eine Sprache verstehen müssen. Mit Ausnahme des Datenbank-Connectors, der die Daten in SQL umwandeln muss, um sie an die Datenbank zu senden.
Auf diese Weise wird die SQL-Zeichenfolgengenerierung in Ihrer App nicht auf zig Objekte verteilt. Erleichtert die Wartung erheblich.
quelle