2017-09-09 20 views
2

경로별로 샤딩 노드 저장소를 통해 클러스터 환경에서 Jackrabbit OAK를 구성하고 사용하기에 충분한 설명서와 예제를 찾기 위해 고심하고 있습니다. 몇 가지 참조 정보가 있지만 정보가 거의없고 OAK 또는 NodeStore API가이 기능을 찾을만큼 충분히 직관적이지 않기 때문에 이것이 가능하다는 것을 알고 있습니다.Apache Jackrabbit OAK - Sharding DocumentNodeStore를 노드 경로별로 클러스터에 적용

다양한 샤딩 전략을 나열한이 PDF의 슬라이드 17을 살펴보십시오. http://events.linuxfoundation.org/sites/events/files/slides/the%20architecture%20of%20Oak.pdf

내 사용 사례 나는 여러 원격 서버 노드 및 BLOB 저장을 위해 MongoDB를 힘 입어 DocumentNodeStore를 사용하는 것과 동일한 잭 래빗 OAK 응용 프로그램을 실행하는 모든이 필요가있다. 궁극적으로 원하는 것은 전체 노드 구조에서 다른 경로로 구성된 이러한 원격 서버에서 데이터의 일부를 분할 (또는 분할)하는 것입니다.

:

서버 (A)
/a/*

서버 (B)
/b/*

경우에 콘텐츠를 저장하기위한 책임인가에 콘텐츠를 저장하기위한 책임인가 서버 (A)가 /b/*에서 내용을 읽거나 쓰려면 해당 경로의 노드에 액세스 할 수 있습니다. 일반 JCR 또는 OAK API를 사용하여 네트워크 세부 정보와 서버 (B) MongoDB에 대한 연결에서 사용자를 완전히 추상화해야합니다.

이 사용 사례와 관련된 확실한 설명서가 있습니까? 그렇지 않다면, 이것을 배우는 가장 좋은 방법은 무엇입니까? 하루 종일 OAK 소스 코드를 방황 할 수는 있지만 문서화가 더 선호 될 것입니다.

+0

오크에서 클러스터링이 작동하는 방식이라고 생각하지 않습니다. 클러스터의 각 노드는 * 모든 * 문서에 액세스 할 수 있어야합니다. –

+1

@ JulianReschke, 나는 OP가 어떻게 저장소를 뒷받침하는 mongo 설치가 sharded 될 수 있는지 이해하고 싶다고 생각합니다. Afaiu, mongo sharding은 모든 클라이언트가 모든 문서를 읽을 수 있도록 허용합니다. 한 클라이언트가 매우 먼 원격 문서의 일부 인스턴스에서 최소의 문서를 읽을 수 있다면 가장 좋습니다. 나는 그의 예에서 A가 대부분/a/*와 관련이 있어야한다는 것을 의미한다. (확실한 루트는 역시 읽혀질 필요가있다.) – catholicon

답변

1

현재 Oaks의 Mongodb 구현에는 샤딩 전략이 없습니다. 문제는 본질적으로 오크에 저장된 Mongo 문서의 _id은 동일한 하위 트리의 노드가 동일한 샤드 인스턴스에 놓일 확률로 여러 조각에 문서를 넣지 않는다는 사실에 기인합니다. 유스 케이스를 처리하기 위해 샤드 키를 추가하는 대화가 있었지만이 시점에서 우리는 샤드가 필요한 강력한 유스 케이스를 보지 못했기 때문에 토론이 많이 진행되지 않았습니다.

그건 그렇고, afaik, 당신은 샤드 드 인스턴스를 설정하고 그에 따라 mongouri를 제공 할 수 있습니다. 위에서 말한 것은 당신이 원했던 것처럼 잘 확장되지 않습니다. 또한 비 샤드 설정으로 처리 할 수없는 설정을 보지 못했습니다.

나는 그것이 당신의 질문에 대답하지 않는다는 것을 알고 있지만 어쩌면 당신이 그 주제에 관해 많은 것을 찾을 수 없었던 이유 일 수도 있습니다.

+0

큰 설명에 감사드립니다! 나는 데이터 자체를 "샤딩 (sharding)"함으로써 여러 독립형 mongodb 인스턴스를 클러스터링하는 것으로 벗어날 수 있다고 생각한다. 다행히도 유스 케이스는 매우 간단하며 데이터 세트를 쉽게 분할 할 수 있습니다.클러스터의 다양한 mongodb 인스턴스를 찾아서 연결할 서비스 검색의 일부 형태를 구현할 수 있습니다. 그러나이 설정을 사용하면 단일 OAK 인스턴스를 여러 mongodb 인스턴스에 연결하는 방법을 혼동합니다. 각각에 대해 새 Repository 인스턴스를 만들어야합니까? 이것이 올바른 접근 방법입니까? –

+1

나는 기술적으로 당신의 의견이 다른 질문이고 아마도 SO 정책에 맞다고 생각합니다. :) 어쨌든 오크 클러스터는 하나의 몽고 db 설정 (단일 인스턴스, 복제, 샤드, 뭐든간에)에만 연결됩니다. 설명하는 파티션 유형은 오크 위에있는 응용 프로그램에서만 수행 할 수 있습니다. 그리고 네, 당신은 애플 리케이션이 그 사이에서 멀티플렉싱하는 여러 오크 인스턴스가 필요할 것입니다. "이것은 올바른 접근 방식입니다."에 대해 : 저는 여러분이 조기 최적화를 수행하고 있다고 생각합니다. 처음에는 복잡한 설정을하지 않을 것을 제안합니다. 또한 하드 코딩 된 파티셔닝은 결국에는 아플 수 있습니다. – catholicon