1

私は最近 MongoDB を紹介されましたが、(すべてのプロジェクトで使用した MySQL と比較して) とても気に入っています。

ただし、特定の状況では、単純な ID を使用して相互に「リンク」しているドキュメントでデータを保存する方が理にかなっています (重複データを減らすため)。

たとえば、ユーザーの場所が実際には ID であるドキュメントがある場合がCountryあります(ドキュメントにはより多くのデータが含まれているため、各ユーザーでデータを複製しても意味がありません)。UserCountryCountryCountry

私が興味を持っているのは、適切な関係データベースを使用する場合と比較して、MongoDB が劣っているのはなぜですか?

(MongoDB で 2 つのトランザクションを行うのではなく) 結合を行うことでトランザクションを節約できるからでしょうか?

4

3 に答える 3

1

それは良い質問です..!!

あなたが説明したデータのタイプに nosql db を使用しても間違いはないと思います。単純なユースケースでは、完全にうまく機能します。

唯一のポイントは、適切な関係が定義された WELL STRUCTURED DATA.. の格納とクエリの目的を果たすために、リレーショナル データベースがかなり前に設計されたことです。したがって、適切に構造化された大量のデータの場合、提供されるパフォーマンスと機能は、nosql データベースによって提供されるものよりもはるかに多くなります。彼らはより成熟しているので..彼らの球技..!!

一方、nosql データベースは非常に大量の非構造化データを処理するように設計されており、分散環境のスケーリングをすぐにサポートできます。だから、今では完全に別のボールゲームです..

基本的にデータの扱いが異なるため、特定のデータを取得するための戦略/実行計画が異なります。

于 2013-10-05T17:08:39.140 に答える
0

MongoDB は、複数のサーバーにわたってスケーラブルになるようにゼロから設計されました。MongoDB データベースが 1 つのサーバーに対して遅すぎたり、大きすぎたりした場合は、より大きなコレクションを「分割」してサーバーを追加できます。これは、コレクションが異なるサーバー間で分割され、それぞれがコレクションの異なる部分を管理する責任があることを意味します。

MongoDB が JOIN を行わない理由は、1 つまたは両方のコレクションが複数のノードに分割されている場合、JOIN を適切に実行することができないためです。JOIN では、テーブル/コレクション A の各エントリをテーブル/コレクション B の各エントリと比較する必要があります。すべてのデータが 1 つのサーバー上にある場合は、このためのショートカットがあります。しかし、データが複数のサーバーに分散されている場合、大量のデータをサーバー間で比較および同期する必要があります。これには大量のネットワーク トラフィックが必要となり、操作が非常に遅くなり、コストがかかります。

于 2013-10-05T18:03:41.370 に答える
0

国とユーザーの 2 つのテーブルしかないのは正しいですか。もしそうなら、複製された唯一のデータは外部キーであるように思えますが、これは大したことではありません。それ以上の重複がある場合は、DB の設計自体に問題があります。

概念的には、NOSQL で実行できますが、なぜでしょうか? NOSQL が新しいという理由だけでしょうか。では、学習するために実行してください。どうやら、アプリケーションはすでにリレーショナルで実行されています。データが MongoDB の別々のドキュメントに保存されていて、それらを相互に関連付けたい場合は、リンクを使用する必要があります。これは、結合よりも作業が多く、遅くなります。リンクを保存する必要がありますが、これは外部キーを保存することに勝るものはありません。または、MongoDB で 1 つのドキュメントを別のドキュメントに埋め込むことができます。これにより、重複が増える可能性さえあります。

現在 MySQL で実行されている場合、分散サーバーでは実行されていないため、Mongo の分散サーバーの使用は関係ありません。それを利用するには、サーバーを追加する必要があります。テーブルがリレーショナルで適切にインデックス付けされている場合、大量のデータを検索する必要はありません。

ただし、これは複雑なアプリケーションではなく、どちらも使用できます。データがリレーショナルの MPP 環境に保存されている場合、データは非常にうまく動作し、大量のデータを検索する必要はまったくありません。ただし、MPP でパーティショニング キーを選択するには、次の 2 つの要件があります。1. データが均等に分散されるものを選択します。2. データのコロケーションを可能にするキーを選択します。両方のファイルでパーティショニング キー (シャード キー) と同じキーを使用することをお勧めします。

私は MongoDB が大好きですが、アプリを移行する価値はありません。

于 2014-01-15T01:12:07.043 に答える