Wie entwerfe ich eine Datenbank für benutzerdefinierte Felder?

Meine Anforderungen sind:

  • Müssen in der Lage sein, um dynamisch hinzufügen von benutzerdefinierten Feldern beliebigen Datentyps
  • Müssen in der Lage sein, um die Abfrage UDFs schnell
  • Müssen in der Lage sein zu tun Berechnungen auf UDFs basieren auf dem Datentyp
  • Müssen in der Lage sein, zu Sortieren UDFs basieren auf dem Datentyp

Weitere Informationen:

  • Ich bin auf der Suche nach Leistung sind vor allem
  • Es gibt ein paar Millionen Stammsätze, die UDF-Daten angehängt
  • Wenn ich der letzten überprüfung waren es über 50mil UDF Einträge in unserer aktuellen Datenbank
  • Die meisten der Zeit, eine UDF-Datei ist nur an ein paar tausend von den Stammsätzen, nicht alle von Ihnen
  • UDFs sind nicht verbunden oder als Schlüssel verwendet. Sie sind nur Daten, die für Abfragen oder Berichte

Optionen:

  1. Erstellen Sie eine große Tabelle mit StringValue1, StringValue2... IntValue1, IntValue2,... etc. Ich hasse diese Idee, aber betrachten es, wenn mir jemand sagen kann es ist besser als andere Vorstellungen und warum.

  2. Erstellen einer dynamischen Tabelle, die fügt eine neue Spalte auf Nachfrage, wie gebraucht. Ich weiß auch nicht wie diese Idee, da ich das Gefühl die Leistung wäre langsam, es sei denn, Sie indizierten jeder Spalte.

  3. Erstellen Sie eine einzelne Tabelle mit UDFName, UDFDataType, und Wert. Wenn eine neue UDF Hinzugefügt wird, erstellen Sie eine Ansicht, die zieht nur die Daten und analysiert Sie, in welcher Art auch immer angegeben ist. Gegenstände, die nicht der Analyse Kriterien, die den Wert NULL zurückgeben.

  4. Erstellen Sie mehrere UDF-Tabellen, eine pro Datentyp. So hätten wir Tabellen für UDFStrings, UDFDates, etc. Wahrscheinlich würde das gleiche tun wie #2 und das automatische generieren einer Ansicht jederzeit ein neues Feld Hinzugefügt wird,

  5. XML-Datentypen? Ich habe nicht gearbeitet, diese vor, aber gesehen haben Sie erwähnt. Nicht sicher, wenn Sie geben würde mir die Ergebnisse ich will vor allem mit Leistung.

  6. Etwas anderes?

InformationsquelleAutor der Frage Rachel | 2011-02-24

Schreibe einen Kommentar