2011-09-09 8 views
9

Przez pewien czas wyglądałem i bawiłem się z RavenDb i zacząłem patrzeć na MultiTenancy. Ayendes próbki dla multitenancy wygląda następująco:RavenDb i 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(); 
    } 
} 

Nie wiem, jak każda baza danych jest przechowywana i stąd pytanie: Czy to praca dla dużych aplikacji z wieloma lokatorami?

+3

FYI - "ProvidDatabaseExists" nie będzie działać bez dyrektywy use dla "Raven.Client.Extensions". Bardzo trudno było znaleźć tę informację. –

Odpowiedz

10

Zobacz pierwszy i ostatni akapit z dokumentacji (v2.5 | v3.0).

baz RavenDB zostały zaprojektowane z myślą o wielu najmu i są przeznaczona do obsługi dużej liczby baz danych na pojedynczym serwerze. W celu wykonania tej czynności RavenDB zachowa tylko aktywne bazy danych. Jeśli uzyskujesz dostęp do bazy danych po raz pierwszy, ta baza danych zostanie otwarta i uruchomiona, więc następne żądanie do tej bazy danych nie będzie musiało płacić kosztów otwarcia bazy danych. Ale jeśli baza danych nie była dostępna przez pewien czas, RavenDB wyczyści wszystkie zasoby związane z z bazą danych i zamknie ją.

Dzięki temu RavenDB może zarządzać dużą liczbą baz danych, ponieważ w danym momencie tylko aktywne bazy danych pobierają zasoby .

Tak, będzie to wspierać, a każda baza danych będzie przechowywana w oddzielnym folderze na dysku.

+0

+1 dziękuję za informacje – jgauffin

+1

Aby rozwinąć, domyślnie przechowujemy lokatorów w folderze Tenants \ TenantName, sąsiadującym z głównym folderem danych bazy danych. –

Powiązane problemy