2012-01-06 60 views
8

在一個多租戶RavenDB應用程序(每租戶一個數據庫,以及一個具有普通租戶數據的概覽數據庫)中,索引創建策略是什麼? (asp.net mvc)在asp.net MVC中的RavenDB中的多租戶索引

在一個簡單的(不是多租戶)應用程序中,您可以在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