2011-11-03 17 views
5

rIo ho esaminato le domande e in effetti i documenti RavenDb. C'è un po 'a RavenDb Index Replication Docs ma non sembra alcuna indicazione su come/quando/dove creare IndexReplicationDestinationCome installare e configurare la replica dell'indice RavenDb

Il nostro caso d'uso è molto semplice (è un picco). Attualmente creiamo nuovi oggetti (mucche) e li memorizziamo in Raven. Abbiamo un paio di query create dinamicamente utilizzando LINQ (ad esempio from c in session.Query<Cows> select c).

Ora non riesco a vedere dove dovrei definire l'indice da replicare. Qualche idea? Ho in mano il fagotto e ha aggiunto alla directory del server (sto assumendo che dovrebbe essere in RavenDB.1.0.499\server\Plugins dove RavenDB.1.0.499\server contiene Raven.Server.exe)

Edit: Grazie Ayende ... la risposta qui sotto e nei gruppi ravendb aiutati. C'è stato un momento facepalm. Indipendentemente da qui alcuni dettagli che possono aiutare qualcun altro. È davvero molto semplice e in effetti funziona solo:

a) Assicurarsi che i plug-in vengano prelevati. Puoi visualizzarli nelle statistiche - disponibili tramite/localhost: 8080/stats url (assumendo le impostazioni predefinite). Dovresti vedere le voci in "Estensioni" relative al pacchetto IndexReplication.

Se non presentare garantire le versioni delle DLL (bundle e server) sono gli stessi

b) Assicurarsi che l'indice si desidera replicare è stata creata. Possono essere creati tramite Client API o HTTP API.

API

Cliente:

public class Cows_List : AbstractIndexCreationTask<Cow> 
{ 
    public Cows_List() 
    { 
     Map = cows => from c in cows select new { c.Status }; 
     Index(x => x.Status, FieldIndexing.Analyzed); 
    } 
} 

HTTP API (in studio): // Mucche/Lista docs.Cows .Selezionare (q => new {Stato = q.Status})

c) creare il documento di replica. L'indizio qui è DOCUMENT. Come ogni cosa archiviata, anche questo è un documento. Così, dopo la creazione di esso deve essere memorizzato nel DB:

var replicationDocument = new Raven.Bundles.IndexReplication.Data.IndexReplicationDestination { Id = "Raven/IndexReplication/Cows_List", ColumnsMapping = {{ "Stato", " Stato "}}, ConnectionStringName =" Reports ", PrimaryKeyColumnName =" Id ", TableName =" cowSummaries " }; session.Store (replicationDocument); sesson.SaveChanges();

d) Assicurarsi di avere il seguente nel client (ad esempio MVC app o console)

e) Creare lo schema RDBMS. Ho una tabella in 'cowReports':.

CREATE TABLE [dbo] [cowSummaries] ( [Id] NULL nvarchar, [Stato] nchar NULL)

Il mio problema particolare, non è stata aggiunta al documento Indice al negozio. Lo so. facepalm. Ovviamente il tutto è un documento. Funziona come un fascino!

risposta

1

È necessario definire due elementi. a) Un indice che trasforma il documento nella forma della riga. b) Un documento che dice a RavenDB qual è il nome della stringa di connessione, il nome della tabella e le colonne da mappare

+0

Grazie Ayende - Questa è una delle 2 cose che trovo difficile da stabilire con RavenDb (il resto è stato molto semplice) 1) dove/quando creo ReplicationDocument, è una volta per sessione? o app? Immagino app ... 2) gestione delle sessioni con ASP.Net (Non voglio iniettare IDocumentStore - è un'interfaccia ampia a Stub o Mock) - Preferirei avere una conversazione (come nHiberante). – penderi

+0

Ok le Sessioni sono ordinate (sto usando pratiche simili a nHibernate/Monorail - memorizza la sessione in HttpContext). Ma temo di non essere ancora chiaro su quando/come creare il documento di rteplicazione e l'indice ... ogni consiglio è apprezzato. – penderi

+0

Inoltre .... Sto usando gli indici dinamici per l'interrogazione. Dove dovrei impostare gli indici dedicati per la replica ?? Sto assumendo lo stesso posto. Questa è una volta-per-webapp per scenario (sto pensando ad app_start)? – penderi

Problemi correlati