2012-01-06 4 views
8

マルチテナントRavenDBアプリケーション(テナントごとに1データベース、一般テナントデータを持つ「概要」データベース)では、インデックス作成戦略は何ですか? (asp.net mvc)asp.netのRavenDBのマルチテナントインデックスMVC

単純な(マルチテナントではない)アプリケーションでは、global.asaxでインデックスを作成できます。

  • テナントごとにクエリを行い、すべてのテナントのインデックスをglobal.asaxで作成できます。テナントの数が増えると、それは大きなパフォーマンスになると思います。
  • 既存のテナントが更新に関する新しいインデックスを取得できるように、テナント作成時にインデックスを作成することはできません。

どのようにしてこれらのインデックスを作成するのがベストプラクティスですか?

答えて

10

この方法はアプリケーションの起動時に使用できますが、perfに関する心配はありません。

public static void CreateIndexesForDatabases(Assembly assemblyToScanForIndexingTasks, IDocumentStore documentStore, string[] databases) 
{ 
    var catalog = new CompositionContainer(new AssemblyCatalog(assemblyToScanForIndexingTasks)); 
    foreach (var database in databases) 
    { 
     IndexCreation.CreateIndexes(catalog, documentStore.DatabaseCommands.ForDatabase(database), documentStore.Conventions); 
    } 
} 

だけRaven.Client.Extensions

を含めることを忘れないでください