2011-11-03 2 views
5

r 질문과 실제로 RavenDb 문서를 살펴 보았습니다. RavenDb Index Replication Docs에는 약간의 것이 있지만, IndexReplicationDestination을 작성하는 방법 /시기/위치에 대한 지침이 보이지 않습니다.RavenDb 인덱스 복제를 설치하고 설정하는 방법

우리의 유스 케이스는 매우 간단합니다 (스파이크입니다). 우리는 현재 새로운 객체 (Cows)를 생성하여 Raven에 저장합니다. LINQ를 사용하여 동적으로 생성 된 몇 가지 검색어가 있습니다 (예 : from c in session.Query<Cows> select c).

이제 복제 할 색인을 어디에 정의해야하는지 알 수 없습니다. 어떤 아이디어? 나는 번들의 보류를 가지고와 (나는 그것이 RavenDB.1.0.499\server이 Raven.Server.exe을 포함 RavenDB.1.0.499\server\Plugins에 있어야 겠지) 서버 디렉토리에 추가 한

편집 : 감사 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 : // 소/목록 docs.Cows ALL 기타 사항 서보 -OFF (Q => 새로운 {상태 = q.Status})

c) 복제 문서를 만듭니다. 여기서 단서는 DOCUMENT입니다. 저장된 모든 것과 마찬가지로, 역시 문서입니다. 그래서 DB에 저장해야합니다 만든 후 :

var에 replicationDocument을 = 새로운 Raven.Bundles.IndexReplication.Data.IndexReplicationDestination { 아이디 = "까마귀/IndexReplication/Cows_List"ColumnsMapping = {{ "상태", " 상태 "}} ConnectionStringName ="Reports ", PrimaryKeyColumnName ="Id ", TableName ="cowSummaries " }; session.Store (replicationDocument); sesson.SaveChanges();

라) (예를 들어, MVC 응용 프로그램 또는 콘솔)

마) RDBMS 스키마 만들기 클라이언트 다음은이 있는지 확인하십시오. 나는 'cowReports'의 테이블이 있습니다.

이 TABLE [dbo가]를 CREATE [cowSummaries ( [ID] NVARCHAR의 NULL, [상태] NCHAR NULL)

내 특정 문제가 인덱스 문서를 추가하지 않은 가게로. 알아. facepalm. 물론 모두은 문서입니다. 매력처럼 작동합니다!

답변

1

두 가지를 정의해야합니다. a) 문서를 행 모양으로 변환하는 색인입니다. b) RavenDB에 연결 문자열 이름, 테이블 이름 및 매핑 할 열이 무엇인지 알려주는 문서

+0

감사합니다. Ayende - 이것은 RavenDb와 확립하기 까다로운 두 가지 중 하나입니다. 나머지는 매우 간단합니다.) 1) 어디서/언제 ReplicationDocument를 만들지, 한 번 세션 당입니까? 또는 앱? 나는 애플 리케이션을 추측한다 ... 2) ASP.Net 세션 관리 (나는 IDocumentStore를 삽입하고 싶지 않다. 스텁이나 모의에 대한 넓은 인터페이스이다.) - 차라리 대화를하고 싶다. – penderi

+0

좋아요 세션이 정렬됩니다 (비슷한 연습을 nHibernate/Monorail - HttpContext의 세션 저장). 하지만 언제나/언제 어떻게 rteplication 문서와 색인을 만들지는 모르겠지만 두려울 것입니다 ... 어떤 조언을 부탁드립니다. – penderi

+0

또한 .... 쿼리에 동적 인덱스를 사용하고 있습니다. 어디에서 복제 전용 인덱스를 설정할 수 있습니까 ?? 나는 같은 장소를 추측하고있다. 이 시나리오 당 한 번 웹 응용 프로그램입니까? (app_start를 생각하고 있습니다)? – penderi

관련 문제