9

MySQL をキー値データベースとして使用する場合と、Redis/MongoDB/CouchDB を使用する場合のパフォーマンスへの影響を知りたいです。私は過去に Redis と CouchDB の両方を使用したことがあるので、それらのユースケースに精通しており、キーと値のペアを NoSQL と MySQL で保存する方が良いことを知っています。

しかし、ここに状況があります:

  • 私たちのアプリケーションの大部分には、すでに多くの MySQL テーブルがあります
  • Heroku ですべてをホストしています (MongoDB と MySQL しかなく、基本的にアプリごとに 1 db タイプです)。
  • この場合、複数の異なるデータベースを使用したくありません。

基本的に、MySQL でキー/値テーブルを持つことのスケーラビリティに関する情報を探しています。おそらく、3つの異なる任意の層で:

  • 1 日あたり 1000 回の書き込み
  • 1 時間あたり 1000 回の書き込み
  • 毎秒 1000 回の書き込み
  • 1 時間あたり 1000 回の読み取り
  • 1 秒あたり 1000 回の読み取り

実際の例は、MixPanel の Real-time Web Analytics Tracker のようなものを構築する場合です。これは、トラフィックに応じて非常に頻繁に記述する必要があります。

Wordpress やその他の一般的なソフトウェアは常にこれを使用しています。Post にはキーと値だけの「メタ」モデルがあるため、検索可能なオブジェクトに任意のプロパティを追加できます。

もう 1 つのオプションは、シリアル化可能なハッシュを BLOB に格納することですが、それはより悪いようです。

あなたの見解は何ですか?

4

5 に答える 5

2

NOSQL ソリューションを使用する方が単純であるため、高速になることは間違いありません。
NOSQL とリレーショナルは互いに競合するものではなく、さまざまな問題を解決できるさまざまなツールです。
1 日または 1 時間あたり 1000 回の書き込みであれば、MySQL には問題はありません。
1 秒あたり 1000 の場合、そこに到達するには派手なハードウェアが必要になります。NOSQL ソリューションの場合、分散ファイル システムが必要になる可能性があります。

また、保管するものによっても異なります。

于 2010-06-19T23:33:28.760 に答える
2

次の重要な側面を知っているのはあなただけなので、独自のベンチマークを実行する必要があると思います。

  • この KV テーブルに格納されるデータのサイズ
  • 達成したい並列処理のレベル
  • MySQL インスタンスに到達する既存のクエリの数

また、このデータの耐久性要件によっては、複数のエンジン (InnoDB、MyISAM) もテストする必要があると思います。

一部の NoSQL ソリューションはより高速であると期待していますが、制約に基づいて、MySQL が要件に対して十分に機能することがわかる場合があります。

于 2010-06-20T11:19:10.883 に答える
2

SQLデータベースは永続化レイヤーとしてますます使用され、計算と配信はKey-Valueリポジトリにキャッシュされます。

これを念頭に置いて、彼らはここでかなりのテストを行いました:

  • InnoDB は ITS PEAK* で毎秒 43,000 レコードを挿入します。
  • TokuDB は ITS PEAK* で毎秒 34,000 レコードを挿入します。
  • この KV は、1 秒あたり 1 億件のレコードを挿入します (2,000 倍以上)。

あなたの質問に答えるために、Key-ValueリポジトリはMySQL数桁も上回る可能性があります。

処理100,000,000項目:

kv_add()....time:....978.32 ms
kv_get().....time:....297.07 ms
kv_free()....time:........0.00 ms

OK、あなたのテストは1,0001 秒あたりの操作数でしたが、それ以上のことができても害はありません1,000!

詳細については、こちらを参照してください ( との比較も行っていTokyo Cabinetます)。

于 2011-02-05T19:37:10.803 に答える
1

著者が MongoDB と MySQL のパフォーマンスを比較するテストを実行し、MySQL パフォーマンス チューニングの混乱に対処する一連のブログ投稿をここで確認してください。MongoDB は 1 秒あたり約 100K 行の読み取りを実行し、c/s モードの MySQL は最大 43K を実行していましたが、組み込みライブラリを使用して、1 秒あたり最大 172K 行の読み取りを実現しました。

単一のノードでこれほど高い値を取得するのは少し複雑に聞こえるので、ymmv.

1 秒あたりの書き込み数の質問は少し難しくなりますが、それでも、試してみるべき構成についていくつかのアイデアが得られるかもしれません。

于 2012-08-28T17:59:05.860 に答える