2012-01-06 19 views
8

In un'applicazione RavenDB multi-tenant (un database per tenant e un database di 'panoramica' con dati di tenant generali), quale sarebbe la strategia di creazione dell'indice? (asp.net mvc)Indici multitenant in RavenDB in asp.net MVC

In un'applicazione semplice (non multi-tenente), è possibile creare gli indici in global.asax.

  • In teoria è possibile eseguire una query per ogni tenant e creare gli indici per ogni tenant in global.asax. Ma immagino che sarebbe un enorme successo quando la quantità di inquilini salirà ...
  • La creazione degli indici sulla creazione dei titolari non è possibile, poiché gli inquilini esistenti dovrebbero essere in grado di ottenere nuovi indici sugli aggiornamenti.

Quindi quale sarebbe la migliore pratica per come e quando creare questi indici?

risposta

10

È possibile utilizzare questo metodo all'avvio dell'applicazione, non preoccuparsi di 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); 
    } 
} 

basta non dimenticare di includere Raven.Client.Extensions