MySQLは、MongoDBのとRedisの違い

NoSQLのはだけでなく、SQLの略で、非リレーショナルデータベースを理解することができる、データベース設計の新しい画期的な方法ですが、それは、従来のリレーショナル・データベースに代わるものではありません異なる表現した、設計されていますデータベース設計のアイデア。

MongoDBは:
これは、データが内部メモリ内にある、インメモリデータベースです。
ほとんどのメモリ内のデータに対する操作が、メモリは簡単なのMongoDBデータベースではありません。
MongoDBのは、C ++言語で書かれ、それはオープンソースデータベース分散ファイルシステムベースのストレージです。
高負荷の場合には、より多くのノードを追加するには、サーバーのパフォーマンスを確保することができます。
MongoDBのは、WEBアプリケーションのためのスケーラブルで高性能データ・ストレージ・ソリューションを提供するように設計されています。

MongoDBのデータは、鍵(キー=>値)ペアの文書データ構造として記憶されます。JSONオブジェクトに類似のMongoDBドキュメント。フィールドの値は、他のドキュメント、アレイおよびドキュメントの配列を含むことができます。

MongoDBの保存特性
伝統的なリレーショナルデータベース、データがメディアの形式で格納され、各フォームは、列の縦方向と横方向の両方の行を有します。

したがって、比較MySQLのように、直感的な方法でのMongoDBドキュメントは、ストアデータを完成させます。それは非常にJSON形式で定義されたJavaScriptに似ているが、MongoDBのデータベースに格納されたデータは、文書に対する操作のシーケンスを増加すると、最終的には、実際にBSONと呼ばれているディスクフォーマットに堆積バイナリJSONいます。

MongoDBのアプリケーションシナリオ
一方では、開発者のために、ビジネスのニーズやデータの特定のフォーマットにつながったプロジェクトの初期段階は、明確に定義することができないので、それがある場合、MongoDBの独特の特徴が前面に来ます。従来のリレーショナルデータベースと比較すると、それが延長されることは非常に簡単ですが、それはまた、コードを書くために大きな利便性をもたらします。

ビジネス要件は、それから、この点でのMongoDB比較的高いか、このタイプの用途のために適切でない場合でも、トランザクションデータのMongoDBのサポートとの間の関係は、比較的弱いです。
非リレーショナルデータベース(のNoSQL)、文書データベースに属します。まずそのデータxml、jsonの、BSON型システムを格納できる文書データベースを説明します。階層ツリーデータ構造を提示し、自己記述データ(自己記述)が含まれています。キー(キー=>値)ペアのデータ構造。

ストレージ:+仮想メモリの永続性。
永続化の方法:
すべてのデータは、実際には、すべてのデータがのmmap経由でメモリの領域にマッピングされて動作するように、MongoDBののハードドライブに保存されています。
次に、この領域のデータを変更するMongoDBは、断片化された操作を避けることは困難です。
ハードディスクへのmmapフラッシュ上のコンテンツについては、システムがダウンする前に、ハードドライブにフラッシュデータをのmmap、MongoDBのは、メモリ内のデータを変更した場合、物事のオペレーティングシステムである、そう、データが失われます。

主な特長は:
MongoDBはドキュメント指向ストレージを提供し、操作が比較的単純で簡単です。
:あなたは(姓=「サミール」、住所などのMongoDBレコードインデックス内の任意のプロパティを設定することができます =「8ガンジーの道」) より高速並べ替えを有効にします。
あなたはMongoDBの強力なスケーラビリティを行っており、ミラーリングローカルまたはネットワークを介してデータを作成することができます。
負荷が増加する(より多くのストレージスペースとより多くの処理能力を必要とする)場合には、これは、断片化と呼ばれている別のノード上のコンピュータネットワークに分散させることができます。
MongoDBは豊富なクエリ式をサポートしています。formタグを使用して、JSONクエリー命令を容易に文書埋め込みオブジェクトと配列を照会することができます。
MongoDBは、更新()コマンドを使用すると、文書(データ)または指定されたデータフィールドのいくつかの完全な交換を実施します。
マップ/それは主にデータ処理とバッチ重合操作に使用されるのMongoDBを減らします。
マップと減らします。地図機能は、レコードセットのすべてをEMIT(キー、値)を呼び出し、渡されたキー値は、関数の処理を削減します。
マップと削減機能は、JavaScriptで記述された関数であり、db.runCommandかのMapReduce MapReduceの操作コマンドで実行することができます。
GridFSは、MongoDBの中に内蔵された機能は、小さな多数のファイルを格納するために使用することができます。
MongoDBは、サーバーがスクリプトを実行することができます、あなたは、サーバー上で直接実行し、関数を記述するためにJavascriptを使用することができ、あなたが関数定義をサーバーに格納されて置くことができ、あなたが直接、次の時間を呼び出すことができます。
MongoDBはさまざまなプログラミング言語をサポートしていますRUBY、PYTHON、JAVA、C ++、PHP、C#のと他の言語。

1.これは、MongoDBの展開に大きな利便性を提供しGirdFSと呼ばれる分散ファイルシステム、内側に来ます。そして、それ以前のMySQLデータベースのように、市場がサブテーブルを展開する多くの異なるオプションがありますが、これは、結局、MongoDBの直接の公式サポートほど良好ではない、それはより便利です。
また2.機能的な観点から、この支持体はGROUPBY機能ではなく、統計データでMySQLの拡張版の等価物、まだ比較的簡単であるが、動作の枠組みを地図減らすための内部のMongoDB自己内蔵サポート簡単に来ます。
データベース3. MongoDBのデータはドキュメントがマップされたメモリにロードされている方法の後に開始します。メモリが非常に豊富であるならば、それは非常に検索データベースをスピードアップし、結局、メモリI / Oの効率がディスクよりもはるかに高いです。
ストレージ用BSON構造(バイナリ)にMongoDBは、大容量データストレージのための非常に明確な利点を有します。

監視
ネットワークおよびシステム監視ツールMuninのはMongoDBのに使用されるプラグインとして、MongoDBのを提供します。
プラグインのMongoDBとして適用さGangila MongoDBの工具性能監視システム。
GUIベースのオープンソースツールサボテンは、CPU負荷、ネットワーク帯域幅の利用率を表示するため、それはまた、MongoDBのを監視するために使用されるプラグインを提供します。
クエリ:クエリのMongoDBのユニークな方法です。
適したシーン:ようにイベントを記録、またはコンテンツ管理プラットフォームをブログや。
建築の特徴:高可用性は、レプリカセット、および断片化によって達成することができます。
データ処理:データはハードディスクに保存されたデータですが、頻繁に読み出しがメモリにロードされ、物理メモリがデータを読み書きの高速メモリを達成するために必要。
成熟度と人気:低満期の新しいデータベース、群集のための最も近いリレーショナルデータベースにおけるNO SQLデータベース、よりよくDBの一つは、常に成長しません。
MongoDBの利点:
優れ1.パフォーマンス:高速!メモリの適切な量でのMongoDBのパフォーマンスレベルは非常に高速であり、それは、すぐにデータの読み書きを行うことは非常に高温になり、物理メモリに格納されたデータを加熱する
サードパーティのサポートが豊富(これは他のです。2.高拡大をいいえSQLの比較は、MongoDBはまた)利点を持っていない
3.自分のフェイルオーバー・メカニズムを!
4.弱一貫性(均一な最終)、より良好なユーザのアクセス速度ことを保証するために、
文書の構造は、データをより簡単にアクセスすることができる。5.ストレージ:JSON記憶フォーマット
6.サポート大記憶容量、GridFSを内蔵
7内蔵シャーディングを

MongoDBの短所:
主なものは何もメカニズムではありません!

①のMongoDBは(主な欠点)トランザクション操作をサポートしていない
②MongoDBのがあまりにも多くのスペースを取る
③のMongoDBはMySQLのメンテナンスツールのように成熟していないで、これらの操作は、開発者やIT分野のために注目すべきです


Redisの:
それは手紙メモリデータベースです。
永続化の方法:
Redisのすべてのデータがメモリに配置され、永続的な方法は、RDBやAOF方法を使用することです。

 

MySQLの:
データはハードディスクに保存されているかどうかにかかわらインデックス。あなたはメモリに交換するためにそれを使用したいときに。データメモリの量よりもはるかに多くを扱うことができます。
リレーショナルデータベース。
別のストレージエンジン上のさまざまな方法があります。
クエリは、より成熟したシステム、成熟度の高い伝統的なSQLステートメントを使用することです。
成長しているオープンソース・データベースの共有、MySQLのシェアのページには、成長を続けています。

欠点は、大量のデータ処理の時間効率が大幅に遅くなりますです。

 

データと性能の量を比較します
、Redisの十分な物理メモリのとき> MongoDBの> MySQLの
物理メモリが十分でない場合、RedisのとMongoDBは、仮想メモリを使用します。
あなたはRedisの仮想メモリを開始したい場合は実際には、あなたがデータベースを変更する必要がありますいずれか、メモリを追加するいずれかのことは明らかです。
しかし、MongoDBのではなく、データを読み出すよりも高温と低温同じ、限り、保証サービス、物理メモリ内のそのような熱データ、以下MMAP交換。
MongoDBは性能を保証することができました。一部の人々は、Tの上のMongoDB格納データを使用しています。
MySQLの、MySQLはメモリとの関係の下でのデータの量を心配する必要はありません。しかし、熱データを有するメモリの量との関係を大幅に性能に影響を与えるであろう。
物理メモリと仮想メモリが十分でない場合には、それはあなたが選択したMySQLの何に加えて、推定されています。
実際には、ビューのデータ・ストレージ・原則の観点から、私はハードと分類のMongoDBデータベースを好むが、それを促進する手段としてのmmapを使用しています。


ジェーンはmmapの言った:
mmapシステムコールは、完全に共有メモリと設計に使用されていません。それ自体は、メモリのプロセスが通常のファイル操作と同じを読み書きすることができ、一般的なファイルへの一般的なアクセスは異なる方法を提供します。
mmapシステムコールは、一般的なファイルにマッピングすることにより、共有メモリ間のプロセスを可能にします。一般的なファイルは、プロセスのアドレス空間にマップされた後、プロセスはファイルに通常のメモリアクセスと同様にアクセスすることができ、呼び出す必要はありません。読んで()、()の動作を記述します。mmap(MSYNCに書き込んだ後。ちょうど、あなたがそのようなmemcpyの代わりに、書き込みの()Aなどのファイル操作を書き込むことができ、呼び出し元プロセスのアドレス空間にファイルをマップするために、スペースを割り当てていない)あなたが書いたものを同期時間の長さは決定に()のmmap呼び出しにマップされるため、ファイルに保存されたコンテンツが。しかし、このアプローチは、ファイルの長さを増加させる方法はありません。

 

MongoDBの&MySQLのアプリケーションシナリオ:
MongoDBの適用シナリオである:データは、(例えば、通知、プッシュS)は、特に重要ではなく、データのテーブル構造をより頻繁に変更、データの量が特に大きい、複雑なデータが特に高く、データ構造は、特に、(例えばMySQLでマップ座標)、MongoDBを持つこれらの場合、または他の状況は、この組み合わせは、最大効率を達成することができます。

1.必要置き換えることMongoDBのバックエンドDBのMySQLが使用される場合、すなわちパラレルレベルに属するのMySQLのMongoDBは、その後、次のような状況のような用途が考えられる場合。

    (1)のMongoDBは、ドキュメントの責任の部分に格納され、コードはより良い親和性、便利で直接描画JSONフォーマットすることができます。(このようなログ等) 

    (2)設計段階からデータ・モデルは、トランザクションの支援等をすることなく、その中に考慮原子であろう。このような開発のためのようNodejs開発言語、より便利の開発。

    (3)のMongoDBフェイルオーバ機構自体を、例えばMHAとしての使用を実施せず。

同様のRedisのように2 MongoDBは、memcacheのは、ログの収集と分析をサービスを提供する、またはバックエンドのためのキャッシュDB、MySQLを行います。考えるとMongoDBはありませんSQLデータベース、SQL文に属し、ないMySQLのデータ構造と、その後のプロとして、使用するための二次利用などのキャッシングデシベル多くの時間のMongoDBとMySQLのためのクラスのRedisのmemcacheのがあるでしょう。また、のみログ収集と分析のため。

MongoDBの大きな欠点があることは、それは時間の原則のためのスペースの典型的なタイプであるので、それは、多くのスペースを占めていることです。レコードは、このようなデータのサイズとして、変更された場合にMongoDBに簡単にこの時間を変更したとき、そして、通常のデータベースよりそのディスクスペースは、いくつかを無駄にしますが、これまでのところ、それはオンライン圧縮機能を達成していない、データを頻繁に追加および削除いくつかのデータの断片化を生成、断片化の結果は、パフォーマンスの問題になりますインデックスの出現につながります。
もう一つは、一定期間の後に、より少ないスペースが不可解に増加するということですので、修理に定期的にデータベースの操作を行い、再インデックス定期的な、それはMongoDBの安定性と効率性を向上させます。

娘の名前から1.MySQL;作品HumongousからMongoDBの
2.MySQL表/行/列を使用して、MongoDBのコレクションを使用して/ドキュメント
3.MySQLは、テーブルのスキーマを指定する必要があり、各文書のスキーマはMongoDBのコレクションは、自由に変更することができ
4.MySQLをサポートが参加し、MongoDBは参加しません
JavaScript-を使用して、関数にMongoDBを、5.MySQLは、SQL言語を使用して

コントラストコマンド
のMongoDBとMySQLコマンド3つの段階からなるデータベース(データベース)、テーブル(表)、レコード(レコード)のコンセプトにより、一般的には、従来のリレーショナルデータベースと比較すると、MongoDBはデータベース(データベース)、収集(コレクション)、ドキュメントオブジェクト(ドキュメントです)は、3つのレベルから成ります。リレーショナルデータベーステーブルのためにMongoDBが、フリーモードの機能を反映して、何の列、行、および関係の概念を設定していません。
MongoDBの(文書データベース):スケーラブルな高性能データ・ストレージを提供
分散ファイルストレージに基づいて、1の
性能がサーバ保証することができ、重負荷条件下でより多くのノードを追加し、2
3を、データが文書として保存されている
MySQLでMongoDBの比較
1の安定性
2は、インデックスは、メモリ内のインデックスは、ランダムアクセスの性能を向上させることができます。インデックスがメモリ内に完全にされていない場合、比較的高いランダム読み取りおよび書き込み時間が表示されたら、それは、MongoDBの性能が急激に低下し、頻繁なディスクスワップになり
、それは時間の原則のための代表的なスペースがあるので、3は、大きな空間占有しますタイプ。その後、通常のデータベースよりそのディスクスペースは、いくつかを無駄にしますが、これまでのところ、それはオンライン圧縮機能を達成していない、
レコードは、このようなデータのサイズとして、変更された場合にMongoDBに簡単にこの時間を変更した際に、データを頻繁に追加および削除いくつかのデータの断片化を生成、断片化の結果は、の出現につながる
パフォーマンスの問題になり、インデックス
もう一つは、一定期間の後で、より少ないスペースが不可解に増大しますので、修理に定期的に定期的に再データベースを行いますインデックス、それはMongoDBの安定性と効率性を向上させます。
最新バージョンでは、それは、圧縮のためにオンラインだった周り2.0と推定され、オンラインの圧縮を達成することができるはずです、あなたは今、バックグラウンドでいくつかの操作修復データベースを実行することができます。もしそうなら、それは現在、私たちを悩ます大きな問題を解決しました。
4、MongoDBのサポートは、トランザクションデータとの間の比較的弱い関係である
5、便利な操作及びメンテナンス
のMySQLのMongoDBの相対的利点
それらの特定のデータベース・フォーマット1.データは、常に需要モデルを変更する透明またはデータベースのデータ形式ではなく、また、非常に開発者に優しいです。
2.簡単にサーバークラスタにデプロイすることができ、分散ファイルシステムが付属しています。
MongoDBのは、シャードの概念を持って、サーバースライスを使用して簡単です。各追加挿入のパフォーマンスシャード、MongoDBのは、成長モードの倍数に近くなり、ディスク容量も拡大するのは非常に簡単です。
3.統計データのために非常に便利です操作の枠組みを地図減らすためのサポートが付属しています。同様のGROUP BY
のMongoDBとMySQLのコマンドは、以下の3つのレベルからなるデータベース(データベース)、テーブル(表)、レコード(レコード)のコンセプトにより、一般的には、従来のリレーショナルデータベースに比べて、
MongoDBはデータベース(データベース)、収集(コレクション)、ドキュメントオブジェクトであります3つのレベルで構成される(文書)。
リレーショナルデータベーステーブルのためにMongoDBが、フリーモードの機能を反映して、何の列、行、および関係の概念を設定していません。

 

MongoDBのとRedisの違い:
はじめ
にMongoDBは、カーソル操作のMySQL、サポートフィールドインデックスに似ている、その利点は、より強力な検索機能、優れたクエリJSONデータで大量のデータを保存することができますが、トランザクションをサポートしていません。

データの際に大量のMongoDBのMySQLはリレーショナルデータベースの代替として、より多くの場合、大幅に削減されます。

メモリ管理メカニズム
Redisのデータは定期的にすべてのメモリ、ディスク書き込みが存在するメモリが十分でないとき、あなたはデータを削除するには、特定のLRUアルゴリズムを選択することができます。
メモリ内のMongoDBデータ、LinuxのMMAP実装システム、メモリにメモリが十分ではない、唯一のホットデータ、及びディスク上に格納された他のデータ。

サポート・データ構造
ようにハッシュ、セット、リストとを含むRedisのデータ構造のための豊富なサポート。
MongoDBのデータ構造は比較的単純ですが、非常に豊かでサポートされているほとんどのリレーショナルデータベースのクエリ言語に似た豊富なデータ、インデックス、への支持を表明しました。

パフォーマンス
の両方が高いパフォーマンスをしている、ボトルネックにならないだろうと述べたする必要があります。

信頼性
の両方をサポートする永続化。

クラスタ
のMongoDBクラスター技術は、より成熟し、3.0からRedisのは、クラスタをサポートするために始めました。

NAシナリオの
操作は、ØSQLへの複合体の使用を必要と
Øのトランザクションシステムを
比較表にMongoDBとRedisのを以下に示します。

 

 

MySQLとRedisの違いは次のとおりです。
今(MCと呼ばれる)最も使用memcachedのあるような、MySQLはこのボトルネックを解決するために、いくつかのIOを伴うであろう、内部のディスクに格納されて取り出され、永続的な記憶なので、キャッシュがあります。ヒットしない場合はまず、ユーザアクセスMCは、MCにコピーされたデータの一部としてのようなメモリやハードドライブの後、MySQLを訪問するために行ってきました。

  RedisのとMCが大きく、データのアクセス速度のWebアクセスハイ量が向上し、キャッシュされ、そして全てがメモリに常駐する実行されます。しかし、それは、このような文字列ストレージとして、単純なデータ構造を提供する唯一のMC; Redisのは、文字列、リスト、セット、HashSetのようなデータ構造、を大量に提供している、ソートセット実用的なカプセル化の層を形成した後、その便利なユーザーの多くになりますこれは、これらのこの関数は、同じ効果を達成しながら、もちろん、のRedisでゆっくりMCを放棄します。
  大幅動作速度を向上させる代わりに、ディスクのメモリやハードディスク、永続ストレージのための主なデータを配置するハードディスク、およびメモリとの間の関係のデータの一部が現在実行され、CPUアクセスメモリは、もちろん、これはローカライズされたプログラムに基づいていますアクセス原則。
  Redisの+ MySQLへ推論データはMySQLを訪問することを行く前に、見つからない場合は、ディスク上のディスク・メモリ+マップの関係は、MySQLで、メモリ内のRedisは、この場合には、Webアプリケーションは、時間のRedisにアクセスします。
  しかし、使用Redisの+ MySQLの+ディスクとメモリは、好ましくは異なっています。
前者はメモリデータベースであり、データは、高速、もちろん、メモリに格納されます。
後者は、リレーショナルデータベースである、強力なデータアクセスが遅くなります。
memcacheのと同様に、MongoDBは、Redisのは、ありませんSQLシリーズに属します。
事のないタイプは、シナリオが決定するニーズによって異なりますが、同じではありません。
---------------------
著者:ニャースターXcodeの
出典:CSDN
オリジナルます。https://blog.csdn.net/CatStarXcode/article/details/79513425
著作権表示:この記事では、ブロガーのオリジナルの記事、再現され、ボーエンのリンクを添付してください!

おすすめ

転載: www.cnblogs.com/noah0532/p/10943120.html