【MongoDB】MongoDBとは?MongoDBの特徴は?MongoDB の適用可能なシナリオは何ですか?

MongoDB データベースとは何ですか?

MongoDB は、航海データ ストレージをサポートするオープン ソースの高性能ドキュメント データベースです。

MongoDB は効率的な非リレーショナル データベースです (テーブル リレーションシップはサポートされていません。単一のテーブルのみを操作できます)。

MongoDB はリレーショナル データベースと非リレーショナル データベースの間の製品です. 非リレーショナル データベースの中で最も機能的であり, リレーショナル データベースに最も似ています. サポートするデータ構造は非常に緩く, json に似た bson 形式です.であるため、複雑なデータを格納できます。

MongoDB は NoSQL データベース製品の 1 つで、そのストレージ タイプは MySQL に似ており、特定のフィールドを介したクエリも実行できるため、リレーショナル データベース (MySQL) に最も近い非リレーショナル データベースと言う人もいます。 )。

MongoDB データベースの特徴は何ですか?

データ保存方式:メモリ+ディスク

高いスケーラビリティ:組み込みのデータ シャーディングで実現

特徴1:データの保存方法 - メモリ+ディスク

クライアントはデータのために MongoDB と対話します。MongoDB にはメモリとディスクの 2 つの部分が含まれます。

        クエリの場合、クライアントの最初のデータ操作はメモリ上で実行され、最初にメモリ内で検索されるため、クエリ速度が非常に高速です; メモリが十分に大きい場合は、メモリ内で直接クエリを実行して、回避とディスクの相互作用; メモリが不足している場合は、ディスク内のデータを見つける必要があります。

        保存は、クライアントが行うデータ操作を直接メモリに保存し、直接操作はメモリなので、保存速度が比較的速く、効率が高い。

ここで問題になるのですが、メモリーにデータが入っているのに、サーバーを再起動したり、電源を切ったり、落としたりすると、メモリーのデータが消えてしまうのでしょうか?

        オペレーティング システムのメカニズムの助けを借りて、メモリ内のデータは自動的にディスクにマップされますが、60 秒ごとに書き込まれる時間規則があります。

これでデータ損失の問題を解決できますか? もちろん違います!

メモリにデータが書き込まれているが、ディスクと同期されていない場合、この時点で突然電源が切断されると、60 秒間同期されていないデータは失われます。

これは、メモリ上で直接動作するため、MongoDB がより効率的である理由も説明しています。同時に、MongoDB にはメモリとディスク間のデータ同期、つまりディスク フラッシュのプロセスが含まれるため、データを失うリスクもあります。

この問題を解決するために、MongoDB は構造を最適化します。

構造最適化

        同様に、MongoDB はメモリとディスクの 2 つの部分に分割されますが、違いは、メモリとディスクが 2 つの部分に分割され、一方がログ ファイルで、もう一方が実際のビジネス データであるという点です。クライアントがメモリに要求を送信すると、まず操作のステートメントをログに記録し、次にそれをビジネス データのメモリ部分に書き込みます。その後、メモリ内のログは 10ms ごとにレコード データをディスクのログに同期し、メモリ内の業務データ部分も 60 秒ごとにディスクの業務データ部分に同期します。

これを行う利点は、データ同期時間の範囲が狭められることです。

        メモリがログ レコードを介してデータを書き込むと、突然クラッシュします. メモリとディスクは 60 秒のデータを失いますが、ログ間のデータ同期は 10 ミリ秒の短い時間に設定されています. サーバーが再起動すると、ディスク ログは比較中です.ビジネスデータ部分を含むファイル部分は、失われたデータを見つけてデータの回復を実行します。

        唯一の欠点は、同期データ時間は短縮されますが、それでも 10ms のデータが失われることです。どんなに頑張っても、MongoDB は一定期間データを失います。

        一般に、MongoDB の最初の機能はメモリ + ディスクにデータを格納することです; クライアントは基本的にメモリ上で動作し、裏ではオペレーティング システムがメモリ内のデータをディスクと同期させますが、これによりデータが失われる可能性があります。メモリ内にあるため、読み取りおよび書き込み操作の効率は比較的高くなります。

特長2:ビルトインデータシャーディングによる高いスケーラビリティ

これは、MongoDB を使用するときによく発生します。

        MongDB 自体のハードディスクのストレージ容量が限られているため、冗長データを保存できない場合があります。この場合、どうすればよいですか? MongoDB は組み込みのデータ フラグメンテーションを使用して、複数の MongoDB サーバーを直列に接続できます。各サーバーは一部を格納するため、格納されるデータの量が増加します。

たとえば、3 台の MongoDB サーバー A、B、および C があり、各サーバーが 500 GB をサポートできるため、3 台のサーバーは 1.5 TB のデータを連続して格納できます。

このように、MongoDB の組み込みデータ シャーディングを使用すると、大量のデータを簡単に保存できます。これは、MongoDB の大規模なデータ ストレージの基礎も築きました。もちろん、MySQL もデータ シャーディングをサポートしていますが、サードパーティのサービスとコンポーネントが必要であり、実装コストが比較的高くなります。

 データ ストレージと高いスケーラビリティの 2 つの特徴が、MongoDB の高いパフォーマンスと大規模なストレージ サポートを説明しています。


MongoDB の適用可能なシナリオは何ですか?

1. ゲーム業界:ゲーム機器データ、ゲーム小道具データ

        これらのデータは非常に頻繁に変更され、多くのデータがあります。

2. 物流産業:地理的位置情報、膨大なデータ

        複数の地理的位置情報が直列に接続され、その軌跡が地図上に表示されます。物流業界のデータ量は非常に多く、住所の位置座標情報は常にデータベースに保存されています。同時に、これらの座標情報を保存することで、近くにいる人を探すなど、さまざまな用途に使用できます。

3.生放送業界:生放送データ、ファンデータ、報酬データ

        これらのデータの変更頻度は非常に速く、データ量も非常に多いです。

4. ログデータ

        プロジェクトのいくつかの重要なログを保存する必要があり、ログのデータ量も膨大で、構造が変更可能です。

上記の要件を満たしていれば、データを MongoDB データベースに保存できます。


おすすめ

転載: blog.csdn.net/zsy3757486/article/details/130209352