Как установить и настроить репликацию индекса RavenDb - PullRequest
5 голосов
/ 03 ноября 2011

r Я посмотрел на вопросы и действительно на документы RavenDb.В документации по репликации индексов RavenDb немного , но нет никаких указаний о том, как / когда / где создавать IndexReplicationDestination

Наш пример использования очень прост (это скачок).В настоящее время мы создаем новые объекты (Коровы) и храним их в Вороне.У нас есть пара запросов, создаваемых динамически с использованием LINQ (например, from c in session.Query<Cows> select c).

Теперь я не вижу, где мне следует определить индекс для репликации.Есть идеи?Я взял пакет и добавил его в каталог сервера (я предполагаю, что он должен быть в RavenDB.1.0.499\server\Plugins, где RavenDB.1.0.499\server содержит Raven.Server.exe)

Редактировать : Спасибо Ayende ... помог ответ ниже и в группах ravendb.Был момент лицевая сторона .Независимо от того, вот некоторые детали, которые могут помочь кому-то еще.Это действительно очень просто и действительно «просто работает»:

a) Убедитесь, что плагины подобраны.Вы можете просмотреть их в статистике - доступно через / localhost: 8080 / stats url (при условии настроек по умолчанию).Вы должны увидеть записи в «Расширениях», относящиеся к комплекту IndexReplication.

Если нет, убедитесь, что версии библиотек DLL (комплекта и сервера) совпадают

b) Убедитесь, что индекс, который вы хотите реплицировать, создан.Они могут быть созданы через клиентский API или HTTP API.

клиентский API:

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 (в студии): // Cows / List docs.Cows .Select (q =>new {Status = q.Status})

c) создать документ репликации.Ключ здесь - ДОКУМЕНТ.Как и все, что хранится, это тоже документ.Поэтому после создания его необходимо сохранить в Db:

var replicationDocument = new Raven.Bundles.IndexReplication.Data.IndexReplicationDestination {Id = "Raven / IndexReplication / Cows_List", ColumnsMapping = {{"Status", "Status "}}, ConnectionStringName =" Отчеты ", PrimaryKeyColumnName =" Id ", TableName =" cowSummaries "};session.Store (replicationDocument);sesson.SaveChanges ();

d) Убедитесь, что в КЛИЕНТЕ имеется следующее (например, приложение MVC или консоль)

e) Создайте схему RDBMS.У меня есть таблица в 'cowReports':

CREATE TABLE [dbo]. [CowSummaries] ([Id] nvarchar NULL, [Status] nchar NULL)

Моя конкретная проблема не состояла в добавлениииндекс документа в магазин.Я знаю. Facepalm .Конечно, все является документом.Работает как шарм!

1 Ответ

1 голос
/ 03 ноября 2011

Вам нужно определить две вещи.а) Индекс, который преобразует документ в форму строки.б) Документ, который сообщает RavenDB, что такое имя строки подключения, имя таблицы и столбцы для сопоставления

...