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.
APICliente:
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!
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
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
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