まず、ドキュメントストアではなくKey-Valueストアであるため、リストからredisを削除することをお勧めします。RiakもKey-Valueストアですが、Rippleのようなライブラリを備えたドキュメントストアにすることもできます。
簡単に言うと、ドキュメントストアを使用してアプリケーションをモデル化するには、次のことを理解する必要があります。
- 独自のドキュメントに保存し、それに関連する別のドキュメントを持つデータ。そのドキュメントが他の多くのドキュメントで使用される場合は、それを独自のドキュメントでモデル化するのが理にかなっています。また、ドキュメントのクエリについても考慮する必要があります。頻繁にクエリを実行する場合は、埋め込まれたドキュメントをクエリするのが難しいため、独自のドキュメントに保存することをお勧めします。
- たとえば、複数のブログインスタンスがあるとすると、記事がブログドキュメント内に埋め込まれている場合でも、ブログと記事は独自のドキュメントに含まれている必要があります。
- もう1つの例は、ユーザーとロールです。これらのために別の文書を用意することは理にかなっています。私の場合、ユーザーに対してクエリを実行することがよくありますが、それが独自のドキュメントとして分離されていると簡単です。
別のドキュメント内に保存(埋め込み)するデータ。そのドキュメントが1つのドキュメントのみに属している場合は、別のドキュメント内に保存するのが適切なオプションである可能性があります。
- コメントは、別のドキュメント内に埋め込む方が理にかなっている場合があります
{ article : { comments : [{ content: 'yada yada', timestamp: '20/11/2010' }] } }
考慮したいもう1つの注意点は、埋め込みドキュメントのサイズがどれだけ大きくなるかです。これは、mongodbでは埋め込みドキュメントの最大サイズが5MBであるためです。
- どのデータをプレーン配列にする必要がありますか。例えば:
- タグは配列として保存するのが理にかなっています。
{ article: { tags: ['news','bar'] } }
- または、複数のIDを保存する場合、つまり複数のロールを持つユーザー
{ user: { role_ids: [1,2,3]}}
これは、ドキュメントストアを使用したモデリングの概要です。幸運を。