2011-09-09 21 views
9

He buscado y jugado un poco con RavenDb por un tiempo y he comenzado a mirar MultiTenancy. Ayendes muestra para multitenancy se ve así:RavenDb y 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(); 
    } 
} 

No sé cómo se almacena cada base de datos y por lo tanto la pregunta: ¿Funcionará para grandes aplicaciones con una gran cantidad de inquilinos?

+3

FYI - el 'EnsureDatabaseExists' no funcionará sin una directiva using para 'Raven.Client.Extensions'. Me costó mucho encontrar esta información. –

Respuesta

10

Consulte el primer y último párrafo de los documentos (v2.5 | v3.0).

bases de datos de RavenDB fueron diseñados con la tenencia de varios en mente, y están destinados a apoyar gran número de bases de datos en un único servidor. En para hacer eso, RavenDB solo mantendrá abiertas las bases de datos activas. Si accede a una base de datos por primera vez, esa base de datos se abrirá y se iniciará, por lo que la próxima solicitud a esa base de datos no tendría que pagar el costo de abrir la base de datos. Pero si una base de datos no ha sido visitada por un tiempo, RavenDB limpiará todos los recursos asociados con la base de datos y la cerrará.

Eso permite que RavenDB administre una gran cantidad de bases de datos, porque en en cualquier momento dado, solo las bases de datos activas realmente están tomando recursos de .

Así que sí lo admitirá y cada base de datos se almacenará en una carpeta separada en el disco.

+0

+1 gracias por la información – jgauffin

+1

Para ampliar eso, de forma predeterminada almacenamos los inquilinos en la carpeta Tenants \ TenantName, junto a la carpeta de datos de la base de datos principal. –