2011-06-24 13 views
1

私はドキュメントストレージの概念を理解しようとしており、状況によってはどのように適用されるのか見当たりません。 ヘルプを検索するMongo DBのデータ構成を理解する

  • ユーザー
  • コメント何かで
  • など

    • 投稿
    • カテゴリー:たとえば、CMS /ブログエンジンの場合の形式でデータがあるかもしれませんMySQLにはそれぞれテーブルがあり、次に関連するデータの各セットの結合テーブルがあります。即ちposts_tablecategories_table、この場合categories_posts_table

      posts_tablecategories_tableカテゴリデータを含むであろう、ポストデータを含むであろうし、categories_posts_tableは、特定のポストに特定のカテゴリを関連付けるために使用される2つの外部キーを含むであろう。

      これはどのようにmongodbのようなものに変換されますか?

      { 
          "title" : "title", 
          "body" : "blah body", 
          "categories" : [ 
             "category1", 
             "category2" 
             ] 
          } 
      
      :シングルBSONドキュメントの出力はようになります

      • posts_collection

      :私は、この設定を見ることができる唯一の方法はモンゴで構成されている

      は何かに似ています

      それは理にかなっていますが、カテゴリはどこにでも複製されるようです。何らかの関係があっても、単にカテゴリ名を変更して、それをあなたのブログ投稿(?)全体に反映させることはできません。

      さらに、これらがバイナリ文書のようなもので、多くの領域を占有していたらどうでしょう?同じイメージを繰り返し複製するのではなく、関係がうまくいくように思えるでしょうか?

      私はこれはかなりオープンな質問だと思うが、私は精神的にそれがmongoのようなDBに収まるかどうかを知るために問題を取り除く方法について誰かの入力を探していた。同様に重要なのは、どのようにして1つの構造データが正しくなるかです。

      私はユーザーに触れていませんが、これはユーザーの種類のすべてが始まるので、最終的にユーザーのコレクション内に埋め込まれたドキュメントとして最終的に終わるようです。

      ありがとうございます。

    答えて

    3

    文書データベースについて興味深いのは、データの使用方法を本当に考える必要があることです。同じ情報を複数の場所に格納する(非正規化)ことは、ドキュメントデータベースでは問題ありません。したがって、の場合はUserというルートがあり、他のすべてが埋め込まれているとすれば正しいと思います。

    私の限られた経験から、特定のデータセットをモデル化する「正しい」方法はありません。将来、そのデータがどのように使用されるかについてです。

    別のドキュメントを参照することは可能です。たとえば、Postsコレクションが必要な場合は、それぞれPostのコレクションにUserというドキュメントをUsersコレクションに追加します。 Embed vs. Referenceについてのこの記事をご覧ください。

    関連する問題