Ich habe eine Reihe von verschiedenen Objekten mit einer unterschiedlichen Anzahl von Attributen. Bis jetzt habe ich die Daten in XML-Dateien gespeichert, die leicht eine sich ständig ändernde Anzahl von Attributen ermöglichen. Aber ich versuche, es in eine Datenbank zu verschieben.So speichern Sie Daten mit dynamischer Anzahl von Attributen in einer Datenbank
Wie würden Sie diese Daten am besten speichern?
Einige Strategien, die ich bisher identifiziert:
- ein einziges Feld mit dem Namen „Attribute“ in der Tabelle des Objekts zu haben und die Daten serialisiert oder dort json'ed.
- Speichern Sie die Daten in zwei Tabellen (Objekte, Attribute) und verwenden Sie eine dritte, um die Beziehungen zu speichern, so dass es eine echte n: m-Beziehung ist. Sehr saubere Lösung, aber möglicherweise sehr teuer, um ein ganzes Objekt und alle seine Attribute zu erhalten
- Identifizieren von Attributen, die alle Objekte gemeinsam haben, und das Erstellen von Feldern für diese Objekte in der Tabelle des Objekts. Speichern Sie die verbleibenden Attribute als serialisierte Daten in einem anderen Feld. Dies hat einen Vorteil gegenüber der ersten Strategie und erleichtert die Suche.
Irgendwelche Ideen?
Was ist die Motivation zu einer DB-Lösung für die Bewegung? Sie sagten unten, dass Geschwindigkeit Ihre Hauptsorge ist. Glauben Sie, dass eine db-Lösung schneller ist als Ihr aktueller XML-Ansatz? –
Eine vierte Strategie kam mir bei DVK vor, die dasselbe vorschlug: Speichern allgemeiner Attribute in der Objekttabelle und Speichern aller anderen unter Verwendung einer 1: n-Beziehung einer zweiten Tabelle. Scheint wie der beste Kompromiss für Geschwindigkeit, Flexibilität und saubere Lösung (@ Tobiask) –
@Corey, nein, ich nicht. Die XML-Lösung ist im Moment unglaublich schnell und ich denke nicht, dass eine DB damit Schritt halten könnte. Es ist mehr eine Übung für mich, zu versuchen, das System hinsichtlich der Speicheroptionen flexibler zu machen und gleichzeitig meine MySQL-Fähigkeiten zu verbessern. –