ご挨拶スタッカー。並行データの_lots_をレールで設計してテストする方法は?
私たちは、精神実験の参加者のための2番目から2番目の追跡データを保存するプロジェクトに取り組んでいます。現在の設計では、60秒間のタイムスタンプ/アクティビティのペアリングを収集し、データを文字列として投稿するFlashクライアントと、参加者のメタデータをレール(3.0.3)/ MySQL(5.1)アプリケーションに投稿しています。 を編集するフロントにはバニラのPassenger/Nginxを使用しています。レールは、平行配列にタイムスタンプ/活性文字列を分割し、単一の生SQL INSERTステートメントを生成し、大規模なテーブルにすべてを突きつけ、すなわち: (簡略化コード)
@feedback_data = params[:feedbackValues].split(",")
@feedback_times = params[:feedbackTimes].split(",")
inserts = []
base = "(" + @userid + "," + @studyid + ","
@feedback_data.each_with_index do |e,i|
record = base + @feedback_times[i].to_s + ","
record += "'" + @feedback_data[i].to_s + "')"
inserts.push(record)
end
sql = "INSERT INTO excitement_datas (participantId, studyId, timestamp, activityLevel) VALUES #{inserts.join(", ")}"
ActiveRecord::Base.connection.execute sql
収量:
INSERT INTO STUDY_DATA (participantId, studyId, timestamp, activityLevel)
VALUES (3,5,2011-01-27 05:02:21,47),(3,5,2011-01-27 05:02:22,56),etc.
デザインはチームについて多くの議論を引き起こしています。研究には10人または100人の同時参加者がいます。着信データがより均等に分散されるように、各クライアントの60秒のPOST間隔をずらしていますが、私はまだ多くの運命と暗い予測を得ています。
レールでこのデザインのスケーラビリティを向上させるために、他に何ができるのですか?
これが負荷のもとでどのように実行されるかを正確に予測するために使用できるツール/テクニックは何ですか?
多くのありがとうございます。