Domanda

Sono stato alla ricerca di una soluzione database per consentire campi ei valori definiti dall'utente (che consente un numero illimitato). A prima vista, EAV sembrava la giusta misura, ma dopo qualche lettura non ne sono più sicuro.

Quali sono i pro ei contro di EAV?

Esiste un metodo database alternativo per permettere agli utenti definiti attributi / campi e valori?

È stato utile?

Soluzione

Questo non è da considerarsi una risposta esauriente, ma solo alcuni punti sul tema.

Dato che la questione è anche etichettato con il tag [sql], permettetemi di dire che, in generale, database relazionali non sono particolarmente adatti per la memorizzazione dei dati usando l'href="http://en.wikipedia.org/wiki/Entity-attribute-value_model" rel="noreferrer"> EAV modello

Se davvero bisogno di un disegno schemaless "permettendo un numero illimitato di attributi", la soluzione migliore è probabilmente quello di utilizzare un soluzione NoSQL . Anche se i punti deboli di EAV relativa ai database relazionali si applicano anche alle alternative NoSQL, vi verrà offerto funzionalità aggiuntive che sono difficili da raggiungere con i database SQL convenzionali. Ad esempio, di solito datastore NoSQL possono essere scalati molto più facile di database relazionali, semplicemente perché sono stati progettati per risolvere un qualche tipo di problema di scalabilità, e intenzionalmente cadere caratteristiche che lo rendono ridimensionamento difficile.

Molte piattaforme di cloud computing (come quelli offerti da Amazon , Google e Microsoft ) stanno caratterizzando archivi dati basati sul modello EAV, dove un numero arbitrario di attributi può essere associato con una data entità. Se state pensando di distribuire l'applicazione nel cloud, si può considerare questo sia come un vantaggio di business, così come una tecnica, a causa della forte concorrenza tra i grandi fornitori sta spingendo i rapporti valore-to-costi a livelli molto elevati, continuamente spingendo verso l'alto sulle caratteristiche e spingendo verso il basso i costi finanziari e di attuazione.

Altri suggerimenti

Date un'occhiata al posgtres hstore http://www.postgresql.org/ docs / 9,0 / static / hstore.html questo farà esattamente quello che vuoi, senza la maggior parte degli svantaggi

Il Streams Piattaforma propone la via alternativa basata sulla Streams ( In realtà, è il modello di dominio ), campi e Assegnazioni entità.

  

Esiste un metodo database alternativo per permettere agli utenti definiti attributi / campi e valori?

Un'alternativa è quella di cambiare lo schema del database in base all'input dell'utente:., Ad esempio quando l'utente vuole un nuovo campo, quindi aggiungere una colonna corrispondente al database

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top