質問: こんにちは、 現在大学生で、友人とアプリ開発をしてみようと考えているものです。 あるアプリからの呼び出しによってカウントアップしていくだけのAPIを作成しようと思っています。 アプリは1番か2番を選んで端末を振ることでその振った回数が送信されるアプリになります。 例: get /count/1 (1番のカウント回数取得) get /count/2 (2番のカウント回数取得) put /count/1?num=xxx(1番のカウント回数をxxx増加させる) ... ... と言ったAPIを作ろうと思っているのですが、1秒毎に100人ぐらいの人が同時にリクエストを投げる可能性があるため DBにレコードを一つ作りそれをみんなで更新する形にするとデットロックがかかってしまうのではないかと思い心配しています。 また、user_id毎にカウント回数を記録しリアルタイムで集計していく方法もあると思うのですが、どちらがシンプルにできるのでしょうか? 質問がわかりにくくなってしまいましたが、皆様の意見をお聞かせください! FirebaseやAmazon API Gatewayなどのほうが簡単だよ~などと行った意見などでも構いません。 (少し見てみたのですが、今回の場合にどう使うかよく分かりませんでした。) よろしくお願いいたします。
回答: `MySQL` とのことなので以下のいずれか ``` INSERT INTO TOUKEI (register /* 重複投票を避けるなら UNIQUE */, no /* 投票番号 */ ) VALUES ( '127.0.0.1', '1'); SELECT COUNT(no) FROM TOUKEI WHERE no = '1'); ``` または ``` INSERT INTO TOUKEI (no /* 投票番号 */, count /* 投票数 */ ) VALUES ( '1', '1') ON DUPLICATE KEY UPDATE count=count+1; SELECT no FROM TOUKEI WHERE no = '1'); ``` RoR でのソースの回答は以下の理由でしません。 * これは推奨してない質問 だと思われる節があります。 1. 投票に類する質問 2. ソースください適な質問