2011-12-05 18 views
0

これについては確かな答えが見つからないようです。私はラベンダーに来るときは初心者なので、どんな助けでも大歓迎です。私は再帰的なメニューを構築しようとしています。これを行う最善の方法は何でしょうか?私はこのフィードRavenDb - Recursive queries/indexes, for Hierarchical Documentを見て、「お勧め」の解決策を見つけることができませんでした。すべての子ドキュメントを親ドキュメント内に非正規化データとして保存するだけですか?私はドキュメント/ページのidとドキュメント/ページ 'slug'を格納することを考えていました。これはメニュー作成時に必要なすべての情報ですが、ページタイトルが変更されるとどうなりますか?私はその後、ページのスラッグを変更する必要があります。つまり、ページの親を更新する必要があります。ページが削除されるとどうなりますか?パッチを適用するだけですか?この方法とライブプロジェクションの使用方法はどのように違いますか?誰かがRavendbを使って階層ツリーアプリケーションを構築しているとすれば、それは「ベストプラクティス」を模倣しているので、私は永遠に感謝しています。Ravendbの再帰メニュー

タイロン

+0

Tyroneのように、「正しい」、「最高の」ソリューションはありません。 Ravenの[Authorization Bundle](http://ravendb.net/bundles/authorization)に似た何かを使用して、すべてのデータを1つのドキュメントに保存する(ページ数に応じて)あなたは達成しようとしていることをさらに説明できますか? –

+0

こんにちはカルロス、私は階層的なメニューを構築しようとしていたが、何が「最良の」または正しい方法であると考えられているのだろうか? – TYRONEMICHAEL

答えて

0

おかげでどのようにメニューを実装していますか?このTree implementationを参考にしてみてください。

メニュー(ツリー構造)のデータ全体をRavenDBに1つのドキュメントとして保存することから始めます。

RavenDBのクライアントはキャッシュの面で非常に優れているので、常にメモリに格納されるような大きなドキュメントをナビゲーションに使用しても問題はありません。

+0

どこかの例を見つけましたか?フィールドを持つすべてのページに単一のドキュメントを使用するか、すべてのフィールドを含む元のドキュメントへの正規化された参照を持つ単一のドキュメントを使用するだけですか? – TYRONEMICHAEL

+0

こんにちはTyrone、私はメニュー構造を格納するための単一のドキュメントを提案していた。各メニューノードは、各ページがドキュメントであるためページコンテンツへの参照を有する。 –