В моем текущем проекте я использую две базы данных.
- Экземпляр MongoDB, собирающий данные от разных поставщиков данных (около 15M документов)
- Удержание другого (реляционного) экземпляра базы данныхтолько данные, которые необходимы для приложения, то есть подмножество данных в экземпляре MongoDB.(около 5M строк)
В рамках процесса синхронизации мне необходимо регулярно проверять наличие новых записей в MongoDB в зависимости от данных в реляционной БД.
Скажем, этоЧто касается песен и исполнителей, документ в MongoDB может выглядеть следующим образом:
{_id:1,artists:["Simon","Garfunkel"],"name":"El Condor Pasa"}
Часть процесса синхронизации заключается в импорте / обновлении всех песен тех исполнителей, которые уже существуют в реляционной БД, которыев настоящее время около 1M исполнителей.
Итак, как мне извлечь все песни названных исполнителей 1M из MongoDB для импорта?
Моей первой мыслью (и попыткой) было найти всех исполнителей и запросить все песни длякаждого художника (конечно, есть указатель на поле «исполнители»).Но это займет несколько минут для каждой партии из 1000 исполнителей, что сделает этот процесс длительным.
Моя вторая мысль состояла в том, чтобы записать всех существующих исполнителей в отдельную коллекцию mongoDB и создать суперзапрос, который только извлекает песнихудожников, которые хранятся там.Но до сих пор я не смог получить данные, основанные на двух коллекциях.Это хороший вариант использования для карты / уменьшить?Если да, может кто-нибудь, пожалуйста.подскажите как этого добиться?(Я не совсем новичок в NoSQL, но вроде новичка, когда дело доходит до отображения / уменьшения.) Или эта идея просто сумасшедшая, и мне нужно придерживаться процесса, который выполняется в течение нескольких дней?
Спасибозаранее за любые подсказки.