2011-09-09 14 views
9

Ho guardato e giocato con RavenDb per un po 'e ho iniziato a guardare MultiTenancy. Ayendes campione per multi-tenancy assomiglia a questo:RavenDb e MultiTenancy

using(var store = new DocumentStore 
{ 
    Url = "http://localhost:8080" 
}.Initialize()) 
{ 
    store.DatabaseCommands.EnsureDatabaseExists("Brisbane"); 

    store.DatabaseCommands.EnsureDatabaseExists("Melbroune"); 
    store.DatabaseCommands.EnsureDatabaseExists("Sidney"); 

    using (var documentSession = store.OpenSession("Brisbane")) 
    { 
     documentSession.Store(new { Name = "Ayende"}); 
     documentSession.SaveChanges(); 
    } 
} 

Non so come ogni database è memorizzato e quindi la domanda: Sarà che il lavoro per le applicazioni di grandi dimensioni con un sacco di inquilini?

+3

FYI - il "CleanDatabaseExists" non funzionerà senza una direttiva using per "Raven.Client.Extensions". Ho avuto molto difficoltà a trovare queste informazioni. –

risposta

10

Vedere il primo e l'ultimo paragrafo della documentazione (v2.5 | v3.0).

database RavenDB sono stati progettati con il multi tenancy in mente, e sono lo scopo di supportare gran numero di basi di dati su un singolo server. Nell'ordine , RavenDB manterrà aperti solo i database attivi. Se si accede a un database per la prima volta, quel database verrà aperto e avviato, quindi la successiva richiesta a quel database non dovrà pagare il costo di apertura del database. Ma se un database non è stato accesso a per un po ', RavenDB pulirà tutte le risorse associate con il database e chiuderlo.

Ciò consente a RavenDB di gestire un numero elevato di database, perché a in qualsiasi momento, solo i database attivi stanno effettivamente utilizzando le risorse .

Quindi sì lo supporterà e ogni database verrà archiviato in una cartella separata su disco.

+0

+1 grazie per le informazioni – jgauffin

+1

Per espanderci, per impostazione predefinita vengono memorizzati i titolari nella cartella Tenants \ TenantName, adiacente alla cartella Dati del database principale. –