загрузка (возможно) изменяет большие наборы результатов в django - PullRequest
0 голосов
/ 17 октября 2018

Я занимаюсь разработкой приложения в Джанго для изучения словарного запаса на иностранных языках.у меня есть сценарий использования, в котором пользователь запрашивает слово в качестве следующего вопроса, что, как ожидается, будет повторяться 2-4 раза в минуту на пользователя.
У меня довольно сложная фильтрация, которую мне нужно сделать для каждого выбора слова/ итерации.было бы намного проще, если бы можно было загружать все подходящие слова и выполнять фильтрацию на сервере программно, а не выполнять фильтрацию в запросе, но я не уверен, что было бы разумно загружать такое количество данных.В каждом раунде у меня есть несколько тысяч слов-кандидатов, каждый из которых связан с 100 записями истории угадывания для данного слова и пользователя.каждое слово - это короткий текст (200 байт) и пара числовых полей.текст на самом деле можно игнорировать при выделении, но я не уверен, что django будет запрашивать только те поля, которые необходимы.

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

edit: я надеюсь, что этот псевдокод сделает его более понятным

tables:

word:
   -short text
   -weight (numeric)

guessing event:
   -date/time
   -answer correct or not

server functionality:

procedure choose-next-word():
   -load all candidate words from database, with some crude filtering in the 
   query
   //each word is containing a list of guessing events 
  -calculate a factor for each word based on its guessing events, and on its
     weight
  -randomly choose a word from all candidates, factoring in the calculated 
      factor for each word 
  -return the chosen word  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...