Я играл с R-интерфейсом в базе данных redis, а также doRedis параллельный сервер для foreach. У меня есть несколько вопросов, чтобы помочь мне лучше применить этот инструмент:
- doMC, doSMP, doSnow и т.д. все работают, вызывая рабочие процессы на одном компьютере, передавая им элемент из списка и функцию для применения, а затем собирая результаты. В случае с doMC рабочие обмениваются памятью. Тем не менее, я немного смущен тем, как база данных может предоставить эту же функциональность.
- Когда я добавляю дополнительный подчиненный компьютер в очередь выполнения doRedis (как в этом видео), вся база данных doredis отправляется на ведомый компьютер? Или каждый подчиненный только данные, которые ему нужны в определенный момент (т.е. Один элемент списка и функция для применения).
- Как явным образом передаю дополнительные данные и функции в очередь выполнения doRedis, чтобы каждому подчиненному устройству нужно было выполнить его вычисления?
- При использовании doRedis и foreach есть ли дополнительные "gotchas", которые могут не применяться к другим параллельным бэкэндам?
Я знаю, что это много вопросов, но я столкнулся с ситуациями, когда мое ограниченное понимание того, как работает параллельная обработка, мешает моим способностям реализовать ее. Например, я недавно попытался распараллелить вычисления в большой базе данных и поймал себя на передачу всей базы данных на каждый node в моем кластере - операцию, которая полностью уничтожила все преимущества, которые я получил от распараллеливания.
Спасибо!