Разделяй и властвуй!
Если исходная БД не может обрабатывать обе задачи одновременно (ETL и «обычные» транзакции), то не заставляйте ее страдать:
- Скопируйте исходные данные в"зеркало".
- Выполните ETL на «зеркале».
Примечание: когда я говорю «зеркало», я просто имею в виду копию, которая позволяет быстро и эффективно копировать данные (немного похоже на«промежуточная» база данных) - не еще один большой / медленный / неприятный процесс ETL.Идея здесь состоит в том, чтобы оптимизировать процесс в интересах исходной БД.
Затем вы можете оптимизировать ETL для целевой БД, чтобы получить выгоду для целевой БД;потому что вы дразнили источник и цель отдельно, вам будет легче оптимизировать части чтения / вставки общего процесса.
Возможно, вы могли бы сделать аналогичную вещь и на конце цели (используя другое "зеркало""/ staging DB).
Этот подход не сильно отличается от того, что вы предложили, но я предполагаю, что при прямом копировании данных между двумя идентичными БД одного типа будет и самым простым в управлении, и самым эффективным.
После этого вы можете начать применять некоторые другие предложения, которые могут выдвигать другие.
И последнее: вы можете поэкспериментировать сИнструмент ETL - если вы работаете