¿Cómo instalo y configuro la replicación del índice RavenDb
r He examinado las preguntas y, de hecho, los documentos de RavenDb. Hay un poco enRavenDb Docs de replicación de índice pero no parece haber ninguna guía sobre cómo / cuándo / dónde crear IndexReplicationDestination
Nuestro caso de uso es muy simple (es un pico). Actualmente creamos nuevos objetos (vacas) y los almacenamos en Raven. Tenemos un par de consultas creadas dinámicamente usando LINQ (por ejemplo,from c in session.Query<Cows> select c
).
Ahora no puedo ver dónde debo definir el índice para replicar. ¿Algunas ideas? Tengo el paquete y lo agregué al directorio del servidor (supongo que debería estar enRavenDB.1.0.499\server\Plugins
dóndeRavenDB.1.0.499\server
contiene Raven.Server.exe)
Edita: Gracias Ayende ... la respuesta a continuación y en los grupos ravendb ayudó. Hubo un facepalm momento. Independientemente, aquí hay algunos detalles que pueden ayudar a alguien más. Realmente es muy fácil y de hecho 'simplemente funciona':
a) Asegúrese de que los complementos se están recogiendo. Puede verlos en las estadísticas, disponibles a través de / localhost: 8080 / stats url (asumiendo la configuración predeterminada). Debería ver entradas en 'Extensiones' con respecto al paquete IndexReplication.
Si no está presente, asegúrese de que las versiones de las DLL (paquete y servidor) sean las mismas
b) Asegúrese de que se haya creado el índice que desea replicar. Se pueden crear a través de la API del cliente o la API HTTP.
API del 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 (en estudio): // Cows / List docs.Cows .Select (q => new {Status = q.Status})
c) crea el documento de replicación. La pista aquí es DOCUMENTO. Como todo lo almacenado, también es un documento. Entonces, después de crearlo, debe almacenarse en el Db:
var replicationDocument = new Raven.Bundles.IndexReplication.Data.IndexReplicationDestination {Id = "Raven / IndexReplication / Cows_List", ColumnsMapping = {{"Status", "Status"}}, ConnectionStringName = "Reports", PrimaryKeyColumnName = "Id" , TableName = "cowSummaries"}; session.Store (replicationDocument); sesson.SaveChanges ();
d) Asegúrese de tener lo siguiente en el CLIENTE (por ejemplo, aplicación o consola MVC)
e) Cree el esquema RDBMS. Tengo una tabla en 'cowReports':
CREATE TABLE [dbo]. [CowSummaries] ([Id] nvarchar NULL, [Status] nchar NULL)
Mi problema particular no era agregar el documento de índice a la tienda. Lo sé. @ facepalm. Por supuestotod es un documento. ¡Funciona de maravilla