У меня здесь проблема с производительностью
как только я обработал свои данные, мне нужно загрузить их в свой 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 часов, есть ли способ опубликовать эти данные в большом количестве? хотелось опереться многим? здесь приемлемо любое другое решение, улучшающее мои характеристики.