PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Colonnes de tableau dynamiques basées sur les préférences de l'utilisateur

Les approches habituelles pour cela sont :

  • EAV
  • hstore
  • XML
  • JSON

Voir :

L'ensemble "rendre les colonnes disponibles pour les autres utilisateurs" nécessite simplement que vous conserviez une table de "clés personnalisées" que vous ajoutez à chaque fois qu'un utilisateur définit une clé précédemment inutilisée.

L'ajout de colonnes avec DDL dynamique semble raisonnable au début, mais il y a des limites au nombre de colonnes que vous pouvez stocker et à la "largeur" ​​d'une ligne. Les performances d'analyse de la table se détériorent au fur et à mesure que vous ajoutez des colonnes, bien que les colonnes "éparses" qui sont pour la plupart nulles soient relativement bon marché. Un verrou exclusif est requis pour ajouter une colonne, ce qui peut prendre du temps sur un système occupé, bien que l'ajout de la colonne elle-même soit très rapide s'il n'est pas défini comme NOT NULL DEFAULT ... . Cela fonctionnera assez bien au début, mais je suppose que vous regretterez de l'avoir fait plus tard.