ニコニコ動画やPixivのブックマーク数についてご質問です。
一般的にこのようなサービスのお気に入り(ブックマーク)の数は
どのように加減算しているのでしょうか?
①「お気に入り」された場合に該当動画(イラスト)のお気に入りカラムに+1、外した場合に-1する ※途中でずれる危険性がある
②DBに「お気に入り」専用のテーブル(動画ID、ユーザーID)を設け、一度該当動画の
お気に入り数を算出してから加減算して該当動画のお気に入りカラムに書き込む
③上記以外
できればソースや参考となるURLをご提示いただけると非常に嬉しく思います。
宜しくお願い致します。
コメント(4件)
普通は登録したときにレコード追加して
ブックマーク数を表示するときに
都度集計するんじゃないですかね
更新処理はコストが高いのであまりやらないと思う
コメントありがとうございます。
deguchoさんのご回答見てから思い出したのですが、
ニコニコ動画ではページ詳細だけでなく一覧でもマイリスト(お気に入り)の数が
表示されますし、「マイリストの多い順・少ない順」で並び替えもできるので、
各動画のマイリスト数の情報をもたせないと処理が大変なのではと思ったのです。
>更新処理はコストが高いのであまりやらないと思う
この場合のコストとはどういった意味なのでしょうか?
処理の面で言えば都度集計の方が負荷がかかって大変なイメージが有るのですが・・
ご回答頂ければ嬉しいです。
処理コストが高い、という言い方をしました。
レコード追加型ならロックは必要ないので。
(DBの機構としてロックはあるが処理待ちは発生しない)
都度と書きましたが
ニコニコの場合はマイリストや検索結果一覧の数字と
再生画面での数字に差があるので
適当な間隔で集計バッチを流してそうですね。
(2.のお気に入り専用というよりは再生数や
コメント数も含めた動画のメタ情報テーブル)
数字を見る限り再生画面を開いたときは
都度集計またはそれに準ずるものの気がしますが
度々ご回答ありがとうございます。
私はdeguchoさんが1の方式を指しているものと勘違いしておりました。
おかげさまでなんとなくのイメージを掴むことができました。
終了間近ですができればポイント差し上げたいと思いますので、
適当にご回答頂ければ嬉しく思います。
ありがとうございました。