如何安装和设置RavenDb索引复制

时间:2011-11-03 16:25:06

标签: replication ravendb

我已经看过问题,甚至是RavenDb文档。在RavenDb Index Replication Docs有一点点,但似乎没有关于如何/何时/何地创建IndexReplicationDestination的指导

我们的用例非常简单(它是一个尖峰)。我们目前创建新对象(Cows)并将它们存储在Raven中。我们使用LINQ动态创建了几个查询(例如from c in session.Query<Cows> select c)。

现在我看不出应该在哪里定义要复制的索引。有任何想法吗?我已经掌握了捆绑包并将其添加到服务器目录中(我假设它应该在RavenDB.1.0.499\server\PluginsRavenDB.1.0.499\server包含Raven.Server.exe)

编辑:感谢Ayende ......以下答案和ravendb小组的帮助。有一个 facepalm 时刻。无论这里有一些可能对其他人有帮助的细节。这真的很容易,而且“确实有效”:

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(在工作室中): //牛/名单 docs.Cows     。选择(q =&gt; new {Status = q.Status})

c)创建复制文档。这里的线索是文件。就像存储的所有内容一样,它也是一个文档。所以在创建之后它必须存储在Db中:

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

d)确保您在CLIENT中有以下内容(例如MVC应用程序或控制台)

e)创建RDBMS架构。我在'cowReports'中有一张表:

CREATE TABLE [dbo]。[cowSummaries](       [Id] nvarchar NULL,       [状态] nchar NULL)

我的特殊问题是没有将索引文档添加到商店。我知道。 捂脸。当然一切都是一份文件。像魅力一样工作!

1 个答案:

答案 0 :(得分:1)

你需要定义两件事。 a)将文档转换为行形状的索引。 b)告诉RavenDB什么是连接字符串名称,表名和要映射的列的文档