MongoDB や他のドキュメント指向データベース システムはいつ使用すればよいですか? [closed] 質問する

MongoDB や他のドキュメント指向データベース システムはいつ使用すればよいですか? [closed] 質問する

私たちはビデオやオーディオクリップ、写真、ベクターグラフィックスのためのプラットフォームを提供しています。データベースバックエンドとしてMySQLからスタートし、最近はモンゴDBMongoDBはファイルのすべてのメタ情報を保存するのに適しています。たとえば、写真にはエクシフ情報に加えて、ビデオにはオーディオ トラックがあり、そのメタ情報も保存する必要があります。ビデオとベクター グラフィックスは共通のメタ情報などを共有していないため、MongoDB はこのような非構造化データを保存し、検索可能な状態に保つのに最適であることがわかります。

ただし、当社はプラットフォームの開発と機能の追加を続けています。次のステップの 1 つは、ユーザー向けのフォーラムを提供することです。ここで生じる疑問は、フォーラムやフォーラム投稿などを保存するのに適した MySQL データベースを使用するか、それともこれにも MongoDB を使用するかということです。

質問は、MongoDB をいつ使用し、RDBMS をいつ使用するかということです。選択肢があったら、mongoDB と MySQL のどちらを選択しますか。また、なぜそれを選択しますか。

ベストアンサー1

NoSQL: こんなに簡単だったらいいのに著者は MongoDB について次のように書いています。

MongoDB はキー/バリュー ストアではなく、それ以上のものです。RDBMS でもありません。私は MongoDB を本番環境で使用したことはありませんが、テスト アプリの作成で少し使用しました。非常に優れたツールです。非常にパフォーマンスが高く、フォールト トレランスと自動シャーディング (つまり、スケールする) を備えているか、またはすぐに備えられるようです。Mongo は、私がこれまでに見た中で、RDBMS の代替に最も近いものだと思います。すべてのデータ セットとアクセス パターンで機能するわけではありませんが、一般的な CRUD 用に構築されています。基本的に巨大なハッシュを格納し、それらのキーのいずれかを選択できることが、ほとんどの人がリレーショナル データベースを使用する目的です。DBが 3NF で、結合を行わない場合 (テーブルをいくつか選択してすべてのオブジェクトをまとめるだけ、つまりほとんどの人が Web アプリで行うこと)、MongoDB はおそらく最適です。

そして結論として:

本当に指摘すべきことは、データベースを選択できないために何かすごいものを作るのを妨げられているのなら、やり方が間違っているということです。MySQL を知っているなら、それを使ってください。実際に必要なときに最適化してください。AK/V ストアのように使用したり、RDBMS のように使用したりしてください。でも、何より、キラー アプリを構築してください。ほとんどのアプリでは、こうしたことは問題になりません。Facebook は今でも MySQL を多用しています。Wikipedia も MySQL を多用しています。FriendFeed も MySQL を多用しています。NoSQL は優れたツールですが、競争力にはならないことは確かですし、アプリを人気にすることもないでしょう。そして何よりも、ユーザーはこうしたことをまったく気にしません。

次のアプリは何で構築するでしょうか? おそらく Postgres でしょう。NoSQL を使用するでしょうか? 使用するかもしれません。Hadoop と Hive も使用するかもしれません。すべてをフラット ファイルに保存するかもしれません。Maglev をハッキングし始めるかもしれません。仕事に最適なものを使用します。 レポートが必要な場合は、NoSQL を使用しません。キャッシュが必要な場合は、おそらく Tokyo Tyrant を使用します。ACIDity が必要な場合は、NoSQL を使用しません。大量のカウンターが必要な場合は、Redis を使用します。トランザクションが必要な場合は、Postgres を使用します。 単一タイプのドキュメントが大量にある場合は、おそらく Mongo を使用します。1日に 10 億のオブジェクトを書き込む必要がある場合は、おそらく Voldemort を使用します。全文検索が必要な場合は、おそらく Solr を使用します。揮発性データの全文検索が必要な場合は、おそらく Sphinx を使用します。

私はこの記事が好きです。非常に有益で、NoSQL の状況と誇大宣伝についての概要がよくわかります。しかし、最も重要なのは、RDBMS と NoSQL のどちらを選択するかという点において、自分自身に適切な質問をすることが本当に役立つということです。私見では、読む価値があります。

記事への代替リンク

おすすめ記事