2012-01-06 88 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