Возможности SQL Server на Linux
Чтобы обосновать миграцию SQL Server для распорядителей бюджета, нужно знать, какие функции SQL Server могут обеспечить конкурентное преимущество для ваших систем.
Предположим, что получив представление об SQL Server на Linux, вы хотите убедиться, что доступные функции соответствуют требованиям Wide World Importers к существующей и будущей обработке данных.
В этом разделе вы узнаете об основных возможностях SQL Server на Linux.
Производительность
SQL Server на Linux поддерживает конкурирующие потребности быстрой транзакционной пропускной способности и динамической аналитики, предлагая решение гибридной транзакционной и аналитической обработки (HTAP). В HTAP используется ряд основных технологий производительности SQL Server.
Выполняющаяся в памяти OLTP
Объединение оптимизированных для памяти таблиц и скомпилированных хранимых процедур, расширенные мировые импортеры могут увидеть значительные преимущества производительности в таблицах транзакций; например, запись и чтение состояния сеанса для веб-сайта электронной коммерции.
Индекс columnstore
SQL Server поддерживает строковые и столбчатые данные. Транзакционные таблицы также могут содержать индекс columnstore, используемый вместо хранилища строк при написании аналитических запросов. Применение таких индексов позволит текущему аналитическому набору сохранять транзакционную производительность при одновременной отправке запросов к рабочим данным для формирования отчетов.
Хранилище запросов
Команда DBA завершает ежемесячную задачу настройки производительности, чтобы убедиться, что используются правильные планы запросов. Они отслеживают производительность запросов и отменить изменения планы запросов, в которых изменения в планах выполнения повлияли на производительность. Команда также сообщает о 10 самых длительных запросах на разработку и проверка на любых блокировках ресурсов. Все эти задачи поддерживаются хранилищем запросов, которое можно включить с помощью Transact-SQL:
ALTER DATABASE <database name>
SET QUERY_STORE (OPERATION_MODE = READ_WRITE);
Автоматическая настройка и интеллектуальная обработка запросов
После включения хранилища запросов можно включить автоматическое исправление выбора плана. При включенной автоматической настройке SQL Server отслеживает производительность запросов. Если новый план запроса работает хуже предыдущей версии, группа может заменить новый план на более производительную версию. Этот параметр доступен на уровне базы данных с помощью инструкции ALTER
:
ALTER DATABASE <database name>
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );
Интеллектуальная обработка запросов (IQP) — это набор функций, многие из которых являются новыми в SQL Server 2019, которые автоматически улучшают и оптимизируют производительность рабочей нагрузки. Возможности IQP:
- Адаптивные соединения: SQL Server динамически выбирает тип соединения во время выполнения на основе фактического количества входных строк.
- Приблизительное количество различий: SQL Server предоставляет приблизительное количество уникальных результатов для сценариев больших данных для выполнения таких запросов с высокой производительностью и низкой нагрузкой на память.
- Отзыв о предоставлении памяти: если запрос содержит операции, которые перетекают на диск, SQL Server может добавить больше памяти для последующих операций. Аналогично, если запрос тратит больше половины памяти, выделенной ей, SQL Server может уменьшить объем памяти, назначенный ей.
- Отложенная компиляция табличных переменных: SQL Server использует фактическую карта inality табличной переменной в первой компиляции вместо фиксированного предположения.
IQP не требует переписать код или изменить схему базы данных, чтобы воспользоваться преимуществами лучшей производительности. Все, что необходимо сделать, — обновить базу данных до уровня совместимости 150 или более поздней версии:
ALTER DATABASE <database name> SET COMPATIBILITY_LEVEL = 150;
Безопасность
Для защиты данных на диске, в памяти или при передаче SQL Server на Linux поддерживает расширенные функции безопасности, такие как Always Encrypted, безопасность на уровне строк и динамическое маскирование данных. Все эти функции поддерживаются во всех выпусках, включая стандартный выпуск:
прозрачное шифрование данных (TDE) шифрует неактивных данных при хранении в файлах базы данных. Данные защищаются от пользователей-злоумышленников как в базе данных, так и в резервных копиях.
Always Encrypted гарантирует, что только пользователи, владеющие данными, смогут просматривать и обрабатывать их. Пользователи, управляющие данными, например администраторы баз данных, не могут просматривать их. При использовании Always Encrypted:
- вы можете запрашивать зашифрованные данные без их расшифровки.
- Данные защищены неактивных данных при перемещении в память сервера и при переходе с сервера на доверенное клиентское приложение.
- Шифрование и расшифровка происходят в драйвере клиента, что делает процесс прозрачным для клиентских приложений.
- Только доверенные приложения и владельцы данных могут получить к ним доступ. Разработчики приложений и администраторы баз данных не имеют доступа к ключу шифрования столбцов (CEK).
Аудит отслеживает события, происходящие в ядре СУБД, и сведения о том, кто выполняет эти события. Проверенные события можно хранить в журналах событий или файлах аудита, и их можно использовать для расследования таких проблем, как атаки и нарушения данных.
Управление доступом на уровне строк к определенным строкам в таблице на основе того, кто выполняет запрос. Вы можете управлять доступом пользователей к данным, например с помощью членства в группе или контекста выполнения.
Динамическое маскирование данных маскирует часть данных. Доступны четыре различных типа маски: маскирование всех данных в столбце, маскирование адресов электронной почты, случайное маскирование чисел для числовых данных и настраиваемое маскирование строк. Маскирование пользовательских строк можно использовать, к примеру, для маскировки всех цифр в номере социального страхования, кроме последних четырех.
Обнаружение и классификация данных определяют, метки и отчеты о конфиденциальных данных в базах данных, таких как персональные данные. Это средство в SQL Server Management Studio (SSMS), которое упрощает соблюдение законодательства о конфиденциальности данных и защиту баз данных, содержащих наиболее ценные данные. Обнаружение и классификация данных — это служба, входящая в состав пакета расширенной защиты данных (ADS).
Оценка уязвимостей выявляет уязвимости в базах данных. После того как вы узнаете о слабых местах, которые могут вызвать конфигурация сервера и структуры баз данных, можно устранить их и предотвратить распространенные атаки. Оценка уязвимостей — еще одна служба ADS.
Агент SQL Server
агент SQL Server выполняет задания обслуживания и запланированные, автоматизированные задачи. Агент SQL Server поддерживает следующие три рабочие нагрузки:
- задания Transact-SQL;
- Database Mail;
- доставка журналов;
По умолчанию агент SQL Server отключен, но установлен. Его можно включить с помощью программы командной строки mssql-conf
.
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server
Высокая доступность
В SQL Server доступно множество способов указания приемлемого уровня отказоустойчивости. SQL Server на Linux поддерживает группы доступности Always On и экземпляры отказоустойчивого кластера Always On. В обоих случаях требуется, чтобы на каждом сервере был установлен пакет mssql-server-ha. Linux поддерживает кластеризацию с помощью Pacemaker, которая эквивалентна отказоустойчивой кластеризации Windows Server (WSCF), но не так тесно интегрирована в операционную систему узла.
Чтобы реализовать более гибкий подход в случае простоя, следует обратить внимание на доставку журналов с помощью агента SQL для обеспечения "горячего" резервирования, которое можно использовать при восстановлении после сбоя сервера.
Другим решением для SQL Server на Linux является его возможность выполняться в контейнерах, оркестрированных с помощью таких средств, как Kubernetes. Средства оркестрации гарантируют, что всегда имеется узел, выполняющий SQL Server. В случае сбоя этого узла автоматически загрузится другой экземпляр. Когда требуется более высокий уровень доступности, в контейнерах можно запустить группу доступности Always On.
Другие важные функции
PolyBase
Многие организации хранят данные в разных системах. Это может быть связано с тем, что разные группы предъявляют различные требования при выборе своей системы по причине слияния с другой компанией или по какой-либо другой исторической причине. Традиционно было сложно интегрировать данные через эти границы этих систем, чтобы удовлетворить запросы пользователей.
Предположим, у вас есть данные в SQL Server, которые записывают продажи каталога продуктов, но данные, которые записывают, сколько стоит сделать продукты в базе данных SAP HANA. Необходимо создать отчет, который анализирует маржи прибыли. Вам понадобятся данные из обеих баз данных. В прошлом можно было бы:
- Использовать пакет извлечения, преобразования и загрузки (ETL) для переноса данных из одной системы базы данных в другую.
- Запросить обе базы данных, а затем написать код для объединения и интеграции результатов в один отчет.
Оба эти подхода являются сложными и могут потребовать значительного времени на разработку.
С помощью Polybase можно создать внешнюю таблицу в SQL Server. Внешняя таблица — это подключение к внешней системе и размещенному в ней набору данных. После создания клиенты могут отправлять запросы к внешней таблице точно так же, как и к внутренним таблицам. Запросы JOIN
могут интегрировать данные из внешних таблиц во внутренние таблицы. Как видите, Polybase позволяет преодолеть границы, которые различные системы накладывают на ваши данные, и упростить анализ, необходимый для бизнес-данных, независимо от их расположения.
Примечание.
В операционных системах Linux технология Polybase поддерживается в SQL Server 2019 или более поздней версии. Чтобы воспользоваться ей, необходимо установить пакет mssql-server-polybase в дополнение к SQL Server 2019.
Служба машинного обучения
В машинном обучении большие наборы данных используются для моделирования поведения сложных систем. При разработке модели, которая точно прогнозирует наблюдаемое поведение системы, они используется для прогнозирования того, как эта система может вести себя в будущем. Разработаны сложные библиотеки кода, которые, как правило, имеют открытый исходный код и позволяют подготовить набор данных, добавить в него компоненты, обучить модель, оценить точность обученной модели и развернуть эти модели для вызова в других клиентах. Эти библиотеки написаны на языках R и Python.
Службы машинного обучения SQL Server позволяют запускать такие скрипты R и Python для данных в базах данных SQL Server. Вы можете добавить популярные платформы машинного обучения и обработки и анализа данных, включая PyTorch, TensorFlow, SciKit-Learn и другие.
Примечание.
В операционных системах Linux машинное обучение поддерживается в SQL Server 2019 или более поздней версии. Чтобы использовать его, необходимо добавить дополнительные пакеты. Например, если вы хотите использовать Python для всего кода машинного обучения, установите пакет mssql-mlservices-mlm-py-9.4.7. Эквивалентным пакетом для R является install mssql-mlservices-mlm-r-9.4.7.
Поддержка графов
SQL Server имеет встроенную поддержку хранения графовых данных и выполнения запросов к ним. SQL Server хранит данные в виде ряда сущностей (узлов) и связей (границ) между ними.
Полнотекстовый поиск
Полнотекстовые поиски позволяют пользователям выполнять запросы к текстовым данным, которые уважают правила лингвиста. Например, при поиске слова "run", полнотекстовый поиск возвращает результаты, включающие формы слова "run", например "run" и "run".
Эта функция не установлена по умолчанию. Чтобы включить ее в Linux, нужно установить пакет mssql-server-fts
.
Рабочие нагрузки ETL (извлечение, преобразование и загрузка)
В SQL Server на Linux можно запускать пакеты SQL Server Integration Services (SSIS). Следует отметить, что их запуск не ограничивается только SQL Server на Linux. Эти пакеты также могут подключаться к Microsoft SQL Server, работающему в локальной или облачной средах Windows, или к SQL Server, запущенному в контейнере.
Пакеты служб SSIS необходимо писать и обслуживать на компьютере Windows, где запущены SQL Server Data Tools.