Asp.Net MVC signal R сообщения чата, сохраненные в базе данных документа или таблице Azure

База данных Sql Server в Azure кажется неэффективной и дорогой, если сообщения чата забивают мою базу данных большим количеством данных, когда пользователи общаются друг с другом.

Есть ли лучшее решение Azure, в котором я все еще могу сохранять данные, связанные с сообщением (например, от идентификатора к идентификатору, метке времени и т. д.).

Если вы не знакомы с Document DB и таблицами Azure, в чем разница и будет ли одно из них хорошим решением? Или есть решение получше? Может быть, федерации Sql Azure?

В настоящее время я использую blob для хранения изображений, но это не похоже на хорошее решение для сообщений чата.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
290
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Таблицы Azure - это красиво и дешево. Это позволит вам выполнять поиск по разделу и идентификатору внутри раздела - все остальное не индексируется и не может быть легко найдено. Если вам нужно только получить ваши чаты по пользователю / дате - это может сработать.

Cosmos DB намного более гибок, чем Azure Tables, но намного дороже с гораздо большим количеством скрытых затрат, таких как производительность как стоимость. И платить за каждую коллекцию, даже если вы ею не пользуетесь.

возможно, вы можете посоветовать ... Это типичный социальный сайт, такой как Match или OkCupid, мне нужна страница, на которой можно увидеть предыдущие сообщения с фотографиями пользователей и отметками времени и последним сообщением. Затем, если щелкнуть предыдущее сообщение, я могу открыть другую страницу, где находятся последние ~ 6 сообщений и могут быть созданы новые сообщения. Кроме того, если на странице профиля пользователь нажимает кнопку чата, открывается небольшое окно чата, в котором можно поговорить с этим пользователем, и, возможно, последние 1-2 сообщения также будут там.

user1186050 27.10.2018 02:34

Из ваших комментариев я вижу, что если я просто хочу вызвать чаты от предыдущего пользователя, таблицы будут работать нормально, но как насчет страницы, где мне нужно показать чаты, скажем, от последних 6-10 пользователей !? Есть ли способ запросить в таблице все сообщения от меня (идентификатор), а затем отсортировать их по уникальному идентификатору (идентификатор пользователя, которому я отправил сообщение) и дате?

user1186050 27.10.2018 02:36

Я бы сохранил метаданные чата (например, кто с кем и когда разговаривает и т. д.) В базе данных SQL, а также сохраню GUID чата в SQL, но фактический текст чата будет храниться в таблице Azure. Таким образом, вы можете искать по своим метаданным и показывать последние X чатов / сообщений, но сохранять данные в таблицах.

trailmax 27.10.2018 02:41

Применяется тот же принцип - вы можете хранить фактические чаты в больших двоичных объектах Azure, если вы можете получить идентификатор из SQL.

trailmax 27.10.2018 02:42

но, согласно вашей рекомендации, я бы тогда не стал хранить идентификатор и некоторые другие метаданные для каждого сообщения чата? Разве это не привело бы к взрыву и моей базы данных? Этого я бы хотел избежать! Я имею в виду, если я собираюсь сохранить это Sql Server, то почему бы просто не сохранить еще ~ 100 байт или около того? Сообщения в чате довольно короткие, и я могу ограничить их количество, если захочу.

user1186050 27.10.2018 02:43

Я говорю о чатах, а не об отдельных сообщениях. Сообщения отправляются в Таблицы, информация о чатах - в SQL. Выберите, где положить то, что вам нужно

trailmax 27.10.2018 02:47

Я понимаю, думаю! Метаданные на сервере Sql и содержимое сообщения в таблице или большом двоичном объекте Azure, но разве это не приведет к взрыву базы данных?

user1186050 27.10.2018 02:48

Потенциально. Я не знаю. Зависит от того, что вы решите сохранить в SQL и сколько у вас будет чатов. Но если у вас достаточно чатов, о которых нужно беспокоиться, у вас будет достаточно денег, чтобы покрыть расходы на хранение, иначе это бесполезно.

trailmax 27.10.2018 02:52

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

user1186050 27.10.2018 02:56

Миллионы пользователей - это хорошая проблема. Если у вас возникла такая проблема - у вас будут ресурсы для перезаписи хранилища. Не зацикливайтесь на этом.

trailmax 27.10.2018 03:00

последний вопрос ... Я никогда не использовал таблицы Azure, могу ли я запрашивать и фильтровать по свойствам сущности. бывший. если у объекта, который я сохраняю, есть дата, от идентификатора до идентификатора и т. д.? Точно так же, как данные SQL-сервера, но все это делается в таблице Azure? или я могу запросить таблицу Azure только по идентификатору? Или как насчет другого решения, в котором я создаю раздел таблицы для каждого пользователя? будет ли это хорошим решением или слишком дорогим в долгосрочной перспективе?

user1186050 27.10.2018 03:02

Понятно, это по ключу раздела, а затем по ключу строки. Жаль, что нет третьего ключа, который решал бы множество проблем.

user1186050 27.10.2018 03:07

Другие вопросы по теме