Redisよりも高速:Berkeley DB面観
この質問は次のとおりです.http://www.cnblogs.com/me115/p/3395396.html?ADUIN=173746627&ADSESSION=1383179408&ADTAG=CLIENT.QQ.5239_.0&ADPUBNO=26248
Redisよりも高速:Berkeley DB面観
Redisはとても怒っていて、最近みんながたくさん使っています.2年前からMemcachedがRedisに転向して徐々に潮流になった.Berkeley DBはまだ知らない人が多いかもしれませんが、まず簡単に紹介します.
Berkeley DB紹介
歴史が長い.Berkeley DBは1991年に第1版を発行し、2006年にOracleに買収された.
Berkeley DBは組み込み型データベースシステムで、メモリデータベースのカテゴリーに分類しても問題ありません.
KeyValue構造ストレージを使用して、自身はSQLをサポートしていない.5.5版以降はSQLiteを統合し、sqlを使用してクエリーを行うことができる.公式資料の評価は、オリジナルのbdbが性能を10倍に向上させることができれば、SqlLiteを使用した後、約2-3倍しかありません.sqlの解析と下層の接続には時間がかかる.
オープンソース製品で使用されるオープンソースプロトコルは、AFFERO GPL(AGPL)である.このプロトコルの商用製品に対する主な制約は、Berkeley DBを使用するソフトウェアに対して、パッケージを公開する際に料金を払う必要があることです.例えば、マイクロソフトのofficeが使用する場合は料金を払わなければなりません.テンセントのQQバックグラウンドサーバーの使用は料金を払う必要はありません.
Berkeley DB設計思想
シンプル、コンパクト、信頼性、高性能.DBライブラリとアプリケーションは同じプロセス空間で実行され、インタフェースはAPI形式であり、アプリケーションはAPIを通じてDBにアクセスする.
適用例
MySQL 5.1版以前のデータトランザクションストレージエンジンはBerkeley DBを使用していました.(5.1版以降は、OracleによってBerkeley DBが買収されたため、ビジネス上の理由で使用されなくなった可能性があります)Google Accountsが選択したBerkeley DBをストレージエンジンとして使用します.
Berkeley DB VS Redis
速度以外は、Berkeley DBの最大の利点は、マルチインデックス(二次インデックス)をサポートすることである.マルチインデックスをサポートすることで、関係型DBからメモリDBへの移植が容易になり、データの膨張とインデックス間のマッピング関係を効果的に回避することができる. eg:学生情報テーブル、学号を主キーとする(一意性インデックス)指定した学生レコードにクエリーできるインデックスが作成されています.名前でクエリーしたい場合は、名前をキーとして二次インデックスを作成してクエリーできます.クエリー条件が複雑な場合は、複数の二次インデックスを組み合わせて同じデータを見つけることができます.二次インデックスの使用方法をさらに理解するには、この記事を参照してください.『Berkeley DBマルチインデックスクエリ』
性能テスト比較:Berkeley DB VS Redis
使用環境:
同じメモリ・データベースでも、Berkeley DBとRedisの稼働時間を比較(単位:ms)A表記録:506622条記録:各記録:96バイトB表記録:2478条記録;各記録:10バイト;C表記録:10721条記録;各記録:82バイト;メモリデータベースの再構築BBB用4 s,Redis 20 s;メモリデータベースの更新、BBBとRedisの実験結果の比較的理想的なクエリー記録の場合、BBBはRedisよりほぼ1桁速いです.表全体の操作をキャッシュ、再構築し、BDBの性能はRedisより明らかに優れている.これは、BDDが全てのデータを一括して読み出すインターフェースを提供し、Redisが同様のインターフェースを提供しないためである.
パフォーマンス比較テスト:Berkeley DB VS Oracle
Oracleからデータを移植するには、リレーショナル・データベースとBerkeley DBのクエリー効率を比較する必要があります.まず、Berkeley DBのプライマリ・キーとして一意性インデックスを使用し、oracleと比較します.データ規模:
最終結果の検索基準:SQLクエリー:SELECT*FROM table_a WHERE (DATE=to_date(:v, 'YYYYMMDD') AND A =:a AND B =:b AND c>=:c AND D>=:d) AND ( E=:e) AND (F=:F) AND (G=:g) AND H!='C'AND N='N'";そのうち>=、!=操作はインデックスに組み込まれず、インデックスがデータを調べた後にフィルタリングを適用する必要がある;最終的なクエリー結果は記録である;
アクセス速度では、Berkerley DBはリレーショナル・データベースよりもredisよりもずっと速く、一括クエリーやデータインポート操作では1桁も速くなります.これは主に、
1.フルメモリ操作;データはすべてメモリにあります.
2.DBは同じプロセスアドレス空間に適用される.これにより、追加のネットワークオーバーヘッドはありません.
もちろん、Berkerley DBを使用するには、各アプリケーションの物理ノードに大きなメモリを開き、Berkerley DBのデータを格納する必要があることに気づきます.この点では,分散型のRedisがよりお得に見える.
Redisよりも高速:Berkeley DB面観
Redisはとても怒っていて、最近みんながたくさん使っています.2年前からMemcachedがRedisに転向して徐々に潮流になった.Berkeley DBはまだ知らない人が多いかもしれませんが、まず簡単に紹介します.
Berkeley DB紹介
歴史が長い.Berkeley DBは1991年に第1版を発行し、2006年にOracleに買収された.
Berkeley DBは組み込み型データベースシステムで、メモリデータベースのカテゴリーに分類しても問題ありません.
KeyValue構造ストレージを使用して、自身はSQLをサポートしていない.5.5版以降はSQLiteを統合し、sqlを使用してクエリーを行うことができる.公式資料の評価は、オリジナルのbdbが性能を10倍に向上させることができれば、SqlLiteを使用した後、約2-3倍しかありません.sqlの解析と下層の接続には時間がかかる.
オープンソース製品で使用されるオープンソースプロトコルは、AFFERO GPL(AGPL)である.このプロトコルの商用製品に対する主な制約は、Berkeley DBを使用するソフトウェアに対して、パッケージを公開する際に料金を払う必要があることです.例えば、マイクロソフトのofficeが使用する場合は料金を払わなければなりません.テンセントのQQバックグラウンドサーバーの使用は料金を払う必要はありません.
Berkeley DB設計思想
シンプル、コンパクト、信頼性、高性能.DBライブラリとアプリケーションは同じプロセス空間で実行され、インタフェースはAPI形式であり、アプリケーションはAPIを通じてDBにアクセスする.
適用例
MySQL 5.1版以前のデータトランザクションストレージエンジンはBerkeley DBを使用していました.(5.1版以降は、OracleによってBerkeley DBが買収されたため、ビジネス上の理由で使用されなくなった可能性があります)Google Accountsが選択したBerkeley DBをストレージエンジンとして使用します.
Berkeley DB VS Redis
速度以外は、Berkeley DBの最大の利点は、マルチインデックス(二次インデックス)をサポートすることである.マルチインデックスをサポートすることで、関係型DBからメモリDBへの移植が容易になり、データの膨張とインデックス間のマッピング関係を効果的に回避することができる. eg:学生情報テーブル、学号を主キーとする(一意性インデックス)指定した学生レコードにクエリーできるインデックスが作成されています.名前でクエリーしたい場合は、名前をキーとして二次インデックスを作成してクエリーできます.クエリー条件が複雑な場合は、複数の二次インデックスを組み合わせて同じデータを見つけることができます.二次インデックスの使用方法をさらに理解するには、この記事を参照してください.『Berkeley DBマルチインデックスクエリ』
性能テスト比較:Berkeley DB VS Redis
使用環境:
CPU:Intel Core 2 Duo P9xxx 2.0G
MEM:16G
OS:Red Hat Enterprise Linux Server release 6.3 (Santiago) x86_64
同じメモリ・データベースでも、Berkeley DBとRedisの稼働時間を比較(単位:ms)A表記録:506622条記録:各記録:96バイトB表記録:2478条記録;各記録:10バイト;C表記録:10721条記録;各記録:82バイト;メモリデータベースの再構築BBB用4 s,Redis 20 s;メモリデータベースの更新、BBBとRedisの実験結果の比較的理想的なクエリー記録の場合、BBBはRedisよりほぼ1桁速いです.表全体の操作をキャッシュ、再構築し、BDBの性能はRedisより明らかに優れている.これは、BDDが全てのデータを一括して読み出すインターフェースを提供し、Redisが同様のインターフェースを提供しないためである.
パフォーマンス比較テスト:Berkeley DB VS Oracle
Oracleからデータを移植するには、リレーショナル・データベースとBerkeley DBのクエリー効率を比較する必要があります.まず、Berkeley DBのプライマリ・キーとして一意性インデックスを使用し、oracleと比較します.データ規模:
;1112516 :
2.8G;
最終結果の検索基準:SQLクエリー:SELECT*FROM table_a WHERE (DATE=to_date(:v, 'YYYYMMDD') AND A =:a AND B =:b AND c>=:c AND D>=:d) AND ( E=:e) AND (F=:F) AND (G=:g) AND H!='C'AND N='N'";そのうち>=、!=操作はインデックスに組み込まれず、インデックスがデータを調べた後にフィルタリングを適用する必要がある;最終的なクエリー結果は記録である;
アクセス速度では、Berkerley DBはリレーショナル・データベースよりもredisよりもずっと速く、一括クエリーやデータインポート操作では1桁も速くなります.これは主に、
1.フルメモリ操作;データはすべてメモリにあります.
2.DBは同じプロセスアドレス空間に適用される.これにより、追加のネットワークオーバーヘッドはありません.
もちろん、Berkerley DBを使用するには、各アプリケーションの物理ノードに大きなメモリを開き、Berkerley DBのデータを格納する必要があることに気づきます.この点では,分散型のRedisがよりお得に見える.