Как выбрать посты из тысяч тысяч пользователей в базе данных лазурного космоса?

Я создал образец базы данных Cosmos, используя следующую ссылку.

https://docs.microsoft.com/en-us/azure/cosmos-db/how-to-model-partition-example

И это приятная работа. Но у меня есть одна большая проблема. как выбрать топ хотя бы 100 постов из тысяч моих подписчиков. Я думаю много дней. У меня миллион подписчиков. они и их сообщения содержатся в одном документе. что я должен делать? а какой запрос написать?

Не могли бы вы мне помочь!

Спасибо за каждый.


person batbayar    schedule 08.10.2019    source источник
comment
Добро пожаловать в StackOverflow. Взгляните на написание идеального вопроса, чтобы помочь вам задать хороший вопрос, и, таким образом, получить хороший ответ.   -  person Jeroen Heier    schedule 08.10.2019
comment
how to select top at least 100 posts of my thousands of thousands following users. Не могу этого понять. Не могли бы вы опубликовать более подробную информацию? какие данные вы хотите выбрать? Какие-то сложные вопросы?   -  person Jay Gong    schedule 08.10.2019
comment
Спасибо @JayGong, этот образец данных (ссылка выше) отлично подходит для небольших данных. Я могу выбрать 100 лучших сообщений, используя оператор WHERE из небольших данных. Моя проблема заключается в том, чтобы выбрать 100 лучших сообщений из 100 000 подписчиков или, возможно, миллионов пользователей. Я думаю, что заявление WHERE опасно для RU. Я не знаю что делать.   -  person batbayar    schedule 08.10.2019
comment
Функция Top поддерживается Cosmos db, вы пробовали? выберите 100 лучших из c, где ....   -  person Jay Gong    schedule 08.10.2019
comment
azure.microsoft .com/en-us/блог/   -  person Jay Gong    schedule 08.10.2019
comment
да я пробовал. это не проблема. но я не знаю для больших данных. моя база данных похожа на эту ссылку (docs.microsoft.com/en-us/azure/cosmos-db/)   -  person batbayar    schedule 08.10.2019
comment
@JayGong ГДЕ Идентификатор пользователя В (Val1, Val2 ... ValN). это хорошая работа. но я думаю ВалН максимум 1000. ВалН - 1.000.000. Является ли это возможным? или я должен написать любой код С#?   -  person batbayar    schedule 08.10.2019


Ответы (1)


Получите ваше беспокойство: ключевое слово Top хорошо работает с 1000 элементов, но возможно ли это со 100 000 элементов или более?

На основе документа, которым я поделился в комментарий, Cosmos DB выделяет фиксированное количество времени и ресурсов для каждого запроса и, когда это достигается, возвращает токен продолжения, который действует как закладка для возобновления выполнения. В основном это зависит от ваших настроек пропускной способности, если размер данных слишком велик, может возникнуть ошибка 429. См. код HTTP-запроса: https://docs.microsoft.com/en-us/rest/api/cosmos-db/http-status-codes-for-cosmosdb.

Чтобы решить эту проблему, DocumentDB поддерживает длительные запросы через маркеры продолжения. Вы можете установить maxItemCount property для разбиения результатов на страницы. Если верхнее ключевое слово должно следовать некоторым болезненным правилам, таким как select top 100 from c where datetime>XXXXX, это немного сложно. Вам нужно обработать данные подкачки по коду, чтобы получить окончательный результат.

person Jay Gong    schedule 08.10.2019
comment
Большое спасибо, я написал следующий запрос. ВЫБЕРИТЕ c.postId, c.userId, n.userId как nID FROM c JOIN n IN c.followers WHERE c.userId IN ('user01', 'user02'). это хорошая работа. как использовать для миллионов следующих пользователей (user01 ... user1000000)? я хочу использовать только один запрос. Является ли это возможным? - person batbayar; 08.10.2019
comment
@batbayar Я не думаю, что это возможно, потому что я искал эту ссылку: stackoverflow.com/questions/42376973/, я не могу найти никаких дополнительных улучшений ограничения. Я предлагаю вам связаться с командой лазурного космоса, чтобы убедиться в этом. Но я по-прежнему рекомендую вам не использовать такой запрос sql для такого большого условия запроса. - person Jay Gong; 08.10.2019
comment
@batbayar Ограничение, которое я видел, сейчас составляет 8000. - person Jay Gong; 08.10.2019
comment
Спасибо вам большое за ваш ответ. что я должен делать? если можно, дайте совет. - person batbayar; 08.10.2019
comment
@batbayar А, вы можете убедиться, что ограничение по-прежнему составляет 8000, связавшись с командой azure Cosmos db. B, для меня я бы рассмотрел использование ARRAY_CONTAINS(docs.microsoft.com/en-us/azure/cosmos-db/) в sql, перейдите по этой ссылке: github.com/Azure/azure-cosmos-dotnet-v2/issues/614. - person Jay Gong; 08.10.2019
comment
@batbayar Вы можете попробовать и посмотреть, работает ли это. Если вас что-то беспокоит, пожалуйста, дайте мне знать. - person Jay Gong; 08.10.2019
comment
У меня миллион подписчиков. они и их сообщения содержатся в одном документе. что я должен делать? а какой запрос написать? - person batbayar; 08.10.2019