Определите минимальную задержку прибытия с помощью большого набора полетных данных, сохраненных в базе данных. Доступ к базе данных с помощью параллельного пула.
Чтобы инициализировать параллельный пул с соединением с базой данных JDBC, необходимо сконфигурировать источник данных JDBC. Для получения дополнительной информации смотрите, что configureJDBCDataSource
функционирует.
Используя функцию splitsqlquery
, можно разделить исходный SQL-запрос в несколько запросов страницы SQL. Затем можно получить доступ к большим данным во фрагментах путем выполнения каждого запроса страницы SQL на отдельном рабочем в пуле.
Когда вы импортируете большие данные, производительность зависит от SQL-запроса, объема данных, спецификаций машины и типа анализа данных. Чтобы управлять производительностью, используйте входной параметр splitsize
функции splitsqlquery
.
Если у вас есть лицензия MATLAB® Parallel Server™, то используйте функцию parpool
с кластерным профилем по вашему выбору вместо функции gcp
.
Создайте соединение с базой данных к источнику данных JDBC MSSQLServerJDBCAuth
. Этот источник данных конфигурирует драйвер JDBC к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.
Задайте SQL-запрос, чтобы выбрать все столбцы из таблицы airlinesmall
, которая содержит 123 523 строки и 29 столбцов.
Разделите исходный SQL-запрос в несколько запросов страницы и отобразите их. Задайте размер разделения 10 000 строк.
querybasket =
13×1 string array
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 0 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 10000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 20000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 30000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 40000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 50000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 60000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 70000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 80000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 90000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 100000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 110000 ROWS FETCH NEXT 10000 ROWS ONLY"
" SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 120000 ROWS FETCH NEXT 3523 ROWS ONLY"
Корзина запроса содержит запросы страницы в массиве строк. Каждый SQL-запрос в корзине, кроме последней, возвращает 10 000 строк.
Закройте соединение с базой данных.
Запустите параллельный пул.
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).
Инициализируйте параллельный пул с помощью источника данных JDBC.
Задайте переменную airlinesdata
.
Задайте минимальную переменную minArrDelay
задержки прибытия.
Используйте функцию parfor
, чтобы параллелизировать доступ к данным с помощью корзины запроса.
Для каждого рабочего:
Получите объект соединения с базой данных.
Выполните запрос страницы SQL от корзины запроса и импортируйте данные локально.
Найдите локальную минимальную задержку прибытия.
Сохраните локальную минимальную задержку прибытия.
Найдите минимальную задержку прибытия с помощью сохраненных задержек от каждого рабочего.
Закройте параллельный пул.