MySQLの、のRedis、MongoDBの、Memcachedのコントラスト

著作権:https://blog.csdn.net/zhydream77/article/details/85275781

ディレクトリ

 

特徴:

特徴:

使用シナリオ

 


特徴:

mysqlの(リレーショナルデータベース)

主に使用されている永続的なデータ保存するためにハードディスクを、読み出しデータが遅い保存されていますリレーショナルデータベースとしてMySQL永続ストレージ、各要求は、データベースにアクセスするために比較的弱い領域は、I / O操作がデータベースへの頻繁なアクセスを繰り返すあります。持続性、強力な、しかし低速のためのハードドライブに保存されたMySQLのデータ。

まず:作業効率が得られ、繰り返されるデータベース・リンク上で多くの時間を過ごすには遅すぎます。

第二:データベースへの繰り返しのアクセスは、データベースの負荷になります、その後、時間、高すぎるのキャッシング概念うちデリバティブに。それ以外の場合はデータベースへのアクセス、キャッシュは、ブラウザの実行要求が最初に存在する場合、取得する、キャッシュになりますデータ交換バッファ(キャッシュ)、です。キャッシングの利点は、高速で読み取ることがあります。

 

Redisの(メモリデータベース)

  これは、キーと値のストレージシステム(分散キャッシュ、キー値高性能データベース)です。それはサポートとハッシュ(ハッシュタイプ) -格納されている値に文字列(文字列)、リスト(一覧)、SET(セット)、ZSET(順序集合ソートセット)など、比較的多くの種類を、。これらのデータ型は、追加/削除して、交差点や労働組合、その差よりリッチな操作で、プッシュ/ポップをサポートされており、これらの操作はアトミックです。これに基づき、Redisのは、並べ替えの異なるさまざまな方法をサポートしています。効率性を確保するためには、データがメモリにキャッシュされています。Redisのは、定期的にディスクに書き込まれたデータを更新するか、追加のログファイルを書き込む動作を変更するために、そしてこれに基づいてマスタースレーブ(マスタとスレーブ)の同期を実現します。

 

MongoDBの(のNoSQLデータベース)

   (リレーショナルデータベースと非リレーショナルデータベースとの間の積である分散ファイル・ストレージ・データベースに基づいて)、ほとんどのリレーショナルデータベースと同様に、最も機能豊富な中で非リレーショナルデータベース。彼はあなたが、より複雑なデータ型を格納できるようなデータ構造は、非常に緩んでいるサポート。Mongoの最大の特徴は、彼の非常に強力でサポートされているクエリ言語で、その構文は、機能のほとんどは、リレーショナルデータベースに似た、ほぼ単一テーブルクエリを達成するだけでなく、データのインデックス作成をサポートすることができ、オブジェクト指向のクエリ言語に似ています。

Memcachedの(メモリキャッシュ)

  それは、高性能分散メモリオブジェクトキャッシュシステムデータベースの負荷を軽減する動的なWebアプリケーションのために、。これは、メモリにキャッシュの数です。ファイルのアクセス速度を高速化し、複数のユーザーに提供するためには、理由はキャッシュバッファを使用する必要性、更新の回数を削減し、データディスクを確実に読み書きするデータをメモリにキャッシュする管理メモリを確立する必要があります。

 

 

特徴:


MySQLの1-1:
ソースコードを確認するためにテストしたコンパイラのさまざまなを書いて使用するために1.のCおよびC ++ポータビリティ
2.サポート複数のオペレーティングシステム
APIは、さまざまなプログラミング言語に提供3.
4.サポートマルチスレッド、CPUリソースをフルに使用します
最適化されたSQLクエリアルゴリズムを、効果的にクエリの速度向上の
多言語サポートを提供するには5を、のようなコーディング共通:GB2312、BIG5、UTF8
6. TCP / IP、ODBCやJDBCデータベース接続およびその他の提供しますする方法
データベース操作を最適化するために、管理、検査および管理ツールを提供する
7.大規模なデータベースを。十数百万レコードのを扱うことができる持っている大規模なデータベース
8のサポート、複数のストレージエンジン
9. MySQLソフトウェアはデュアルライセンスポリシー、分割コミュニティや原因、特にサイズが小さい、高速、低所有コスト、商用バージョンを使用し、この機能は、オープンソースであり、中小のウェブサイトの開発は、サイトデータベースとしてMySQLを選択した
標準のSQL言語のフォーム使って10 MySQLデータ
11 MySQLはカスタマイズすることができ、GPLライセンスの下で、あなたは自分のMySQLを開発するためにソースコードを変更することができますシステム
12のオンラインDDLの機能は変更
13.コピーグローバル・トランザクション識別子
から崩壊することなく、14コピー機を
マルチスレッドからマシン15をコピーします

 


1-2 Redisの:.
データの永続1. Redisのサポート、メモリ内のデータを使用して、再利用することができたときにロードするために、再起動、ディスクに保存することができます。
また、リスト、セット、保存されたセット、ハッシュおよび他のデータ構造を提供しながら、2 Redisのは、簡単なキーと値のデータ型をサポートしていないだけ。
3. Redisのバックアップデータ、すなわち、データのバックアップマスタ・スレーブモード、サポート
高性能4. - Redisの110,000回/ sの速度を読み取ることができ、書き込み速度81000回/ sで
5リッチデータ型は-Redisサポートバイナリの場合文字列、リスト、ハッシュ、Setes及び順序集合演算のデータ型。
6.原子-原子Redisのはフルといくつかの操作の後にサポートし実行しながら、Redisのすべての操作は、アトミックです。
7.機能豊富な- Redisのも、パブリッシュ/サブスクライブ、通知、キーの有効期限などの特性に対応しています。 

; 8.は、そのような文字列(ストリング)としてリスト(二重リンクリスト)、辞書(ハッシュ・テーブル)、SET(セット)、ZSET(順序集合)、hyperloglog(ベース推定)データ構造、様々なサポート
9サポート永続化操作を、およびディスクへのRDBデータの永続性、データのバックアップやデータ復旧操作AOFすることができ、より優れたデータの損失を防ぐための手段と
、レプリケーションを介してデータの複製のための10のサポートは,,マスター・スレーブ機構を介してリアルタイムデータとすることができます同期レプリケーション、マルチレベルのレプリケーションおよび増分レプリケーション、マスター・スレーブ・メカニズムのRedisの重要な手段は、HAが行われ、
11シングルスレッドの要求、逐次実行されたすべてのコマンド、問題を検討する必要がなく、同時データの整合性;
12。サポートパブ/サブメッセージングは、それがサブスクリプションとメッセージ通知のために使用することができる仕組みを購読し、
13サポート、単純なトランザクションを必要とするが、めったに業界のシーンで使用されていない、成熟していないです。

14.Redisは、単一スレッドを使用することができ、性能がCPUの性能によって制限され、それは最高の単一インスタンスのCPUは、データ構造、データのサイズとサーバのハードウェアの性能に依存し(約1の日常環境QPSピークを毎秒5-6wQPSに達することがありました-2w程度)。

15.サポート、単純なトランザクションが必要とするが、めったに業界のシーンで使用されていない、成熟していない、長所と短所の両方。

16.サポート(スナップショット、AOF):依存スナップショットの永続性、AOFは、パフォーマンスに影響を与え、同時に信頼性を向上させます。

 文字列型で17.Redisは、より多くのメモリを消費し、メモリ消費量を減らすために圧縮された辞書(ハッシュテーブル)記憶を使用することができます。

  18.MCとRedisのキーと値の種類は、クエリ検索に適したデータではなく、異なるセットの間の関係を構築するには適していません。Redisのこの実施例の動作と一致するキーパターン、性能はRedisの災害です。

 19.Redisは、バージョン2.0は、物理メモリから抜け出すために、VM独自の特徴を追加した後、あなたは、キー値の有効期限(似たmemcacheの)を設定することができます。

 20.Redisトランザクション・サポートは、トランザクションの動作の各連続実行を確実にするために、比較的弱く、


MongoDBの1-3 :.
1.フリーモード:あなたは、同じデータベース内の文書の異なる構造を保存することができます
。2.セット指向のストレージ:ストレージJSON形式の文書に適した形式を
任意のプロパティのインデックス3.完全なインデックスのサポート
4再現と高可用性:サーバー間でのサポートデータ複製は、主なサポートが-パターンとサーバの間で相互にコピーされます。主な目的は、冗長なレプリケーションと自動フェイルオーバーを提供することで
、サポートデータベースクラスタのレベルを動的に追加、マシンを追加することができます。5.自動断片化を
6豊かなクエリを:JSON量のマークを使用してリッチクエリ式、クエリ命令形式をサポート簡単にオブジェクトと組み込み文書のアレイ問い合わせることができ
7クイック場所更新:クエリオプティマイザは、クエリ式を解析し、かつ効率的なクエリプランを生成する
従来のストレージの8効率的な方法:バイナリデータとラージオブジェクトのサポートを

大容量データの保存に適し9.行うには、オペレーティングシステムのメモリ管理VMに応じて、メモリもより強力で食べるには、一緒にサービスやその他のサービスはありません。

10.非常に豊富でサポートされているほとんどのリレーショナルデータベースのクエリ言語に似た豊富な発現データ、インデックスをサポートしています。

11.マスター・スレーブ、さらにreplicaSet(内部使用のPaxos選挙アルゴリズム、自動フェイルオーバー)、自動シャーディングメカニズム、クライアントとフェイルオーバシールドスライス機構をサポートします。

スタートバージョン1.8から12には、バイナリログの信頼性を使用して永続的な方法をサポートしています。

13.MongoDBは、トランザクションをサポートしていません。

14.MongoDB内蔵のデータ解析機能(MapReduceの)、他の人がサポートしていません。

1.8バージョンから15は、信頼性の永続性をサポートするために、ビンログの方法を使用し始めました。

 

1.4のMemcached

  1.あなたはマルチコア、ハイスループット単一インスタンスの利点を使用することができます、あなたは(キー、値のバイトサイズとサーバーのハードウェアのパフォーマンス、およそ4〜6ワットで日常の環境QPSピークに依存する)QPSの数十万人に達することができます。最大限の搬送量に適用されます。
  2.サポート直接設定セッションハンドル。

        3.豊富なRedisのデータ型をサポートすることができないだけで、簡単なキー/値データ構造をサポートしています;
  4が持続することはできません、バックアップデータのみをキャッシュに使用し、すべてのデータが失われた後に再起動することはできません。
  できません5. ;データ同期、データがMCインスタンス内の他のMCに移行することができない
  、まだメモリ管理機構を用いて前記スラブの割り当てメモリの割り当てを生じ、値のサイズ分布が原因減少メモリ使用との間にかなり異なり、低い利用率につながります他の問題から追い出さ。ユーザーが設計値に注意を払う必要があります。

  7.Memcachedは、LRUアルゴリズムを使用して、最大利用可能なメモリを変更することができます。

 

利用シナリオ


:さまざまなシナリオを使用し 
MongoDBのシナリオ:
;リアルタイムの挿入、更新、およびクエリのため、および複製する必要があったと拡張性の高いリアルタイムのデータ・ストレージ・サイト:①サイトデータ
②キャッシュ:により、高いパフォーマンスを、情報としても適しを;インフラシステムの再起動後にキャッシュ層、基になるデータソースの過負荷を避けるために、永続キャッシュを構築するには
、時間③大きなサイズであってもよいし、低値のデータは、データを格納するために、いくつかの従来のリレーショナルデータベースを使用して、MongoDBのための最良の選択であります高価なプログラマーの多くは、従来のファイルストレージを再度選択する傾向がある前に、
④高度にスケーラブルなシーンを、データベース用のサーバの非常に数十あるいは数百ある
JSONデータ、BSONのMongoDBのデータフォーマットのストレージオブジェクトと⑤ドキュメント形式は、ストレージとクエリに最適です。


MySQLのシナリオ:
①取引システムの高さ。このような銀行や会計システムとして、従来のリレーショナルデータベースは、原子の複雑な取引が多数必要とより実用的なアプリケーションである
②従来のビジネス・インテリジェンス・アプリケーションを、このようなため、高度BIクエリのデータベース固有の問題のために最適化された生成されます、アプリケーションは、データウェアハウスは、より適切な選択かもしれ

主な問題は、大量のデータアクセス効率を解決するために。

Redisのシナリオ:
メモリ1内のキャッシュに使用されるすべてのデータが-redis
特定のシナリオにおいて、従来のデータベース2.代替-などの社会階級のアプリケーション
大規模なシステムでは3、賢いをいくつかの特定の機能の実現:セッション共有、ショッピングカート

読み取り4.及び書き込み効率要件が高く、複雑なデータ処理操作であり、より高いセキュリティシステムを必要とする(例えばXinlangはマイクロボー及びシステム、データ・セキュリティの部分をカウントする、読み取りおよび書き込みするために必要とされます高いです)

Memcachedのシナリオ: 

 データベースの負荷を軽減する1.動的なシステムは、パフォーマンスを向上させる、読み取りのためのキャッシュはより多くの、データの状況を大量に少ない書くよう(なすべてのネットワークユーザー情報についてのお問い合わせ、フレンド情報、記事、情報などの多数のように)。

 2.性能を改善するために、データベースに動的負荷を低減するためのシステムと、キャッシュとしての性能を向上させるために(データのより多量に、読み書きのためにあまり適してはシャーディングを使用することができます)。

 

 

 

おすすめ

転載: blog.csdn.net/zhydream77/article/details/85275781