Я пытаюсь создать веб-API для приложения чата с использованием ASP .NET, и я застрял в том, как я должен хранить все отправленные сообщения.
В этом уроке https://pusher.com/tutorials/chat-aspnet/ автор хранит все сообщения в одной БД.Они находят все сообщения, относящиеся к одному диалогу с этой строкой:
conversations = db.Conversations.Where(c => (c.receiver_id == currentUser.id
&& c.sender_id == contact) ||
(c.receiver_id == contact
&& c.sender_id == currentUser.id))
.OrderBy(c => c.created_at).ToList();
И я считаю этот метод слишком медленным.Я сделал некоторые расчеты и обнаружил, что если у вас есть 100 активных пользователей, отправляющих около 30 сообщений каждый, в год будет миллион сообщений.Циклический переход через миллион строк каждый раз заставляет приложение работать медленно, как меласса.
Тем не менее мне удобно использовать Entity Framework для работы с БД.
Итак, как правильно хранить такие массивы данных, как сообщения?Должна ли это быть отдельная БД для каждого разговора?Если да, есть ли способ создать их автоматически с Entity Framework?Или, может быть, есть какое-то лучшее решение?
Заранее спасибо
PS Я хотел бы создать основное приложение ASP .NET, если оно будет иметь какое-то значение