Wann / wie benutzt man den SQL server XML-datatyp?

Ich bin in der Entwurfsphase einer neuen Anwendung im Moment, und ich habe ein bisschen eine Design-Frage, die ich dachte, ich könnte in der Lage sein, Quelle Quelle ein Ratschlag mit.

Ich bin die Verbindung zu einer Vielzahl von Geräten mit proprietären Verbindungen, jedes Gerät reactjs mit einer Sammlung von data, die ich in eine schöne class abhängig von der Maschine Typ zu parsing. Einige Maschinen reagieren mit anderen data auf andere, aber es gibt einige gemeinsame Grund, aus diesem Grund habe ich ein einfaches inheritancesmodell.

- (abstract) Machine - Machine Type A - Machine Type B - Machine Type C 

Der Typ "Maschine" hat properties wie Name, IP-Adresse, welche Art von Dingen, die allen Maschinen gemeinsam sind.

An diesem Punkt komme ich, um meine database zu entcasting, und ich wünsche nicht, einen anderen Tisch für jeden meiner classn zu haben. Darüber hinaus möchte ich flexibel bleiben für alle neuen Maschinen, die dem System im Laufe der time hinzugefügt werden sollen.

Also … meine Idee war, einen Tisch mit Spalten für die gemeinsamen Features einer "Maschine" zu haben, und dann ein XML-Feld mit dem Rest der Informationen über eine bestimmte Maschine. Auf diese Weise dachte ich, ich könnte flexibel bleiben, ohne große Ebenen von redundanten "Null" -Werten in meiner database zu haben.

Dies würde auch die Spalte abzurufen, da eine Maschine 30 oder 40 verschiedene functionen aufnehmen kann.

Da ich den XML-datatyp noch nie benutzt habe, habe ich mich gefragt, ob ich dieses Problem sinnvoll mache? Was sind die Implikationen der Verwendung des XML-Feldes.

Es ist auch anzumerken, dass ich wahrscheinlich nicht auf der search nach einem der Felder in der XML, nur auf den gemeinsamen Feldern.

Hängt davon ab, wie oft und wie oft Sie die data aus diesen benutzerdefinierten data verwenden müssen.

Wenn Sie grundsätzlich das gesamte XML als Blob speichern müssen und – wenn überhaupt – selten abfragen, dann ist der XML-datatyp eine wirklich gute Option. Sie können in sie abzufragen, um Detailinformationen zu extrahieren – es ist einfach nicht die leistungsstärkste Sache zu tun.

Wenn diese spezifische data das Herz und die Seele deiner App sind und du die ganze time verwenden und abfragen musst, dann würde ich wahrscheinlich einfach die notwendigen relationalen Tische erstellen und so speichern.

Der XML-datatyp ist großartig

  • Wenn du diese data im XML-Format die meiste time benötigst (zB bekommst du es aus irgendeiner Quelle, muss es speichern und evtl. an einen anderen Ort weiterleiten)

  • Wenn Sie data speichern müssen, die nicht sehr oft abgefragt und verwendet werden

Der XML-datatyp in SQL server funktioniert sehr gut – aber wieder: Abfrage dagegen ist möglich, aber eher langsam (verglichen mit Abfrage relationalen Tabellen).

Ich persönlich, ich schlage vor, dass Sie das memoryn von XML in der database vermeiden sollten. Ich habe diesen Ansatz einmal mit Oracle 10g auf einem leistungsstarken server verwendet. Es ist gut, mit zu beginnen, aber sobald Sie beginnen, Ihre data abzufragen, filtern auf Werte aus der XML-performance beginnt zu sinken .. ja, können Sie tiefer und tiefer in die configuration von XMLDB, aber es könnte beginnen, Sie verrückt zu fahren ..

versuchen Sie, einige der anderen Fragen zu lesen, um beliebige data zu speichern, z. B. memoryn von wissenschaftlichen data in einer relationalen database .

Es kocht bis zu einem guten Gedanken darüber, wie Sie planen zu verwenden, zu extrahieren und Abfrage der data.