2012-01-06 7 views
8

Çok kullanıcılı bir RavenDB uygulamasında (kiracı başına bir veritabanı ve genel kiracı verilerine sahip bir 'genel bakış' veritabanı), dizin oluşturma stratejisi ne olurdu? (asp.net mvc)Asp.net MVC'de RavenDB'de çok sayfalı indeksler

Basit (çok kullanıcılı olmayan) bir uygulamada, global.asax dizinlerini oluşturabilirsiniz.

  • Teorik olarak, her kiracı için sorgu yapabilir ve global.asax'ta her kiracı için dizin oluşturabilirsiniz. Ancak kiracıların miktarı arttığında büyük bir performans sergileyeceği tahmin ediliyor ...
  • Kiracıların yaratılmasıyla ilgili dizinlerin oluşturulması, mevcut kiracıların güncellemelerde yeni indeksler alabilmesi nedeniyle mümkün değil.

Bu endeksleri nasıl ve ne zaman oluşturacağımıza ilişkin en iyi uygulama hangisidir?

cevap

10

Bu yöntemi, uygulama başlangıcında, perf hakkında endişeleriniz olmadan kullanabilirsiniz.

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); 
    } 
} 

sadece Raven.Client.Extensions

eklemeyi unutmayın