2011-09-09 21 views
9

私はRavenDbをしばらく見て回り、MultiTenancyを見始めました。マルチテナント用Ayendesサンプルは次のようになります。RavenDbと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(); 
    } 
} 

私は、各データベースが格納されている方法を知っているので、問題はありません:その仕事は、入居者の多い大規模なアプリケーションのためのウィル?

+3

FYI - 'EnsureDatabaseExists'は 'Raven.Client.Extensions'の使用ディレクティブなしでは動作しません。私はこの情報を見つけるのに非常に苦労しました。 –

答えて

10

ドキュメントの最初と最後の段落(v2.5 | v3.0)を参照してください。

RavenDBのデータベースはマルチテナントを想定して設計されており、単一のサーバ上に多数のデータベースをサポートすることを目的とした です。 これを行うには、RavenDBはアクティブなデータベースだけを開いたままにします。 初めてデータベースにアクセスすると、そのデータベースは として開始されます。そのため、そのデータベースへの次の要求では、データベースを開くコストは でなくてもかまいません。しかし、データベースが にしばらくアクセスされていない場合、RavenDBは に関連するすべてのリソースをデータベースでクリーンアップして閉じます。

の任意の時点で、アクティブなデータベースだけが実際に のリソースを使用しているため、RavenDBは多数のデータベースを管理できます。

ですから、それをサポートし、各データベースはディスク上の別のフォルダに格納されます。

+0

+1情報をお寄せください – jgauffin

+1

これを拡張するために、デフォルトでテナントはメインデータベースのDataフォルダに隣接するTenants \ TenantNameフォルダに保存されています。 –

関連する問題