

例えばメルカリでは、各商品の累計閲覧回数がカウントされていて、自分が出品した商品についてはそれを参照することができます。  
この閲覧回数の永続化でパッと思い浮かぶのは、商品閲覧のたびに直前の閲覧回数をRDBから取得し、それをカウントアップしてRDBに保存するという手段です。  
しかし、メルカリのような多くのユーザーを抱えるサービスでこの方法を採用すると、単位時間あたり大量のSQLが発行されてしまいパフォーマンス上の問題があると思います。

上記の方法以外で、よく採用される閲覧回数のカウント方法がありましたらご教示いただけますと幸いです。


CC BY-SA 4.0
2022-11-26T13:45:38.213
92449
2022-11-27T01:04:26.647
41605
question
sql
Webアプリケーションにおける閲覧回数のカウント方法


どのような環境なのかによって選択できる手段は変わってくると思いますが  
一般的な LAMP 環境を想定するとして、NOSQL の memcache を  
利用するのはいかがでしょうか ?

[Memcached::increment](https://www.php.net/manual/ja/memcached.increment.php)


CC BY-SA 4.0
2022-11-26T14:13:58.537
92450
2022-11-26T14:13:58.537
53097
92449
answer


同一ユーザーの閲覧は除外するのでカあればウントアップだけじゃ実現できないと思うので。  
たぶんRDBでも良いんじゃないでしょうか。

そもそも商品閲覧でもログインユーザーのアクセスでも、常に大量のSQLは発行されてるはずですよね。


CC BY-SA 4.0
2022-11-26T14:16:52.427
92451
2022-11-26T14:16:52.427
15380
92449
answer


要件次第です。

  * 信頼性
  * リアルタイム性
  * アクセス頻度
  * 単純にカウントアップすれば良いのか、何か条件はあるのか
  * かけられるコスト

例えば時々ログを集計して更新すればすむような用途に複雑な仕組みを入れるのはナンセンスです。

前提なしの単なる「よく使われる手法を教えてください」だと各自が思いついた回答が雑多に集まるだけになってしまうので、具体的な条件を前提にした質問にしたほうがよいでしょう。


CC BY-SA 4.0
2022-11-27T01:04:26.647
92454
2022-11-27T01:04:26.647
5793
92449
answer