Определите минимальную задержку прибытия, используя большой набор полетных данных, хранящихся в базе данных. Доступ к базе данных с помощью параллельного пула.
Чтобы инициализировать параллельный пул с подключением к базе данных JDBC, необходимо настроить источник данных JDBC. Для получения дополнительной информации смотрите configureJDBCDataSource
функция.
Использование splitsqlquery
можно разделить исходный запрос SQL на несколько запросов SQL-страниц. Затем вы можете получить доступ к большим данным в фрагментах путем выполнения каждого запроса SQL-страницы для отдельного работника в пуле.
При импорте больших данных эффективность зависит от SQL-запроса, объема данных, спецификаций машин и типа анализа данных. Для управления эффективностью используйте splitsize
входной параметр splitsqlquery
функция.
Если у вас есть лицензия MATLAB ® Parallel Server™, используйте parpool
(Parallel Computing Toolbox)
функция с профилем кластера по вашему выбору вместо gcp
(Parallel Computing Toolbox)
функция.
Создайте подключение базы данных к источнику данных 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 из корзины запросов и импортируйте данные локально.
Найдите локальную минимальную задержку прибытия.
Сохраните локальную минимальную задержку прибытия.
Найдите минимальную задержку прибытия, используя сохраненные задержки от каждого работника.
Закройте параллельный пул.