Определите минимальную задержку прибытия с помощью большого набора полетных данных, сохраненных в базе данных. Доступ к базе данных с помощью параллельного пула.
Чтобы инициализировать параллельный пул с соединением с базой данных 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 от корзины запроса и импортируйте данные локально.
Найдите локальную минимальную задержку прибытия.
Сохраните локальную минимальную задержку прибытия.
Найдите минимальную задержку прибытия с помощью сохраненных задержек от каждого рабочего.
Закройте параллельный пул.