Applicazione Web - progettazione / infrastruttura di database

1

Ho appena iniziato lo sviluppo di un'applicazione web (che verrà implementata utilizzando il motore di app di Google), senza entrare nello specifico, l'app web consentirà agli utenti di implementare un piccolo sito web, parte dell'app consente agli utenti creare un modulo per consentire ai clienti di accedere al sito Web degli utenti, tuttavia ogni utente potrebbe richiedere di raccogliere dati diversi sui propri clienti, ad esempio un utente potrebbe richiedere il nome e l'indirizzo e-mail di un cliente solo laddove un altro potrebbe richiedere anche i clienti età.

La mia domanda è quale sarebbe il modo migliore per strutturare il / i database?

Per struttura dei database intendo come posso implementarli in modo da poter memorizzare i diversi set di raccolta dati per ciascun utente e quindi memorizzare le informazioni che vengono recuperate da ciascuno di questi utenti dai loro clienti? Ad esempio, non penso che sia giusto, ma il mio iniziale è stato che avrei dovuto distribuire un database per ciascuno degli utenti, ma questo sembra eccessivo, o aggiungere una nuova tabella per ciascuno degli utenti (non ho nemmeno sapere se queste due sono opzioni). Ho solo avuto esperienza con database banali e questo problema mi ha confuso.

    
posta Jono Brogan 25.04.2012 - 00:02
fonte

4 risposte

0

Suggerisco di esaminare Cassandra o MongoDB . Entrambi sono, ciò che è comunemente noto come database NoSQL .

Alcuni vantaggi dei database NoSQL rispetto a quelli relazionali tradizionali sono:

  • Aiuta nello scalare
  • Modello dati flessibile
  • Distributed and Fault tolerant
risposta data 25.04.2012 - 01:10
fonte
1

Quella parte della tua domanda non è molto "relazionale". Dovresti implementare uno schema di valori-chiave come:

users
  user_id         pk

attributes
  attribute_id    pk

user_attributes
  user_id         references users(user_id)
  attribute_id    references attributes(attribute_id)

o qualcosa come hstore di PostgresSQL. Ciò consentirebbe di conservare tutti i dati all'interno di un database relazionale se si adatta al resto della vostra applicazione; dovrai giudicare come "relazionale" è la tua intera applicazione.

    
risposta data 26.04.2012 - 23:25
fonte
0

Il modello di dati che descrivi non è relazionale. È possibile utilizzare un database relazionale per questo, ma non è lo strumento giusto. Come suggerito, dovresti usare un database non relazionale, come mongodb (database dei documenti), couchdb o qualcos'altro. Se si insiste a utilizzare un database relazionale, è possibile creare una tabella in cui gli attributi utente sono archiviati come righe anziché colonne, ma tenere presente che questa non è l'opzione migliore e potrebbe essere problematica in termini di prestazioni quando la tabella diventa grande . Lo schema descritto potrebbe essere simile a questo:

// Informazioni utente specifiche Crea tabella users_info (userid, info_name, info_value)

// informazioni utente comuni Crea utenti di tabelle (userid, username, site_name)

// dati di esempio inserire negli utenti (userid, username, site_name) Valori (1, "nohros", "nohros.com")

inserire in users_info (userid, info_name, info_value) Valori (1, "ssid", "6664312")

inserisci nei valori users_info (userid, info_name, info_value) (1, "ssn", "123456789")

    
risposta data 25.04.2012 - 02:27
fonte
0

Ci sono due modi per andare qui.

Utilizza un database di tipo NoSQL e disponi di una logica piuttosto complessa nel codice per riunire tutto.

o

Generare uno schema di database relazionale, oltre a tutte le classi / codice per gestirlo per ciascun sito Web. Hai un generatore di codice abbastanza complesso, ma, codice semplice e facile da eseguire il debug per il sito web attuale.

    
risposta data 25.04.2012 - 03:49
fonte

Leggi altre domande sui tag