2017-09-09 8 views
2

クラスタ化された環境でJackutchbit 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を使用する同じJackrabbit OAKアプリケーションを実行する必要があるということです。私が最終的に望むのは、これらのリモートサーバーを介してデータの一部を断片化(または分割)して、ノード構造全体のさまざまなパスで編成することです。例えば

サーバ(A)
/a/*

サーバ(B)
でコンテンツを格納するための責任があるのならば/b/*

でコンテンツを格納するための責任がありますサーバー(A)は/b/*でコンテンツの読み取りまたは書き込みを行いたい場合、そのパスのノードにアクセスできます通常のJCRまたはOAK APIを使用して、ネットワークの詳細とサーバー(B)MongoDBへの接続からユーザーを完全に抽象化する必要があります。

このユースケースに関連する固いドキュメントはありますか?そうでない場合は、これを学ぶ最善の方法は何ですか?私はOAKソースコードを一日中散歩することができますが、文書化が非常に好ましいでしょう。

+0

私はこれがOakのクラスタリングの仕組みではないと思います。クラスタ内の各ノードは* all *ドキュメントにアクセスできる必要があります。 –

+1

@JulianReschke、私はOPがどのようにしてリポジトリをバックアップするmongoの設定を断片化するのか理解したかったと思います。 Afaiu、mongo shardingは、すべてのクライアントがすべての文書を読むことを許可します。つまり、あるクライアントが、非常に遠隔の可能性のある断片から最小限の文書を読み取ることができれば最高です。私は彼の例では、Aは主に/ a/*と関係しているべきであることを意味しています(ルートも読む必要があります) – catholicon

答えて

1

オークのMongodbの実装では、シャーディングの戦略はありません。この問題は、Oakによって保存されたMongo文書の_idが、同じサブツリーからのノードの確率的束が同じシャードインスタンス上にあるように、文書を複数の断片に渡さないという事実に本質的に起因する。ユースケースを処理するためにシャードキーを追加するという会話がありましたが、この時点ではシャードを必要とする魅力的なユースケースは見当たりませんでしたので、議論が進んでいませんでした。

しかし、afaik、あなたはシャードインスタンスを設定し、それに応じてmongouriを提供することができます。私が上で述べたことは、あなたが望むかもしれないほどうまく縮めることはないでしょう。また、シャードされていないセットアップでは処理できないセットアップも見ていません。

私はそれがあなたの質問に答えないことを知っていますが、多分それはあなたがその話題について多くを見つけることができなかった理由を示しているかもしれません。

+0

すばらしい説明をありがとう!私は自分自身でデータを「シャーディング」することで、複数のスタンドアロンのmongodbインスタンスをクラスタリングすることができます。幸いにも私のユースケースはかなりシンプルで、私はデータセットを簡単に分割することができます。私は、クラスタ内のさまざまなmongodbインスタンスを見つけて接続するために、何らかの形のサービス検出を実装することができます。しかし、この設定では、どのようにして1つのOAKインスタンスをさまざまなmongodbインスタンスに接続させるのか混乱します。それぞれに対して新しいRepositoryインスタンスを作成する必要はありますか?これは正しいアプローチですか? –

+1

私は技術的にあなたのコメントは異なる質問であり、おそらくSOポリシーとは違うと思う:)。とにかく、Oakクラスタは、1つのmongo dbセットアップ(単一インスタンス、レプリカ、シャードなど)にのみ接続します。説明しているパーティショニングのタイプは、Oakの上にあるアプリケーションでのみ実行できます。そして、はい、複数のオークインスタンスが必要です「これは正しいアプローチです」について:私はあなたが早期の最適化を行っていると思います。私は最初に複雑な設定に行くことはお勧めしません。また、ハードコーディングされたパーティショニングは、長期的には傷つく可能性があります。 – catholicon

関連する問題