2011-12-20 17 views
5

Sono in procinto di valutare MongoDB per un progetto personale. Sto mettendo insieme un sito che permetterà agli utenti di registrare e memorizzare informazioni sul mio server.MongoDB + Web App: database per utente

Durante la valutazione di MongoDB ho visto che è possibile creare un database al volo, la prima volta che viene inserito un record. Questo mi ha fatto pensare che avrei potuto separare i dati per ciascun utente nel proprio database. Il nome del database sarà derivato dall'ID univoco dell'utente. Dopo che un utente si è registrato, la prima volta che memorizzano le informazioni verrà creato il loro database.

Qualcuno sa se questo è un progetto fattibile con MongoDB? Sarebbe meglio semplicemente archiviare tutti i dati dell'utente in un singolo database?

+0

Perché non utilizzare il livello inferiore successivo, le raccolte? Singoli database per utente mi sembrano un po 'sovraccarichi. E perché -in generale- abbattere i dati dell'utente in diversi negozi? Nella maggior parte dei casi si separano i dati in base al tipo e non in base alla proprietà, no? – asaaki

+0

MongoDB 2.2.0 introduce il blocco a livello di database. Se si archiviano diversi tipi di documenti per utente (che avrebbero le proprie raccolte), il database per utente potrebbe essere ancora fattibile. Se usi molti database, non dimenticarlo: http://www.mongodb.org/display/DOCS/Too+Many+Open+Files#TooManyOpenFiles-Estimatingulimitsetting –

risposta

4

Sì, una singola raccolta è migliore, in questo modo è possibile utilizzare l'indicizzazione a proprio vantaggio.

L'iterazione su un elenco di database o raccolte richiederà sempre un tempo O (N), mentre è possibile ottenere il tempo O (log N) per trovare i singoli documenti utilizzando gli indici.

Problemi correlati