noSql間のコントラスト
4590 ワード
redis、memcache、mongodyについて
1.性能
2.操作の利便性
3.メモリ容量の大きさとデータ量の大きさ
4.可用性(単一の問題)
5.信頼性(持続性)
6.データ整合性(トランザクションサポート)
7.データ分析
8.シーンの適用
コントラストパラメータ
memcache
redis
mongodb
データベースのタイプ
純粋なkey-valueデータベース、データ構造は単一です
構造化データベース
オブジェクトデータベース
データ型のサポート
string
string,list,sort,sorted,hash豊富なデータ表現
リレーショナル・データベースと同様のインデックス
可用性
データ冗長メカニズムがなく、コンシステンシhashを使用して可用性を向上
ms,mss構造をサポートし,slave再接続プライマリノードは全量同期の発生をもたらし,性能と効率に影響を及ぼす.読み書き分離を実現でき、slave再接続で全量のデータを使用すると、性能と効率に問題があり、自動shardingをサポートせず、プログラム上の一貫性hashを実現する必要がある.
msをサポートして、replication setをサポートして、setは自動的に故障して変換することができて、autoshardingをサポートします
永続化のサポート
データは完全にメモリに格納され、永続化のサポートはありません.
永続化、スナップショット持続化、aof持続化をサポート
1.8バージョンはbinlog方式で持続的な信頼性をサポートし始めた
メモリ領域の最適化
最大メモリ制限、LRUアルゴリズム淘汰(オプション)
独立したvmメカニズム、最大メモリ制限、データttlの期限切れ設定、メモリ淘汰(オプション)
オペレーティングシステムのvm管理メカニズムに依存して、メモリマッピングファイルを使用して、残りのメモリをキャッシュとして使用して、最大のメモリ制限がなくて、データはファイルシステム上とメモリに存在します
マルチスレッド
はい、-tで入力スレッド数を制御できます
シングルスレッド
マルチスレッド
パフォーマンス
15 W/sのGET、11 W/sのSET
単一例qps:8.5 W程度(GET/SET)(RH 2285)
単一qps:3.5 W程度(GET/SET)(RH 2285)
トランザクションのサポート
同時シーンでcasで一貫性を保証
トランザクションのサポートは弱く、各トランザクションが連続的に実行されることを保証します.1つのオペレーションが失敗した場合、ロールバックされません.楽観的なロックを使用してcasを実現します.
トランザクションはサポートされていません
データ解析
簡単なgetクエリー機能
単純クエリー機能、集合やhashの操作などをサポート
クエリーが便利で、sqlのような文法があり、条件クエリーをサポートします.
シーンの適用
常にフロントエンドキャッシュとして
キャッシュとデータストア、キュー
ビッグデータストレージ
特長
-
pipelineによるクエリー数の削減をサポート
Autosharding,故障自動切替,mapreduceサポート,大ファイル下のGridFsファイルシステム
あんぜんもんだい
現在、認証はありません
パスワード検証のサポート(requirepass)
collectionレベルの認証(auth)をサポート
データのバックアップとリストア
データはメモリに保存され、バックアップとリストアが不便です(stats cachedump)
永続化によるバックアップとリストア
mongodump倍部、mogorestore還元.データエクスポート:mongoexport,mongoimport,エクスポートデータはcsvフォーマットをサポートする
slowlog相関
slowlog関連の設定はありません
slowlogをサポートし、slowlogはデータベースに存在し、slowlog getを使用して関連ログを取得すると、slowlogのサイズに制限があり、それを超えると古い
slowlog(profiling)をサポートし、slowlogはsystemに存在する.profile(capped collection)のcollectionで
ステータス表示
stats
info
mongostat,db.serverStatus(),db.stats()、rs.statsu()など
tunning
1.object sizeはあまり大きくない(デフォルトは1 Mのみ)2.objectのexpires設定(キャッシュにタイムアウトの特徴があるはず)3.データ処理後のキャッシュに適合し、キャッシュ後の処理出力に適合しない
1.vmをオンにして、よくないvalue値をディスクにスワップします.できるだけメモリにデータを格納.フロントエンドはproxyまたはpersistence hashを用いて等化アクセスを実現する.master-slave構造を用いて、読み書き分離を行う.ビッグデータ量の場合、データdumpを永続化する際にサービスに影響を与える場合は、slave側に置くべきである.pipeline集約アクセス7を使用する.NIC bonding
1.インデックス関連(読み書きが少ない場合)2.explain解析クエリー3.戻りエントリ(limit)4を限定する.指定された必須フィールドのみを表示し、すべてのフィールドをクエリーしません.capped collection(特殊業務)6を使用する.replsetsを使用して、クラスタ全体の能力を拡張タイプ-memcacheheredisは、メモリにデータを格納するため、メモリデータベースです.もちろんmemcacheは、画像など、他のものをキャッシュするためにも使用できます. データ型--Memcacheはデータを追加するときにデータのバイト長を指定しますが、redisは必要ありません. 仮想メモリ:物理メモリが切れた場合、長い間使用していなかったvalueをディスクに交換できます. 期限切れポリシー--memcacheはset時にset key 1 0 0 8などのように指定します.つまり、期限切れはありません.Redisは、例えばexpire設定、例えばexpire name 10により設定することができる. 分布式--memcacheクラスタを設定し、magentを利用して主従を行う.redisは主従を作ることができる.すべて一主一従することができます. はデータの安全を保存します——memcacheは電気が切れて、データはなくなりました;redisは定期的にディスクにsaveできます. 災害復旧-memcacheと同様に、redisが失われた後、aofで復旧することができます.
1.性能
, 。
,TPS redis memcache , mongoDB。
2.操作の利便性
memcache 。(key-value)
redis , ,redis , IO , list,set,hash 。
mongodb , , , 。
3.メモリ容量の大きさとデータ量の大きさ
redis 2.0 VM , ; key value ( memcache)
memcahce , LRU 。memcahce magent, 10 4G memcache , 40G。magent -s 10.1.2.1 -s 10.1.2.2:11211 -b
10.1.2.3:14000
mongoDB , VM , 。 。
4.可用性(単一の問題)
redis, ; , , , , ; sharding, hash 。 , redis , ( ), ( ), 。
memcache , ; , hash , 。
mongodb master-slave,replicaset( , ),auto sharding , 。
5.信頼性(持続性)
redis ( 、AOF): ,aof , ;
memcache , , ;
mongodb 1.8 binlog ;
6.データ整合性(トランザクションサポート)
memcache , cas ;
redis , ;
mongodb ;
7.データ分析
mongodb (mapreduce),
8.シーンの適用
redis:
memcache: , ; , ( , , sharding)
mongodb: 。
コントラストパラメータ
memcache
redis
mongodb
データベースのタイプ
純粋なkey-valueデータベース、データ構造は単一です
構造化データベース
オブジェクトデータベース
データ型のサポート
string
string,list,sort,sorted,hash豊富なデータ表現
リレーショナル・データベースと同様のインデックス
可用性
データ冗長メカニズムがなく、コンシステンシhashを使用して可用性を向上
ms,mss構造をサポートし,slave再接続プライマリノードは全量同期の発生をもたらし,性能と効率に影響を及ぼす.読み書き分離を実現でき、slave再接続で全量のデータを使用すると、性能と効率に問題があり、自動shardingをサポートせず、プログラム上の一貫性hashを実現する必要がある.
msをサポートして、replication setをサポートして、setは自動的に故障して変換することができて、autoshardingをサポートします
永続化のサポート
データは完全にメモリに格納され、永続化のサポートはありません.
永続化、スナップショット持続化、aof持続化をサポート
1.8バージョンはbinlog方式で持続的な信頼性をサポートし始めた
メモリ領域の最適化
最大メモリ制限、LRUアルゴリズム淘汰(オプション)
独立したvmメカニズム、最大メモリ制限、データttlの期限切れ設定、メモリ淘汰(オプション)
オペレーティングシステムのvm管理メカニズムに依存して、メモリマッピングファイルを使用して、残りのメモリをキャッシュとして使用して、最大のメモリ制限がなくて、データはファイルシステム上とメモリに存在します
マルチスレッド
はい、-tで入力スレッド数を制御できます
シングルスレッド
マルチスレッド
パフォーマンス
15 W/sのGET、11 W/sのSET
単一例qps:8.5 W程度(GET/SET)(RH 2285)
単一qps:3.5 W程度(GET/SET)(RH 2285)
トランザクションのサポート
同時シーンでcasで一貫性を保証
トランザクションのサポートは弱く、各トランザクションが連続的に実行されることを保証します.1つのオペレーションが失敗した場合、ロールバックされません.楽観的なロックを使用してcasを実現します.
トランザクションはサポートされていません
データ解析
簡単なgetクエリー機能
単純クエリー機能、集合やhashの操作などをサポート
クエリーが便利で、sqlのような文法があり、条件クエリーをサポートします.
シーンの適用
常にフロントエンドキャッシュとして
キャッシュとデータストア、キュー
ビッグデータストレージ
特長
-
pipelineによるクエリー数の削減をサポート
Autosharding,故障自動切替,mapreduceサポート,大ファイル下のGridFsファイルシステム
あんぜんもんだい
現在、認証はありません
パスワード検証のサポート(requirepass)
collectionレベルの認証(auth)をサポート
データのバックアップとリストア
データはメモリに保存され、バックアップとリストアが不便です(stats cachedump)
永続化によるバックアップとリストア
mongodump倍部、mogorestore還元.データエクスポート:mongoexport,mongoimport,エクスポートデータはcsvフォーマットをサポートする
slowlog相関
slowlog関連の設定はありません
slowlogをサポートし、slowlogはデータベースに存在し、slowlog getを使用して関連ログを取得すると、slowlogのサイズに制限があり、それを超えると古い
slowlog(profiling)をサポートし、slowlogはsystemに存在する.profile(capped collection)のcollectionで
ステータス表示
stats
info
mongostat,db.serverStatus(),db.stats()、rs.statsu()など
tunning
1.object sizeはあまり大きくない(デフォルトは1 Mのみ)2.objectのexpires設定(キャッシュにタイムアウトの特徴があるはず)3.データ処理後のキャッシュに適合し、キャッシュ後の処理出力に適合しない
1.vmをオンにして、よくないvalue値をディスクにスワップします.できるだけメモリにデータを格納.フロントエンドはproxyまたはpersistence hashを用いて等化アクセスを実現する.master-slave構造を用いて、読み書き分離を行う.ビッグデータ量の場合、データdumpを永続化する際にサービスに影響を与える場合は、slave側に置くべきである.pipeline集約アクセス7を使用する.NIC bonding
1.インデックス関連(読み書きが少ない場合)2.explain解析クエリー3.戻りエントリ(limit)4を限定する.指定された必須フィールドのみを表示し、すべてのフィールドをクエリーしません.capped collection(特殊業務)6を使用する.replsetsを使用して、クラスタ全体の能力を拡張