Ищу техническое решение;Чтобы запросить данные из одного БД и загрузить их в базу данных SQL Server с помощью весенней загрузки Java.
Ложный запрос для получения productNames, которые обновляются между заданным временем 20 часов:
SELECT
productName, updatedtime FROM
products WHERE
updatedtime BETWEEN '2018-03-26 00:00:01' AND '2018-03-26 19:59:59';
Вот подход, которым мы следовали.
1) Это длительный запрос Oracle, который выполняется приблизительно в 1 час в рабочее время и возвращает ~ 1 миллион записей.
2) Мы должны вставить / вывести этот набор результатов в таблицу SQL Server с использованием JDBC.
3) Как я знаю, драйвер Oracle JDBC поддерживает потоковую передачу.Когда мы перебираем ResultSet, он загружает только строки fetchSize в память.
int currentRow = 1;
while (rs.next()) {
// get your data from current row from Oracle database and accumulate in a batch
if (currentRow++ % BATCH_SIZE == 0) {
//insert whole accumulated batch into SqlServer database
}
}
В этом случае нам не нужно хранить весь огромный набор данных из Oracle в памяти.И мы будем вставлять в SqlServer партиями BATCH_SIZE.Единственное, что нам нужно подумать, где делать коммит в базу данных SqlServer.
4) Здесь узким местом является время ожидания выполнения запроса для получения данных из oracle db, поэтому я планирую разделить запросна 10 равных частей, таких как каждый запрос, чтобы дать обновленное время между каждым часом, как показано.так что время выполнения также уменьшается до ~ 10 минут для каждого запроса.Например: ВЫБЕРИТЕ productName, updatedtime ИЗ продуктов, ГДЕ обновленное время МЕЖДУ '2018-03-26 01:00:01' И '2018-03-26 01:59:59';
5. Для этого мне потребовалось 5Соединения Oracle JDBC и 5 Sql-сервер (для запроса данных и вставки в БД) выполняют свою работу независимо.Я новичок в пуле соединений JDBC. Как я могу сделать пул соединений и закрыть соединение, если оно не используется и т.д.?
Пожалуйста, предложите, если у вас есть какой-либо другой лучший способ, чтобы получить данные из источника данных быстро в режиме реального времени.Пожалуйста, предложите.Заранее спасибо.