2011-11-03 18 views
5

? He examinado las preguntas y, de hecho, los documentos de RavenDb. Hay un poco en RavenDb Index Replication Docs pero no parece haber ninguna guía sobre cómo/cuándo/dónde crear IndexReplicationDestination¿Cómo instalo y configuro la replicación del índice de RavenDb

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 con 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 controlar la haz y añadí al directorio de servidor (estoy suponiendo que debe estar en RavenDB.1.0.499\server\Plugins donde RavenDB.1.0.499\server contiene Raven.Server.exe)

Editar: Gracias Ayende ... la respuesta por debajo y en el ravendb grupos ayudaron. Hubo un momento facepalm. Independientemente de esto, 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 estén siendo recogidos. 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 garantizar las versiones de los archivos DLL (bundle) y del servidor son los mismos

b) Asegurar el índice que desea replicar ha sido creado. Se pueden crear a través de 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); 
    } 
} 

API HTTP (en estudio): // Vacas/Lista docs.Cows .Elija (q => nuevo estado = {} q.Status)

c) crea el documento de replicación. La clave aquí es DOCUMENTO. Como todo lo almacenado, también es un documento. Así que después de la creación se debe almacenar en el DB:

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

d) Asegurarse de que tiene lo siguiente en el cliente (por ejemplo MVC aplicación o consola)

e) Crear el esquema RDBMS. Tengo una tabla en 'cowReports':.

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

Mi problema particular no estaba agregando el documento de índice a la tienda. Lo sé. facepalm. Por supuesto todo es un documento. ¡Funciona de maravilla!

Respuesta

1

Tiene que definir dos cosas. a) Un índice que transforma el documento en la forma de fila. b) Un documento que le dice a RavenDB cuál es el nombre de la cadena de conexión, el nombre de la tabla y las columnas del mapa

+0

Gracias Ayende: esta es una de las 2 cosas que encuentro difíciles de establecer con RavenDb (el resto ha sido muy simple) 1) ¿Dónde/cuándo creo el ReplicationDocument, es una vez por sesión? o aplicación? Supongo que la aplicación ... 2) gestión de sesión con ASP.Net (no quiero inyectar IDocumentStore - es una interfaz amplia para Stub o Mock) - Prefiero tener una conversación (como nHiberante). – penderi

+0

Ok, las sesiones están ordenadas (estoy usando prácticas similares a nHibernate/Monorail - almacena sesión en HttpContext). Pero me temo que todavía no tengo claro cuándo/cómo crear el documento y el índice de replicación ... cualquier orientación apreciada. – penderi

+0

Además ... Estoy usando índices dinámicos para consultar. ¿Dónde instalaría los índices dedicados para la replicación? Estoy asumiendo el mismo lugar. ¿Es esto una vez por webapp por escenario (estoy pensando en app_start)? – penderi

Cuestiones relacionadas