2012-01-06 4 views
8

Dans une application RavenDB mutualisée (une base de données par locataire et une base de données 'overview' avec des données générales sur les locataires), quelle serait la stratégie de création d'index? (asp.net mvc)Index multitenant dans RavenDB dans asp.net MVC

Dans une application simple (non multitenant), vous pouvez créer les index dans global.asax.

  • En théorie, vous pouvez interroger chaque client hébergé et créer les index de chaque client hébergé dans global.asax. Mais je suppose que ce serait un énorme succès lorsque le nombre de locataires augmente ...
  • La création d'index sur la création de locataires n'est pas possible, car les locataires existants devraient pouvoir obtenir de nouveaux index sur les mises à jour.

Alors quelle serait la meilleure pratique quant à comment et quand créer ces index?

Répondre

10

Vous pouvez utiliser cette méthode au démarrage de l'application, pas de soucis à propos de 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); 
    } 
} 

juste ne pas oublier d'inclure Raven.Client.Extensions