Recursos do SQL Server em Linux

Concluído

Para justificar uma migração do SQL Server para os responsáveis pelo orçamento, é útil saber quais recursos do SQL Server podem fornecer uma vantagem competitiva para seus sistemas.

Digamos que, depois de pesquisar o que é o SQL Server em Linux, você deseja verificar se os recursos disponíveis atualmente atendem aos requisitos da World Wide Importers para o processamento de dados existentes e futuros.

Aqui, você aprenderá sobre recursos da entidade de segurança do SQL Server em Linux.

Desempenho

O SQL Server em Linux dá suporte às necessidades concorrentes de taxa de transferência de transação rápida e análise responsiva oferecendo uma solução de HTAP (Processamento Analítico Transacional Híbrido). O HTAP usa algumas das principais tecnologias de desempenho do SQL Server:

OLTP (processamento de transação online) na memória

Com a combinação de tabelas com otimização de memória e procedimentos armazenados compilados, a Wide World Importers poderia ver ganhos de desempenho substanciais em suas tabelas transacionais, por exemplo, gravando e lendo o estado de sessão para o site de comércio eletrônico.

Índice columnstore

O SQL Server dá suporte a dados de linha e a dados de coluna compactados. As tabelas transacionais também podem ter um índice columnstore usado em vez do armazenamento de linha ao escrever consultas analíticas. O uso de índices columnstore permitiria que o pacote analítico atual preservasse o desempenho transacional e também executasse consultas de relatório em tempo real sobre os dados operacionais.

Repositório de Consultas

Sua equipe de DBA conclui uma tarefa de ajuste de desempenho mensal para verificar se os planos de consulta corretos estão sendo usados. Eles monitoram o desempenho da consulta e revertem os planos de consulta em que as alterações nos planos de execução afetaram o desempenho. A equipe também relata as 10 principais consultas com execução prolongada para o líder de desenvolvimento e verifica eventuais bloqueios de recursos. O Repositório de Consultas dá suporte a todas essas tarefas e você pode habilitá-lo com o Transact-SQL:

ALTER DATABASE <database name>
SET QUERY_STORE (OPERATION_MODE = READ_WRITE);

Ajuste Automático e Processamento Inteligente de Consultas

Você poderá habilitar a correção de escolha de plano automática quando o Repositório de Consultas estiver habilitado. Com o ajuste automático habilitado, o SQL Server monitora o desempenho da consulta. Se um novo plano de consulta for pior do que a versão anterior, o ajuste automático poderá substituir o novo plano pela versão anterior de melhor desempenho. A opção está disponível no nível do banco de dados, com uma instrução ALTER:

ALTER DATABASE <database name>
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );

O IQP (processamento inteligente de consulta) é um conjunto de recursos (muitos dos quais são novos no SQL Server 2019) que melhoram e otimizam automaticamente o desempenho da carga de trabalho. Os recursos IQP incluem:

  • Junções adaptativas: o SQL Server seleciona dinamicamente um tipo de junção durante o tempo de execução com base no número real de linhas de entrada.
  • Contagem aproximada distinta: o SQL Server fornece uma contagem aproximada de resultados distintos para cenários de Big Data a fim de executar tais consultas com alto desempenho e baixa carga de memória.
  • Comentários sobre concessão de memória: se uma consulta tiver operações que despejam em disco, o SQL Server poderá adicionar mais memória para as operações subsequentes. Da mesma forma, se uma consulta desperdiçar mais da metade da memória alocada para ela, o SQL Server poderá reduzir a memória atribuída a ela.
  • Compilação adiada para variável de tabela: o SQL Server usa a cardinalidade real de uma variável de tabela em sua primeira compilação em vez de uma estimativa fixa.

O IQP não exige que você reescreva nenhum código ou que altere o esquema de banco de dados para aproveitar o melhor desempenho. Tudo o que você precisa fazer é atualizar o banco de dados para o nível de compatibilidade 150 ou posterior:

ALTER DATABASE <database name> SET COMPATIBILITY_LEVEL = 150;

Segurança

O SQL Server em Linux dá suporte a recursos de segurança avançados, como Always Encrypted, segurança em nível de linha e máscara de dados dinâmicos para proteger os dados em disco, na memória ou em trânsito. Todos esses recursos têm suporte em todas as edições, incluindo a Edição Standard:

  • A TDE (Transparent Data Encryption) criptografa dados em repouso quando eles estão armazenados em arquivos de banco de dados. Os dados são protegidos contra usuários maliciosos no banco de dados e nos backups.

  • O Always Encrypted garante que somente os usuários que têm os dados possam exibi-los e processá-los. Os usuários que gerenciam os dados, como os administradores de banco de dados, não poderão exibi-los. Se você usar o Always Encrypted:

    • Você poderá consultar os dados criptografados sem ter que descriptografá-los primeiro.
    • Os dados serão protegidos em repouso, ao serem passados para memória do servidor e ao serem passados do servidor para o aplicativo cliente confiável.
    • A criptografia e a descriptografia ocorrem no driver do cliente, tornando o processo transparente para aplicativos cliente.
    • Somente aplicativos confiáveis e os proprietários dos dados podem acessá-lo. Os desenvolvedores de aplicativos e os administradores de banco de dados não têm acesso à CEK (chave de criptografia de coluna).
  • A Auditoria acompanha eventos que ocorrem no mecanismo de banco de dados e quem executou tais eventos. Os eventos auditados podem ser armazenados em logs de eventos ou arquivos de auditoria e você pode usá-los para investigar problemas como ataques e violações de dados.

  • A segurança em nível de linha controla o acesso a linhas específicas em uma tabela com base em quem está executando a consulta. Você controla quem pode acessar os dados, por exemplo, por associação a grupos ou pelo contexto de execução.

  • A Máscara de dados dinâmicos mascara uma parte dos dados. Quatro tipos de mascaramento diferentes estão disponíveis; mascaramento de todos os dados em uma coluna, mascaramento de endereços de email, mascaramento de números aleatórios para dados numéricos e mascaramento de cadeia de caracteres personalizado. Você pode usar o mascaramento de cadeia de caracteres personalizado, por exemplo, para mascarar todos os dígitos de um número do seguro social, exceto os últimos quatro.

  • A Descoberta e a classificação de dados identifica, rotula e emite relatórios sobre os dados confidenciais do banco de dados, como dados pessoais. Trata-se de uma ferramenta dentro do SSMS (SQL Server Management Studio) que facilita a conformidade com a legislação de privacidade de dados e a aumenta a proteção dos bancos de dados que contêm os dados mais valiosos. A descoberta e a classificação de dados é um serviço que faz parte do pacote de ADS (Segurança de Dados Avançada).

  • A Avaliação de vulnerabilidade identifica as vulnerabilidades dos bancos de dados. Ao tomar ciência dos pontos fracos que a configuração do servidor e os designs do banco de dados podem causar, você poderá atenuá-los e evitar ataques comuns. A avaliação de vulnerabilidades é outro serviço de ADS.

SQL Server Agent

O SQL Server Agent executa tarefas automatizadas agendadas e trabalhos de manutenção. O SQL Server Agent dá suporte às três cargas de trabalho a seguir:

  • Trabalhos de Transact-SQL
  • DB Mail
  • Envio de logs

Por padrão, o SQL Server Agent fica desabilitado, mas ele está instalado e pode ser habilitado usando o utilitário de linha de comando mssql-conf.

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server

Alta disponibilidade

O SQL Server tem várias maneiras de especificar o nível de tolerância a falhas aceitável. O SQL Server em Linux dá suporte a grupos de disponibilidade Always On e a instâncias de cluster de failover Always On. Essas duas opções exigem o pacote mssql-server-ha instalado em cada servidor. O Linux dá suporte a clustering com o Pacemaker, que é equivalente ao WSCF (Clustering de Failover do Windows Server), embora não seja tão integrado ao sistema operacional do host.

Se houver mais flexibilidade quanto ao que é aceitável em termos de tempo de inatividade, o Envio de Logs com o SQL Agent poderá fornecer esperas passivas, que poderão ser usadas para recuperação da perda do servidor.

Outra solução para o SQL Server em Linux é a possibilidade de execução em contêineres orquestrados com ferramentas como o Kubernetes. As ferramentas de orquestração garantem que sempre haja um nó em execução no SQL Server. Se esse nó falhar, outra instância será inicializada automaticamente. Quando uma disponibilidade mais robusta for necessária, um grupo de disponibilidade Always On poderá ser executado em contêineres.

Outros recursos notáveis

PolyBase

Muitas organizações têm dados em diferentes sistemas. Isso pode ocorrer porque diferentes equipes tinham requisitos distintos ao selecionar o sistema, devido à mesclagem com outra empresa ou por algum outro motivo histórico. Tradicionalmente, tem sido difícil integrar dados entre esses limites do sistema para responder a perguntas dos usuários.

Suponha que você tenha dados no SQL Server que registram as vendas do catálogo de produtos, mas os dados que registram quanto custa para fazer seus produtos estão em um banco de dados SAP HANA. Você deseja criar um relatório que analise as margens de lucro. Serão necessárias informações de ambos os bancos de dados. No passado, você poderia:

  • Usar um pacote ETL (Extração, Transformação, Carregamento) para migrar os dados de um sistema de banco de dados para o outro.
  • Consultar ambos os bancos de dados e, em seguida, escrever um código personalizado para reunir e integrar os resultados em um único relatório.

Essas duas abordagens são complexas e podem exigir um tempo de desenvolvimento significativo para ficarem corretas.

Com o PolyBase, você poderá criar uma tabela externa no SQL Server. Uma tabela externa é uma conexão com um sistema externo e um conjunto de dados hospedado lá. Depois de criada, os clientes podem enviar consultas para a tabela externa exatamente da mesma forma que fariam com tabelas internas. As consultas do JOIN podem integrar dados de tabelas externas com tabelas internas. Como você pode ver, o PolyBase é capaz de remover os limites que a diferença de sistemas impõem aos dados e de facilitar a realização das análises necessárias sobre os dados corporativos, independentemente da localização.

Observação

Em sistemas operacionais Linux, o PolyBase tem suporte no SQL Server 2019 (ou versão posterior). Para usá-lo, você deve instalar o pacote mssql-server-polybase, além do SQL Server 2019.

Serviço de Machine Learning

No Machine Learning, grandes conjuntos de dados são usados para modelar o comportamento de sistemas complexos. Quando um modelo é desenvolvido para prever com precisão o comportamento observado do sistema, ele é usado para prever como esse sistema pode se comportar no futuro. Bibliotecas sofisticadas de código, geralmente de software livre, foram desenvolvidas e podem preparar seu conjunto de dados, adicionar recursos a ele, treinar um modelo, avaliar a precisão do modelo treinado e implantar esses modelos para que outros clientes chamem. Essas bibliotecas são escritas nas linguagens R e Python.

Os Serviços de Machine Learning do SQL Server permitem que você execute esses scripts de R e Python em relação aos dados dos bancos de dados do SQL Server. Você pode adicionar as estruturas populares de Machine Learning e ciência de dados, incluindo PyTorch, TensorFlow, SciKit-Learn e outros.

Observação

Em sistemas operacionais Linux, o Machine Learning do SQL Server tem suporte no SQL Server 2019 (ou versão posterior). Para usá-lo, você precisa adicionar pacotes extras. Por exemplo, se você quiser usar o Python para todo o código de machine learning, instale o pacote mssql-mlservices-mlm-py-9.4.7. O pacote equivalente para o R é o install mssql-mlservices-mlm-r-9.4.7.

Suporte ao Graph

O SQL Server tem suporte nativo para armazenar e consultar dados baseados no Graph. O SQL Server armazena dados como uma série de entidades (nós) e as relações (bordas) entre elas.

As pesquisas de texto completo permitem que os usuários executem consultas em dados de texto que respeitam regras linguísticas. Por exemplo, quando você pesquisa pela palavra "executar", uma pesquisa de texto completo retorna resultados que incluem formas da palavra "executar", como "executou" e "executando".

Esse recurso não é instalado por padrão. No Linux, você o habilita instalando o pacote mssql-server-fts.

Cargas de trabalho de ETL

Pacotes do SSIS (SQL Server Integration Services) podem ser executados no SQL Server em Linux. Eles não estão restritos à execução somente no SQL Server em Linux. Esses pacotes também podem se conectar ao Microsoft SQL Server em execução no Windows local ou na nuvem ou ao SQL Server em execução em um contêiner.

Você deve gravar e manter pacotes do SSIS em um computador Windows executando o SQL Server Data Tools.

Verificar seu conhecimento

1.

Quais recursos o SQL Server em Linux fornece para dar suporte à continuidade dos negócios?

2.

Se forem criptografados usando o Always Encrypted, quando os dados serão descriptografados?