絶対に絶対に言ってはいけない理由

私のこの出版物は、記事「MongoDBを使用してはならない理由」の翻訳に対する完全な応答以上のものです 。 MongoDBから離れることを基本的に推奨するこの記事は、ハブで最も多作です。 そして、それは文のように聞こえます。 したがって、ハブを閉じて二度と読み取らないか、さらに否定的な反論を書き込むのが論理的です。 もちろん、私は評価とカルマを危険にさらす2番目のオプションを選択しました(コメントの極端な完全性のため)。



画像
自己皮肉の写真




データベース選択



信頼できる情報源「誰かが言う」と「他の人が言う」を参照して、著者はデータベースの選択を実証します。 多すぎるかもしれませんが、これらの「ソース」を、言及されたデータベースの開発者からの公式の推奨事項へのリンクでラップすることは素晴らしいことです。



しかし、代替手段は何ですか? グラフデータベースが最適であると主張する人もいますが、大規模なプロジェクトにはニッチすぎるため、それらは考慮しません。 他の人は、ドキュメンタリーはソーシャルデータに理想的であり、実際の使用に十分な主流だと言います。 人々がPostgreSQLよりもMongoDBがソーシャルデータの方がはるかに優れていると考える理由を見てみましょう。
グラフデータベースはソーシャルグラフを扱う大規模プロジェクト (???)にとってニッチすぎる(???)という主張は、最も信頼できるソースであっても正当化するのは非常に困難です。 私自身の経験から言えば、グラフデータベースは、その名前にもかかわらず、グラフ(ソーシャルグラフを含む)で完全に機能すると言えます。 もちろん、グラフデータベースをメインデータウェアハウスとして使用しないでください。 これらの目的のために、MySQL、MongoDB、Postgresなどのツールは依然として不可欠です。 同様に、たとえば全文検索が必要な場合は、メインデータウェアハウスと組み合わせてSphinxを使用し、RedisとMariaDBの間で苦痛を伴う選択を行いません。



データモデリング



公式ガイドの MongoDBでデータを正しくモデル化する方法について読むことができます。 通常、プロジェクトにサインアップする前にこれを実行し、その実装用のアーキテクチャソリューションとツールを正式に提供することをお勧めします。 はい、たとえドキュメントに40ページがあったとしても、まだ読む必要があります。 それ以外の場合は、適切なツールを不適切に選択したり、適切に使用しなかったりすると、プロジェクトを簡単に圧倒できます。 そして、コンポートがフォークで扱いにくいという事実についての面白い写真で大きな記事を書くこと。



このデータをネストされたオブジェクトのセット(キーと値のペアのセット)としてモデル化することもできます。 特定のシリーズに関する多くの情報は、ネストされたキーと値のセットの1つの大きな構造です。 シリーズ内には多くの季節があり、それぞれがオブジェクト(キーと値のペアのセット)でもあります。 各シーズン内で、それぞれがオブジェクトである一連のエピソードなど。 これは、MongoDBでデータをモデル化する方法です。 各シリーズは、1つのシリーズに関するすべての情報を含むドキュメントです。



シリーズには名前と季節の配列があります。 各シーズンは、メタデータと一連のエピソードを持つオブジェクトです。 同様に、各エピソードにはメタデータとレビューとアクターの配列があります。
サラがMongoDBのデータモデリングに関するマニュアルを読んだ場合、このデータベースでは複数のデータモデルを操作できることがわかります。 しかし、実際には、非常に簡単な質問が1つあります。著者が電卓を手に持ったことはありますか。 Googleやウィキペディアについても質問しません。 なんで? 一番長いシリーズをグーグルしましょう。 Guide Lightと呼ばれるこの傑作には、 18.262シリーズの多様性と哲学含まれています。 このような背景に対して、2,137シリーズのサンタバーバラは、映画芸術の星空の白い小人です。 しかし、これはすべての歌詞です。 今、私は再び退屈になっており、データベースを正式に選択する前に、推奨されるデータストレージモデルだけでなくこのデータベースの制限にも精通している必要があることを確認しています。 これらの制限の1つは最大ドキュメントサイズで、 16 MBを超えることはできません。 次に、電卓を取り出して保持し、描画して、魔法の計算を行います。これはDBAアーキテクトのスペルブックで読みました。



16  / 18.262  = 876 //   

      
      





. , ! , (!!!) . , , ? , , .



C , - .

, Diaspora, . , .
, . , . «best practice» Diaspora, , . , ? , , . . Skype , , . ! , ?



, . , , Aggregation Framework. , , , , Sisi:



db.actors.aggregate( [
   { $match : { name: "Sisi" } }
   { $group : { _id : "$movieId", count: { $sum : 1 } } },
   { $group : { _id : null, avgMovieCount : { $avg : "$count" } } }
] )
      
      





, . MongoDB ORM ODM. , (lazy loading). , , MapReduce. , .

MongoDB. , . . , .
Web 3.0, , . , , . .

. ?



. , : . , . , , , .
, . , , , , . , — , . .





, MongoDB.



cleg:

« » :









, - —
? ? , ? ? , , «». . , , , , . - , . , . , -, , - , MySQL, , , , .



gandjustas:

. (), . — , . — .



? .
. . schemaless, , . — . , — , . . , , — 100 ? MongoDB , . , schemaless. MongoDB . .





, , . . best practice. . .



All Articles