各通知に UID があり、複数のユーザーに配信する必要がある通知アーキテクチャを設計しようとしています。各ユーザー デバイスには、最新の通知のローカル キャッシュがあります。ユーザー デバイスがオンラインになると、常に新しい通知がチェックされ、そのユーザー向けの通知がすべてプルされます。デバイスは、同期した最新の通知の UID を保持し、その UID を使用してサーバーから新しい通知をフェッチします。
これを MySQL テーブルに実装して、50 万人以上のユーザーに対応できるようにする最善の方法を考えています。
通知 UID が自動インクリメント主キーである通知詳細テーブルがあります。次のようなユーザーマッピングテーブルに関する提案が必要です(外部キー制約を無視します)
CREATE TABLE user_notifications_mapping (
user_id INT UNSIGNED NOT NULL,
notification_id BIGINT UNSIGNED NOT NULL,
UNIQUE KEY (user_id, notification_id)
) ENGINE=InnoDB;
しかし、次のようなクエリを作成しているときに最高のパフォーマンスになるかどうかは懐疑的です
SELECT notification_id FROM user_notifications_mapping WHERE user_id = <user-id> AND notification_id > <last-notification-uid>