2012-01-06 6 views
8

의 RavenDB 멀티 테넌트 인덱스 멀티 테넌트 RavenDB 애플리케이션 (테넌트 당 하나의 데이터베이스 및 일반 테넌트 데이터가있는 '개요'데이터베이스)에서 인덱스 생성 전략은 무엇입니까? (asp.net mvc)asp.net 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

을 포함하는 것을 잊지 마세요