PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Dynamische Tabellenspalten basierend auf Benutzereinstellungen

Die üblichen Ansätze dazu sind:

  • EAV
  • hstore
  • XML
  • JSON

Siehe:

Die ganze "Spalten für andere Benutzer verfügbar machen"-Sache erfordert lediglich, dass Sie eine "benutzerdefinierte Schlüssel"-Tabelle führen, die Sie hinzufügen, wenn ein Benutzer einen zuvor unbenutzten Schlüssel definiert.

Das Hinzufügen von Spalten mit dynamischer DDL klingt zunächst vernünftig, aber es gibt Grenzen, wie viele Spalten Sie speichern können und wie "breit" eine Zeile sein kann. Die Leistung beim Scannen der Tabelle wird schlechter, wenn Sie mehr Spalten hinzufügen, obwohl "spärliche" Spalten, die meistens null sind, relativ billig sind. Eine exklusive Sperre ist erforderlich, um eine Spalte hinzuzufügen, was einige Zeit in Anspruch nehmen kann, um auf einem ausgelasteten System zu funktionieren, obwohl das Hinzufügen der Spalte selbst sehr schnell geht, wenn sie nicht als NOT NULL DEFAULT ... . Anfangs wird es ziemlich gut funktionieren, aber ich vermute, Sie werden es später bereuen.