アクセスの偏り
読みと書きは同じ数ではない
席の予約サービスでは、予約1件の裏で空席の読み取りが何度も走ります。
1日18万回の要求のうち、実際の書き込みは3000件ほどです。残りは全部読み取りです。
割合にすると読みが98パーセントを超えます。
主役ではありますが、数では負けます。
人は迷います。1件決めるまでに何度も見ます。 見る回数が決める回数を大きく上回るのは、選ぶ行為があるサービスに共通です。
偏りが設計を決める
読みが多いと分かると、打てる手が決まります。
キャッシュが効き、複製を増やせば読みを逃がせます。書き込みは複製しても減らないので、別の手が要ります。
Python
# 読み 180000 / 書き 3000 → 読みが98パーセント複製を増やすと、書き込みが遅くなります。書いた内容を全部の複製へ配るからです。
読みを楽にする手は、たいてい書きを重くします。どちらが多いかを先に数えるのは、どちらを重くしてよいかを決めるためです。
演習
読みと書きの件数から、読みの割合と、どちら寄りのサービスかを返します。
要件
- read_share は reads × 100 ÷ 全体件数を四捨五入した整数。全体が 0 なら 0
- shape は read_share が70以上なら "read-heavy"、30以下なら "write-heavy"、その間なら "balanced"
- 全体が 0 のときは shape を "unknown" にする
ヒント
編集 ゆめさく編集部