2011-01-09 3 views
1

Meine Anwendung verbraucht XML-Daten von verschiedenen Anbietern. Alle Anbieter haben unterschiedliche XML-Formate/Schemas und benutzerdefinierte Abfragen sind erforderlich, um verschiedene Daten aus diesen XML-Dateien abzurufen.XML-Datenbankauswertung

Ich begann zunächst mit einem RDBMS-Ansatz, bei dem ich nach dem Abrufen eines bestimmten XML-Codes vom Anbieter die XML-Datei analysieren/abfragen und die Daten in einige Tabellen schreiben würde (mit Woodstock StAX-Parser). Aufgrund der Natur von RDBMS (festes Schema), bin ich nicht in der Lage, alle XML-Formate von verschiedenen Anbietern zu unterstützen, und selbst wenn ich dies tue, muss ich das hierarchische XML in relationale RDBMS-Schema-Daten "normalisieren".

Die XML/Daten von den Anbietern werden häufig täglich aktualisiert und die Größen variieren zwischen einigen kbs bis zu 50 MB Datendateien.

Ich evaluiere verschiedene NXD (Native Xml-Datenbanken), eXist-db, Sedna, BaseX und MonetDB als nächsten Schritt, um zu sehen, ob dies meine Zwecke erfüllen würde.

Kann jemand bitte einige praktische Ratschläge geben, wie man das ausarbeitet? oder hat ein ähnliches System erstellt, das viele XML-Daten verschiedener Formate/Schemata verarbeitet.

Hier sind die Kerne XML Anforderungen i zu beantworten versuchen zu:

  • Griffe mehr XML-Datendateien, aus mehreren Quellen. XMLs unterscheiden sich von Anbieter zu Anbieter.
  • XML-Updates, des gesamten Dokuments sowie einige Felder in der vorhandenen XML in der DB.
  • Identifizieren Sie, ob es von einem bestimmten Anbieter und die Abfragen entsprechend abfeuern.
  • Fragen Sie diese XML mit XPath/XQuery ab, um die Daten zu lesen, um sie den Benutzern in einer gemeinsamen Ansicht zu präsentieren.

Bitte um Rat.

Danke, Subhro.

Antwort

0

Ich würde SQL Server als Datenbank in Verbindung mit SQL Server Integration Services (SSIS) als Integrationstool verwenden.

SQL Server unterstützt nativ einen XML-Spaltentyp. Es kann erfordern, dass der XML-Code einem Schema oder einer Gruppe von Schemas folgt, und kann den XML-Code mithilfe von XQuery verarbeiten. Gleichzeitig können Sie natürlich die Teile des XML, die von Lieferant zu Lieferant identisch sind, in Tabellen zerlegen.

Die XML kann auch durch XML-Indizes indiziert werden, wodurch die Abfrage viel schneller wird.

SSIS kann verwendet werden, um die verschiedenen XML-Dateien entweder von verschiedenen Disk-Drops oder über FTP oder Web-Services zu sammeln und sie mit oder ohne zusätzliche Vorverarbeitung in die Datenbank zu verarbeiten. Sie könnten beispielsweise feststellen, dass Sie die verschiedenen XML-Formate zu einem gewissen Grad rationalisieren können, indem Sie die meisten Daten in normalen relationalen Tabellen speichern und den Rest (oder das gesamte Dokument) für nachfolgende Abfragen in derselben Datenbank speichern.

OBTW, SSIS ist kostenlos mit SQL Server.

2

Ich denke, Sie sind richtig, für eine native XML-Datenbank anstelle einer hybriden Datenbank wie SQL-Server zu gehen.Die hybriden Datenbanken benötigen oft mehr Zeit, um Kern-XML-Funktionen wie konforme Implementierungen von XQuery- und XQuery-Updates bereitzustellen. und die Tatsache, dass sie so viele verschiedene Möglichkeiten zum Speichern von Daten bieten, kann es schwierig machen, Ihre Entwickler unter Kontrolle zu halten.

Für welches Produkt gibt es hier ein echtes Problem. Datenbankprodukte zu bewerten ist ein teurer Prozess, und wenn Sie es gründlich genug machen, um eine aussagekräftige Antwort zu erhalten, werden Sie wahrscheinlich mehr kosten, als eine falsche Entscheidung zu treffen. Wenn ein Datenbankprojekt fehlschlägt, liegt das meist nicht daran, dass die Datenbanksoftware mangelhaft ist, sondern daran, dass das Projekt nicht über die Fähigkeiten und Erfahrungen verfügte, die ausgewählte Datenbanksoftware optimal zu nutzen. Also würde ich sagen, wählen Sie ein Produkt basierend auf den Fähigkeiten, die Ihnen zur Verfügung stehen.