PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Colonne di tabelle dinamiche in base alle preferenze dell'utente

I soliti approcci a questo sono:

  • EAV
  • hstore
  • XML
  • JSON

Vedi:

L'intera operazione "rendi le colonne disponibili ad altri utenti" richiede solo di mantenere una tabella "chiavi personalizzate" da aggiungere ogni volta che un utente definisce una chiave precedentemente non utilizzata.

L'aggiunta di colonne con DDL dinamico all'inizio sembra ragionevole, ma ci sono limiti al numero di colonne che puoi archiviare e alla larghezza di una riga. Le prestazioni della scansione della tabella peggiorano man mano che si aggiungono più colonne, sebbene le colonne "sparse" che sono per lo più nulle siano relativamente economiche. È necessario un blocco esclusivo per aggiungere una colonna, cosa che può richiedere tempo per entrare in un sistema occupato, anche se aggiungere la colonna da sola è molto veloce se non è definita come NOT NULL DEFAULT ... . All'inizio funzionerà abbastanza bene, ma sospetto che ti pentirai di averlo fatto in seguito.