Использование монголита R для поддержки многих - PullRequest
0 голосов
/ 19 июня 2020

У меня здесь проблема с производительностью

как только я обработал свои данные, мне нужно загрузить их в свой mon go db. мои фреймы данных обычно имеют от 15k до 50k строк и выглядят так.

email          : xxx@xx.com 
user_ipaddress : 189.4.195.66                      
network_userid : 53a127c8-5e96-4cc6-a02a-26feabae3a4a
hash           : 83971e34f91b1a071df2b1ad95602d8960bc002f3475b5ba721d491  
domain_userid  : asjdlkajkdlasjdao3u2oi2oje32o3i42342

суть в следующем: некоторые данные, возможно, уже в базе данных, а domain_userid хранится как массив, поэтому, если «тот же адрес электронной почты» имеет новый domain_userid обновлен. поэтому я не могу просто вставить ... я должен обновить все значения. Я делаю это один за другим вот так

for (j in 1:nrow(v_registers)) {
        row <- v_registers[j,]
        mongoUpsert(MailbaseCon,row$email,row$domain_userid,row$hash)
        pb$tick()
    }


mongoUpsert <- function(p_con,p_email,p_domain,p_hash)
{
  v_query = paste0('{"email":"',p_email,'"}',sep ='')
  v_update = paste0('{"$addToSet":{"domain_userid": "',p_domain,'"},"$set":{"hash": "',p_hash,'"}}')
  p_con$update(query = v_query,update = v_update,upsert = TRUE)
}

, когда я пробовал его локально, это почти мгновенно, но проблема в том, что моя производственная база не является местной! это в облаке ... обработка 15-50k запросов занимает много времени ... например, от 1/4 до 2 часов, есть ли способ опубликовать эти данные в большом количестве? хотелось опереться многим? здесь приемлемо любое другое решение, улучшающее мои характеристики.

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