TL;DR
メッセージなどを読んだかどうかを管理するときに、「未読」ではなく「既読」をデータとして保存する戦略。
仕組み
未読管理では「未読」をデータとして保存している。これとは逆に、ユーザが読んだときに「既読」のデータを作る方法もある。ここでは、対象のデータをチャットの「メッセージ」とする。
注意点
既読を保存する方法には、次のメリットがある。
- ユーザが操作したときに既読のデータを作るので、作成処理をユーザごとに分散できる
- データを削除する必要がない
一方で、次のデメリットがある。
- 画面に表示するのは「未読」なので、クエリやレスポンスの組み立てが少し複雑になる
- データが溜まり続ける。半年や 1 年など、既読を管理する期間を決めておく必要がある。期限切れのデータの削除は、メッセージの作成・更新・削除の操作時に行う。対象のメッセージ数が 10 個前後と少なければ、同期的に処理しても問題ないと考えられる
自分の理解
管理する期間を決めておけば、データをシーケンシャルに扱えるのではないかと考えた。
ただ、そもそも未読を管理して、読んだら論理削除すれば良いのではないか、とも思う。