Subreddit
にはそれぞれPost
があり、それぞれPost
にはComment
が多いRedditを作成しているとします。そして、APIレスポンスは、おそらく次のようになります。Reduxでの正規化について
subreddits: [{
title: "food"
posts: [{
id: "",
body: "..",
comments: [{
id: ".."
body: "..",
}]
..morePosts
},
title: "culture"
posts: [{
id: "",
body: "..",
comments: [{
id: ".."
body: "..",
}]
..morePosts
},
]
しかしReduxのは、このようなネストされた状態を阻止するため、我々は減速にそれらを養う前に、我々は、データ構造を正規化します。その後、データは次のように表すことができます。
subredditByTitle: {
food: {
id: subreddit_1,
title: "food"
posts: [post_1, post_2]
}
culture: {
id: subreddit_2,
title: "culture"
posts: [post_3, post_4]
}
}
postsById: {
post_1: {
body: ".."
comments: [comment_1, comment_2]
},
post_2: {
body: "..",
comments: [comment_3, comment_4]
}
}
commentsById: {
comment_1: {
body: ".."
},
comment_2: {
body: ".."
}
}
しかし、私はMongoDBのを使用する場合、それは私がsubdocuments
を使用しています場合は特に、このようなバックエンドのデータを正規化するために少しぎこちない感じています。リレーショナルDBでは、すべてのDBテーブルに対してルックアップテーブル(例:PostsById
)を持たせることは理にかなっていますが、すべてのDBコレクションについて同じことをするのは意味がありますか?私の直感は、すべてを正規化しようとするのではなく、各文書に1つの減速機を持つ方が良いかもしれないが、ベストプラクティスが何であるかはわかりません。
レジュームでは、ドキュメントベースのデータを正規化する必要があるときに、 mongoを使用して開発することの最大の利点は、データのこの種の正規化と処理(結合など)を必要としないことです。 mongoのデータでreduxを使用するととても悪いです... –