Эта статья и репозиторий GitHub были обновлены для SQL Server 2025 RC1 и Ubuntu 24.04.
Новое в SQL Server 2025: Вам больше не нужно устанавливать службу PolyBase для работы с файлами Parquet в S3. Ранее, с SQL Server 2022, приходилось создавать пользовательский контейнер или вручную устанавливать PolyBase. Теперь интеграция с объектами S3 и поддержка Parquet работают прямо из коробки!
В этой статье блога я реализовал два примера использования интеграции SQL Server с S3. Одно для резервного копирования и восстановления в совместимое с S3 объектное хранилище, а другое для виртуализации данных с использованием подключения PolyBase к совместимому с S3 объектному хранилищу. Эта работа направлена на то, чтобы облегчить вам освоение этих новых возможностей. Я реализовал всё в Docker Compose, поскольку это продемонстрирует все необходимые шаги для реализации и настройки. Полный код для этого доступен в моём репозитории GitHub. В этой статье мы рассмотрим всё необходимое для реализации интеграции с S3 на практике.
Что нового
- SQL Server 2025 RC1 и Ubuntu 24.04: Теперь можно использовать актуальный образ контейнера SQL Server.
- Больше не требуется установка PolyBase для Parquet/S3: PolyBase больше не требуется устанавливать для интеграции Parquet/S3 в SQL Server 2025.
- Улучшенная обработка сертификатов: Служба
config
генерирует SSL-сертификаты до запуска других служб, обеспечивая правильную последовательность и предотвращая ошибки монтирования. - Улучшения скрипта демонстрации резервного копирования: Скрипт
backup/demo.sh
теперь автоматизирует полный рабочий процесс резервного копирования, включая запуск окружения, создание базы данных, создание учётных данных S3, выполнение резервного копирования и очистку сгенерированных сертификатов. - Настройка PolyBase: Демонстрационный SQL-скрипт теперь включает PolyBase и расширенные параметры в начале, следуя лучшим практикам.
- Согласованное именование: Имена служб и файлов были обновлены для ясности и согласованности.
Тестовое окружение для резервного копирования и восстановления
В каталоге backup
вы найдёте скрипт demo.sh
для запуска окружения и выполнения базового теста подключения с использованием резервного копирования SQL Server. Чтобы всё запустить, перейдите в каталог backup
и выполните:
Как это работает
- Генерация сертификатов:
Службаconfig
создаёт контейнер, который генерирует необходимый SSL-сертификат и сохраняет его в./certs
на хосте. - Служба MinIO:
Службаminio1
запускает контейнер MinIO, открывая порты 9000 (данные) и 9001 (администрирование). Она монтирует сгенерированные сертификаты для TLS. - Создание корзины:
Службаcreatebucket
использует клиент MinIO (mc
) для создания пользователя и корзины (sqlbackups
) для тестирования резервного копирования/восстановления. - Служба SQL Server:
Службаsql1
запускает SQL Server, монтируя публичный сертификат MinIO для доверенных TLS-соединений. - Демонстрационный скрипт:
Скриптdemo.sh
:- Запускает окружение Docker Compose
- Ждёт готовности SQL Server и проверяет подключение
- Создаёт тестовую базу данных
- Создаёт учётные данные S3 в SQL Server
- Выполняет резервное копирование в корзину S3
- (По желанию) Очищает сгенерированные сертификаты командой
rm -rf ./certs
Пример использования
В demo.sh
выполните каждую из этих строк по очереди, чтобы повторить демонстрацию:
Создайте базу данных:
CREATE DATABASE TESTDB1;
Создайте учётные данные S3:
CREATE CREDENTIAL [s3://s3.example.com:9000/sqlbackups] WITH IDENTITY = 'S3 Access Key', SECRET = 'anthony:nocentino';
Резервное копирование в S3:
BACKUP DATABASE TestDB1 TO URL = 's3://s3.example.com:9000/sqlbackups/TestDB1.bak' WITH COMPRESSION, STATS = 10, FORMAT, INIT;
Очистка:
docker compose down --rmi local --volumes
rm -rf ./certs
Окружение PolyBase и виртуализация данных S3
Далее идёт виртуализация данных. В каталоге datavirtualization
этого репозитория есть скрипт demo.sh
и демонстрационный SQL-скрипт demo.sql
. Этот скрипт содержит команды, которые вам понадобятся для запуска окружения и выполнения базового теста подключения с использованием доступа на основе PolyBase к совместимому с S3 объектному хранилищу.
Что нового для SQL Server 2025
- Установка PolyBase не требуется для Parquet/S3:
Вам больше не нужно устанавливать службу PolyBase для работы с файлами Parquet в S3. Это значительное улучшение по сравнению с SQL Server 2022, где приходилось создавать пользовательский контейнер или вручную устанавливать PolyBase для включения этой функциональности. - Упрощённая настройка:
Демонстрационный SQL-скрипт теперь включает PolyBase и расширенные параметры в начале, следуя лучшим практикам.
Как это работает
- Генерация сертификатов:
Службаconfig
генерирует SSL-сертификаты и размещает их в./certs
. - Служба MinIO:
Службаs3.example.com
запускает MinIO со сгенерированными сертификатами. - Настройка корзины и данных:
Службаcreatebucket
создаёт пользователя, корзину (sqldatavirt
) и загружает тестовый CSV-файл. - Служба SQL Server:
Службаsql1
запускает SQL Server 2025 RC1, монтируя публичный сертификат MinIO для TLS.
Настройка PolyBase
Перед созданием внешних источников данных необходимо включить PolyBase. Скрипт demo.sql
теперь включает:
USE master;
GO
sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'polybase enabled', 1;
RECONFIGURE;
GO
Пример использования
- Создайте базу данных и главный ключ
- Создайте учётные данные в контексте базы данных для доступа к S3
- Создайте внешний источник данных, ссылающийся на вашу корзину S3
- Используйте
OPENROWSET
или создайте внешние таблицы для запроса данных в S3 - Используйте
CREATE EXTERNAL TABLE AS SELECT
для создания и чтения файла parquet в S3
См. demo.sql
для полного рабочего процесса.
Требования к памяти
Если вы сталкиваетесь с ошибками памяти при работе с PolyBase, увеличьте выделение памяти Docker до 4 ГБ.
Завершение работы
Когда закончите, можете использовать docker compose down --rmi local --volumes
для очистки всех ресурсов, образов, сети и томов, содержащих базу данных и MinIO.
Комментариев нет:
Отправить комментарий