Я слышу эхо из моего прошлого, и я хотел бы предложить другой подход на тот случай, если вы собираетесь повторить мою ошибку.Это может или не может быть применимо к вашей ситуации.
Вы писали, что вам нужно извлечь большой объем данных из базы данных, а затем сохранить обратно в базу данных.
Будет ли этоМожно ли временно вставить любые внешние данные, с которыми вам нужно работать, в базу данных и выполнить всю обработку внутри базы данных?Это дает следующие преимущества:
- Это устраняет необходимость извлечения больших объемов данных
- Это устраняет необходимость сохранения больших объемов данных
- Это позволяетобработка на основе множеств (которая превосходит процедурную)
- Если ваша база данных поддерживает ее, вы можете использовать параллельное выполнение
- Она дает вам основу (таблицы и SQL) для создания отчетов о любых ошибкахвы сталкиваетесь во время процесса.
Чтобы привести пример.Давным-давно я реализовал (java) программу, цель которой состояла в том, чтобы загружать покупки, платежи и связанные данные клиентов из файлов в центральную базу данных.В то время (и я глубоко сожалею об этом) я спроектировал нагрузку для обработки транзакций по одной и для каждого фрагмента данных выполнял несколько операций поиска в базе данных (sql) и, наконец, несколько вставок в соответствующие таблицы.Естественно, это не масштабировалось после увеличения громкости.
Затем я сделал еще одну ошибку.Я решил, что проблема была в базе данных (потому что я услышал , что SELECT работает медленно), поэтому я решил вытащить все данные из базы данных и выполнить ВСЕ обработки в Java.И, наконец, сохранить все данные обратно в базу данных.Я реализовал все виды слоев с механизмами обратного вызова, чтобы легко расширить процесс загрузки, но я просто не мог заставить его работать хорошо.
Глядя в зеркало заднего вида, я должен был вставить (смехотворно небольшое количество) 100 000 строк временно в таблице, и обработать их оттуда.На то, что заняло почти полдня, заняло бы самое большее несколько минут, если бы я использовал все технологии, которыми располагал.