28

最近、私はMongoDBを少し使っていますが、本当に気に入っていると言わざるを得ません。しかし、それは完全に異なるタイプのデータベースであり、私は使用されています。特定のタイプのデータには間違いなく優れていることに気づきましたが、高度に正規化されたデータベースの場合は、最良の選択ではない可能性があります。

しかし、私には、それはあなたが持っている可能性のあるほぼすべてのリレーショナルデータベースの代わりになり、ほとんどの場合、パフォーマンスが向上するように見えます。これは気が遠くなるようなことです。これは私にいくつかの質問をするように導きます:

  1. ドキュメント指向データベースは、次世代データベースとして開発されており、基本的にリレーショナルデータベースに完全に取って代わっていますか?
  2. ドキュメント指向データベースとリレーショナルデータベースの両方を、どちらか一方に適したさまざまなデータに並べて使用する方がプロジェクトがうまくいく可能性はありますか?
  3. ドキュメント指向データベースがリレーショナルデータベースを置き換えることを意図していない場合、リレーショナルデータベースで絶対的に優れている(またはその逆の)データベース構造の例を誰かが持っていますか?
4

7 に答える 7

36

ドキュメント指向データベースは、次世代データベースとして開発されており、基本的にリレーショナルデータベースに完全に取って代わっていますか?

いいえ。ドキュメント指向データベース(MongoDBなど)は、最新のWebサイトで通常見られるタイプのタスク(個々のアイテムまたはアイテムの小さなセットの高速検索)に非常に優れています。

しかし、それらはリレーショナルシステムといくつかの大きなトレードオフを行います。ACIDコンプライアンスなどがなければ、特定のRDBMSを置き換えることはできません。また、MongoDBのようなシステムを見ると、ACIDに準拠していないことが、非常に高速である大きな理由です。

ドキュメント指向データベースとリレーショナルデータベースの両方を、どちらか一方に適したさまざまなデータに並べて使用する方がプロジェクトがうまくいく可能性はありますか?

はい。実際、私は両方を使用する非常に大規模な本番Webサイトを運営しています。システムはMySQLで開始されましたが、その一部をMongoDBに移行しました。ただし、Key-Valueストアが必要であり、MySQLは1億5,000万レコードから1つのアイテムを見つけるのがあまり得意ではありません。

ドキュメント指向データベースがリレーショナルデータベースを置き換えることを意図していない場合、リレーショナルデータベースで絶対的に優れている(またはその逆の)データベース構造の例を誰かが持っていますか?

ドキュメント指向データベースは、「キー値」と単純で線形の「親子」関係に簡単に含まれるデータを格納するのに最適です。ここでの簡単な例は、ブログやWikiなどです。

ただし、リレーショナルデータベースは、「セットベース」になる傾向のあるレポートなどに強い影響力を持っています。

正直なところ、ほとんどのデータがドキュメント指向データベースによって「処理」されているが、レポートはMap-reduceジョブによって更新されるリレーショナルデータベースで行われている世界を見ることができます。

于 2010-05-24T07:09:52.283 に答える
5

これは実際には目的への適合性の問題です。

いくつかのテーブルを結合して、フィルター処理された一連の結果を返すことができるようにしたい場合は、リレーショナル データベースでのみ実行できます。信じられないほどのパフォーマンスが必要で、信じられないほどの量のデータがある場合は、列ファミリーまたはドキュメント指向のデータベースが本領を発揮します。

これは古典的なトレードオフです。リレーショナル データベースは、一連の機能全体を提供しますが、これにはパフォーマンス コストが伴います。結合、インデックス作成、スキャン、またはその他の機能のリスト全体を実行できなかった場合、すべてのデータを表示する必要がなくなるため、重要なデータを処理するために必要なパフォーマンスと分散が得られます。

また、このトピックに関する Ayende Rahien のブログをフォローすることをお勧めします。

http://ayende.com/blog/

于 2010-05-19T14:07:49.860 に答える
2

@Sohneeはその場にいます。そのリレーショナルデータベースを追加するかもしれません

  • 予期しない組み合わせで情報を取得するのに最適です。たとえそれが、別のデータウェアハウスではなく、時間に敏感な本番システムで実行される広範なレポートの悪い考えにつながる場合でも。
  • は成熟したテクノロジーであり、スタッフを簡単に見つけることができ、さまざまな問題(リレーショナルモデルの制限やSQLである不完全な実装を含む)に対する十分にテストされたソリューションを見つけることができます。

あなたが何をしたいのか、そしてあなたにとってどんな資質が重要なのかを自問してください。シェルスクリプトに関連するすべてのプログラミングを行うことができます。あなたは__したいですか?

于 2010-05-19T14:17:39.957 に答える
1

私は同じ質問をし続けています。それが私をここに導いたのです。私は MySQL と MongoDB の両方を使用しています (現在は連携していませんが、アイデアです)。正直に言って、二度と MySQL に触れないことをとても嬉しく思います。確かに「ACID」への準拠はありますが、MySQL でテーブルを修復する必要が生じたことはありませんか? データベースが破損したことがありますか? それは起こります。MySQL で他に問題が発生したことはありますか? ロック競合またはデッドロックはありますか? クラスタリングに問題はありますか? セットアップと構成はどのくらい簡単でしたか?

MongoDB...電源を入れるだけで完了です....そして自動シャーディングです。それは信じられないほど簡単で、信じられないほど高速です。それで、それについて考えてください。あなたの時間。

いいえ、JOIN はありませんが、JOIN によってデータ管理のニーズが 99% 以上軽減されるというのは完全に誤りです。MongoDB について説明しようとすると、よく反対されます。それに直面しましょう。人々は新しいことを学びたくないし、知っていることだけで十分だと考えています。もちろん、残りの人生で MySQL の使用をやめて、Web サイトを構築することもできます。それは機能します、私たちはそれが機能することを知っています. 失敗することもわかっています。そうでなければ、あなたは質問をすることはないでしょうし、ドキュメント指向のデータベースはあまり見かけないでしょう。はい、スケーリングすることはわかっていますが、スケーリングするのは面倒です。

また、画像からトラフィックとスケーリングを排除しましょう。セットアップを取り出します。では、使用に焦点を当てましょう。MySQL を使用したときの経験は何ですか? MySQL アーキテクチャと効率的なクエリの作成にどの程度精通していますか? EXPLAIN でクエリを調べるのにどのくらいの時間を費やしていますか? スキーマ図の作成にどのくらいの時間を費やしていますか? ... その時間を取り戻せと言います。それは他の場所で費やされた方がよいでしょう。

それは私の2セントです。私は MongoDB が大好きで、MySQL を二度と使用しないことを望んでいます。私が構築する Web サイトのタイプでは、MySQL が必要なくなる可能性が非常に高いです。私はまだMongoDBでMySQLをいつ使用したいかを調べようとしていますが、いつできるかではありません(正直に言って、データを保存します、おめでとう、大量のXMLファイルを書くこともできますが、それは良い考えではありません) 、しかし、どちらか一方を使用することが有益な場合。それまでの間、私は MongoDB を使って仕事をするつもりで、頭痛の種を減らします。

于 2010-07-29T04:32:25.577 に答える
0

マルチオブジェクト トランザクションが必要ない限り、特に Web アプリケーションのコンテキストでは、MongoDB は RDMBS の好ましい代替品になる可能性があります。速度、スキーマレス、およびドキュメント モデリングはすべて、この分野で役に立ちます。

于 2010-05-20T02:09:47.220 に答える
0

私の意見では、ドキュメント指向のデータベースは、

  1. 階層 (ツリー) モデルを使用してデータをより適切に表現するデータベース。これは Web サイト データベースでは一般的ではありません。
  2. Facebook や Amazon のデータベースのような膨大な量のデータを持つデータベース。この場合、リレーショナル モデルの利点を犠牲にする必要があります。
于 2011-11-25T21:03:24.817 に答える
-2

私の知る限り、ドキュメント データベースには JOIN がありません。これは、データ管理のニーズの 99% を超えるものにとって、かなり大きな障害となります。

Matthew Flaschen がコメントで指摘しているように、デスクトップ上であっても、SQLite などのデータベースは、これまで適切なファイル形式または XML を使用してきた領域に SQL セマンティクスを導入しています。

于 2010-05-19T14:05:50.620 に答える