Хранение данных приложения чата ASP.NET - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь создать веб-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, если оно будет иметь какое-то значение

1 Ответ

0 голосов
/ 24 мая 2018

Миллион записей - это арахис.Как вы думаете, почему это будет слишком медленно?Как сказал trailmax: для реляционной базы данных должно быть тривиально получить необходимые записи, учитывая, что ваши индексы и ключи не работают.

Не обращайте внимания на следующее.Я не думал должным образом Что также следует учитывать, если вы действительно хотите отвечать за хранение разговоров между людьми на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...