Funzionalità di SQL Server in Linux

Completato

Per giustificare una migrazione a SQL Server ai responsabili del budget, è utile sapere quali funzionalità di SQL Server possono fornire un vantaggio competitivo per i sistemi aziendali.

Si supponga che, dopo essersi documentati su SQL Server in Linux, si voglia assicurarsi che le funzionalità attualmente disponibili soddisfino i requisiti di Wide World Importers per l'elaborazione dei dati esistenti e futuri.

In questa unità si apprenderanno le principali funzionalità di SQL Server in Linux.

Prestazioni

Per competere con la concorrenza, SQL Server in Linux supporta le esigenze di velocità effettiva elevata delle transazioni e analisi reattiva offrendo una soluzione di elaborazione analitica e transazionale ibrida (HTAP). HTAP usa alcune delle principali tecnologie di SQL Server a livello di prestazioni:

Elaborazione di transazioni online (OLTP) in memoria

Grazie alla combinazione di tabelle con ottimizzazione per la memoria e stored procedure compilate, Wide World Importers ha incrementato sostanzialmente le prestazioni delle tabelle transazionali, ad esempio con la lettura e la scrittura dello stato della sessione per il sito Web di e-commerce.

Indice columnstore

SQL Server supporta sia i dati di riga che i dati a colonne compressi. Le tabelle transazionali possono anche avere un indice columnstore usato al posto dell'indice rowstore durante la scrittura di query analitiche. L'uso di indici columnstore consentirebbe alla soluzione di analisi corrente di mantenere le prestazioni transazionali, eseguendo al tempo stesso query di report in tempo reale sui dati operativi.

Archivio query

Il team di amministrazione del database esegue un'attività di ottimizzazione mensile delle prestazioni per assicurarsi che vengano usati i piani di query corretti. Viene eseguito il monitoraggio delle prestazioni delle query e vengono ripristinati i piani di query in cui le modifiche nei piani di esecuzione hanno influito negativamente sulle prestazioni. Il team segnala anche le prime 10 query con esecuzione più lunga al responsabile dello sviluppo e controlla la presenza di eventuali blocchi di risorse. Query Store supporta tutte queste attività ed è possibile abilitarlo con Transact-SQL:

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

Ottimizzazione automatica ed elaborazione di query intelligente

Dopo aver abilitato Query Store è possibile abilitare la correzione automatica del piano. Con l'abilitazione dell'ottimizzazione abilitata, SQL Server monitora le prestazioni di esecuzione delle query. Se un nuovo piano di query è peggiore della versione precedente, è possibile sostituire il nuovo piano con la versione precedente con prestazioni migliori. L'opzione è disponibile a livello di database, con un'istruzione ALTER:

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

L'elaborazione di query intelligente (IQP, Intelligent Query Processing) è un set di funzionalità, molte delle quali sono una novità di SQL Server 2019, che consentono di migliorare e ottimizzare automaticamente le prestazioni del carico di lavoro. Le funzionalità IQP includono:

  • Join adattivi: SQL Server seleziona dinamicamente un tipo di join durante il runtime in base al numero effettivo di righe di input.
  • Numero approssimativo distinti: SQL Server restituisce un numero approssimativo di risultati distinti per scenari Big Data di esecuzione di query con prestazioni elevate e un carico di memoria basso.
  • Feedback concessione di memoria: se una query include operazioni con spill su disco, SQL Server può aggiungere ulteriore memoria per le operazioni successive. Analogamente, se una query spreca più della metà della memoria allocata, SQL Server può ridurre la memoria assegnata.
  • Compilazione differita variabile di tabella: SQL Server usa la cardinalità effettiva di una variabile di tabella nella prima compilazione anziché di una supposizione fissa.

IQP non richiede la riscrittura di codice o la modifica dello schema del database per sfruttare i miglioramenti a livello di prestazioni. È sufficiente aggiornare un database al livello di compatibilità 150 o superiore:

ALTER DATABASE <database name> SET COMPATIBILITY_LEVEL = 150;

Sicurezza

SQL Server in Linux supporta funzionalità di sicurezza avanzate come Always Encrypted, sicurezza a livello di riga e Dynamic Data Masking per proteggere i dati su disco, in memoria o in transito. Queste funzionalità sono tutte supportate in tutte le edizioni, inclusa la Standard Edition:

  • TDE (Transparent Data Encryption) crittografa i dati inattivi quando vengono archiviati in file di database. I dati sono protetti da utenti malintenzionati sia nel database che nei backup.

  • Always Encrypted garantisce che solo gli utenti proprietari dei dati possano visualizzarli ed elaborarli. Gli utenti che gestiscono i dati, ad esempio gli amministratori del database, non possono visualizzarli. Se si usa Always Encrypted:

    • È possibile eseguire query sui dati crittografati senza prima decrittografarli.
    • I dati sono protetti nello stato inattivo, quando vengono spostati nella memoria del server e quando passano dal server all'app client attendibile.
    • La crittografia e la decrittografia avvengono nel driver client, in modo che il processo sia trasparente per le applicazioni client.
    • Solo le applicazioni attendibili e i proprietari dei dati possono accedervi. Gli sviluppatori di applicazioni e gli amministratori di database non hanno accesso alla chiave di crittografia della colonna (CEK).
  • Il controllo tiene traccia degli eventi che si verificano nel motore di database e degli utenti che li hanno eseguiti. Gli eventi controllati possono essere archiviati nei registri eventi o nei file di controllo ed è possibile usarli per condurre indagini per problemi come gli attacchi e le violazioni dei dati.

  • La sicurezza a livello di riga controlla l'accesso a righe specifiche all'interno di una tabella in base a chi sta eseguendo la query. È possibile controllare chi ha accesso ai dati, ad esempio, in base all'appartenenza al gruppo o al contesto di esecuzione.

  • Il Dynamic Data Masking maschera una parte dei dati. Sono disponibili quattro tipi diversi di maschere: mascheramento di tutti i dati in una colonna, mascheramento degli indirizzi di posta elettronica, mascheramento di numeri casuali per i dati numerici e mascheramento di stringhe personalizzato. È possibile usare il mascheramento delle stringhe personalizzato, ad esempio, per mascherare tutte le cifre di un codice fiscale tranne le ultime quattro.

  • La funzionalità Individuazione dei dati e classificazione identifica, etichetta e segnala i dati sensibili nei database, ad esempio i dati personali. Si tratta di uno strumento incluso in SQL Server Management Studio (SSMS) che rende più semplice ottenere la conformità alle normative sulla privacy dei dati e applicare misure di protezione avanzata ai database contenenti i dati più preziosi. Individuazione dei dati e classificazione è un servizio che fa parte del pacchetto Sicurezza dei dati avanzata.

  • Lo strumento Valutazione della vulnerabilità identifica le vulnerabilità nei database. Quando si conoscono i punti deboli potenzialmente causati dalla configurazione dei server e dalla progettazione dei database, è possibile cercare soluzioni e impedire attacchi comuni. Valutazione della vulnerabilità è un altro servizio di Sicurezza dei dati avanzata.

SQL Server Agent

SQL Server Agent esegue processi di manutenzione e attività automatizzate pianificate. SQL Server Agent supporta i tre carichi di lavoro seguenti:

  • Processi Transact-SQL
  • Posta elettronica database
  • Log shipping

SQL Server Agent è disabilitato per impostazione predefinita, ma è installato e può essere abilitato tramite l'utilità della riga di comando mssql-conf.

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

Disponibilità elevata

SQL Server offre molti modi per specificare il livello di tolleranza di errore accettabile. SQL Server in Linux supporta i gruppi di disponibilità Always On e le istanze di cluster di failover Always On. Per entrambe le opzioni è necessario il pacchetto mssql-server-ha installato in ogni server. Linux supporta il clustering tramite Pacemaker, che è equivalente a Windows Server Failover Clustering (WSCF), sebbene non sia altrettanto strettamente integrato nel sistema operativo host.

Se c'è maggiore flessibilità riguardo a cosa è accettabile a livello di tempo di inattività, il log shipping tramite SQL Agent può fornire warm standby, da usare per il ripristino dalla perdita di dati nel server.

Un'altra soluzione per SQL Server in Linux è il supporto dell'esecuzione in contenitori orchestrati con strumenti come Kubernetes. Gli strumenti di orchestrazione garantiscono che sia sempre presente un nodo che esegue SQL Server. In caso di errore di quel nodo, avviene automaticamente il bootstrap di un'altra istanza. Se i requisiti di disponibilità sono maggiori, è possibile eseguire un gruppo di disponibilità Always On in contenitori.

Altre funzionalità rilevanti

PolyBase

Molte organizzazioni hanno dati in sistemi diversi, ad esempio perché team diversi hanno requisiti diversi per la scelta del sistema, in seguito alla fusione con un'altra società o per qualche altro motivo. È stato tradizionalmente difficile integrare i dati superando questi confini di sistema per rispondere alle domande degli utenti.

Si supponga di avere dati in SQL Server che registrano le vendite per il catalogo prodotti, ma i dati che registrano il costo per ottenere i prodotti sono in un database SAP HANA. Si vuole creare un report che analizza i margini di profitto. Sono necessarie informazioni da entrambi i database. In passato era possibile:

  • Usare un pacchetto di estrazione, trasformazione e caricamento (ETL) per eseguire la migrazione dei dati da un sistema di database all'altro.
  • Eseguire una query su entrambi i database e quindi scrivere codice personalizzato per unire e integrare i risultati in un singolo report.

Entrambi questi approcci sono complessi e possono richiedere tempi di sviluppo significativi per ottenere i risultati previsti.

Con PolyBase è possibile creare una tabella esterna in SQL Server. Una tabella esterna è una connessione a un sistema esterno e a un set di dati ospitato in tale sistema. Dopo averla creata, i client possono inviare query alla tabella esterna esattamente come per le tabelle interne. Le query JOIN possono integrare i dati da tabelle esterne con tabelle interne. Come si può notare, PolyBase consente di superare i confini imposti dai diversi sistemi per i dati e semplificare l'esecuzione delle analisi necessarie sui dati aziendali, indipendentemente dalla relativa posizione.

Nota

Nei sistemi operativi Linux PolyBase è supportato in SQL Server 2019 o versione successiva. Per usarlo, è necessario installare il pacchetto mssql-server-polybase, oltre a SQL Server 2019.

Machine Learning Services

Nel contesto del Machine Learning, i set di dati di grandi dimensioni vengono usati per modellare il comportamento di un sistema complesso. Dopo aver sviluppato un modello che stima accuratamente il comportamento osservato del sistema, tale modello viene usato per stimare il comportamento del sistema in futuro. Sono state sviluppate librerie di codice sofisticate, spesso open source, che possono preparare il set di dati, aggiungervi funzionalità, eseguire il training di un modello, valutare l'accuratezza del modello sottoposto a training e distribuire tali modelli per la chiamata da parte di altri client. Queste librerie sono scritte nei linguaggi R e Python.

SQL Server Machine Learning Services consente di eseguire gli script R e Python sui dati nei database di SQL Server. È possibile aggiungere i framework di Machine Learning e data science più diffusi, tra cui PyTorch, TensorFLow, SciKit-Learn e altri.

Nota

Nei sistemi operativi Linux SQL Server Machine Learning è supportato in SQL Server 2019 o versione successiva. Per usare questa funzionalità, è necessario aggiungere ulteriori pacchetti. Ad esempio, se si vuole usare Python per tutto il codice di Machine Learning, installare il pacchetto mssql-mlservices-mlm-py-9.4.7. Il pacchetto equivalente per R è mssql-mlservices-mlm-r-9.4.7.

Supporto dei grafi

SQL Server offre il supporto nativo per l'archiviazione e l'esecuzione di query sui dati basati su grafi. SQL Server archivia i dati come una serie di entità (nodi) e le relazioni (vertici) tra di essi.

Le ricerche full-text consentono agli utenti di eseguire query su dati di testo che rispettano regole linguistiche. Ad esempio, se si cerca la parola "eseguire", la ricerca full-text restituisce risultati che includono diverse forme della parola, come "eseguito" ed "esecuzione".

Questa funzionalità non è installata per impostazione predefinita. In Linux è possibile abilitarla installando il pacchetto mssql-server-fts.

Carichi di lavoro ETL

I pacchetti SQL Server Integration Services (SSIS) possono essere eseguiti in SQL Server in Linux. Ma oltre a SQL Server in Linux, possono anche connettersi a Microsoft SQL Server in esecuzione in Windows in locale o nel cloud oppure a SQL Server in esecuzione in un contenitore.

È necessario scrivere e gestire i pacchetti SSIS in un computer Windows che esegue SQL Server Data Tools.

Verificare le conoscenze

1.

Quali funzionalità fornisce SQL Server in Linux per supportare la continuità aziendale?

2.

Se i dati vengono crittografati tramite Always Encrypted, quando vengono decrittografati?