上限数万リクエスト/秒で 60,000 -> +90,000 リクエスト/秒を見たいです。
私のセットアップは次のもので構成されています。
ユーザー ---> Web アプリ --> メッセージ キュー --> パーサー --> データベース?
パーサーは現在、COPY を使用して約 18750 レコード/秒を解析/詰め込むことができるため、パーサーを追加し始めるまではその範囲に制限されていることに言及する必要があります。これは今のところ大きな懸念事項ではありません。
できるだけ多くのレコードをできるだけ早く一括アップロードする機能を必要とするシステムがあります。この同じシステム (またはアプローチ方法によって異なる場合があります) は、次のような分析タイプのクエリに応答できる必要があります。
winq = "player = '@player' および " + "(type = 'award' or type = 'return') and hand = hand_num" lostq = "player = 'player' および " + "type != 'award' and type != 'return' and hand = hand_num"
.....別のテーブルにキーオフされているため、(ユーザーごとに) 10 ~ 15,000 回。言うまでもなく、これらの結果は今のところ 10/ページでページ分けされています。
私は以下を見てきました:(これらはすべて同じサーバー上にあると仮定します)
mysql (reg. run of the mill rdbms) -- 15 ~ 20,000 リクエスト/秒の範囲に入ることができました。現在の状況では、これをスケールアウトしようとすると、スケールする必要があるたびに別のホスト/データベースが必要になります。これは実行できません。
couchdb (ドキュメント指向のデータベース) -- 700 リクエスト/秒を超えませんでした。これが私たちのお尻を救うことになることを本当に望んでいました-チャンスではありません!
vertica (列指向のデータベース) -- 1 秒あたり 60000 リクエストに達していました。クローズド ソースで、非常に高価です。これはまだオプションですが、個人的にはまったく好きではありませんでした
tokyocabinet (ハッシュベースのデータベース) -- 現在、1 秒あたり 45,000 回の挿入と 1 秒あたり 66,000 回の選択が行われています。昨日これを書いたとき、毎秒約 5555 リクエストで動作する FFI ベースのアダプターを使用していました。これは私が今まで見たデータベースの中で群を抜いて最速です!!
terracotta -- (vm クラスタ) 現在 jmaglev と一緒にこれを評価しています (maglev 自体が出てくるまで待ちきれません) -- これは最も遅いです!
たぶん私はこの問題に間違ったアプローチをしているだけかもしれませんが、RDBMS は非常に遅いといつも聞いていました。
試験条件::
私の開発ボックスの仕様は次のとおりです。
デュアル 3.2 GHz インテル、1 ギガ RAM
Mysql mysql.cnf の編集は次のとおりです。
key_buffer = 400M # は 16M でした innodb_log_file_size = 100M # 以前は存在しませんでした innodb_buffer_pool_size = 200M # 以前は存在しませんでした
更新::
テラコッタは私たちのアプリケーション構造にあるかもしれませんが、速度がひどく、ヒープの使用率が悪いため、すぐにデータベースを置き換えることはありません.
一方、tokyocabinet の NON-FFI ruby ライブラリ (tyrant/cabinet を意味する) が超高速で、現在 1 位であることは非常に嬉しかったです。