Funzionalità di SQL Server in Linux
- 7 minuti
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.
Dopo aver studiato qual è SQL Server in Linux, è necessario assicurarsi che le funzionalità disponibili correnti soddisfino i requisiti di Wide World Importers per l'elaborazione dati esistente e futura.
Qui vengono fornite informazioni sulle funzionalità principali 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
Se combinano tabelle ottimizzate per la memoria e stored procedure compilate, Wide World Importers potrebbe riscontrare notevoli miglioramenti delle prestazioni sulle tabelle transazionali; ad esempio, scrittura e lettura 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 usare un indice columnstore anziché un indice di memorizzazione a righe 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. Monitorano le prestazioni delle query e ripristinano i piani di query in cui le modifiche nei piani di esecuzione influiscono 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 intelligente delle query
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 );
Intelligent Query Processing (IQP) è un set di funzionalità, molte delle quali sono nuove in SQL Server 2022, che migliorano e ottimizzano automaticamente le prestazioni del carico di lavoro. Le funzionalità IQP includono:
Join adattivi (modalità batch): i join adattivi selezionano dinamicamente un tipo di join durante il runtime in base alle righe di input effettive.
Esecuzione intercalata: usa la cardinalità effettiva della funzione valore di tabella a più istruzioni rilevata nella prima compilazione invece di un'ipotesi fissa.
Feedback sulla concessione di memoria (modalità Batch): se una query in modalità batch include operazioni che comportano uno spill su disco, aggiungere più memoria per migliorare le esecuzioni consecutive. Se una query comporta uno spreco > del 50% della memoria allocata, ridurre la dimensione di concessione di memoria per le esecuzioni consecutive.
Conteggio approssimativo distinto: fornire un'approssimazione con vantaggi di elevata performance e un'impronta di memoria ridotta negli scenari del Big Data.
Modalità batch in Rowstore: specificare la modalità batch per carichi di lavoro DW relazionali associati alla CPU senza richiedere indici columnstore.
Feedback sulle concessioni di memoria (modalità riga): se una query in modalità riga ha operazioni che vengono spostate su disco, assegnare più memoria per le esecuzioni consecutive. Se una query comporta uno spreco > del 50% della memoria allocata, ridurre la dimensione di concessione di memoria per le esecuzioni consecutive.
Integrazione di funzioni definite dall'utente scalari: le funzioni definite dall'utente scalari vengono trasformate in espressioni relazionali equivalenti che vengono integrate nella query chiamante, spesso con notevoli miglioramenti delle prestazioni.
Compilazione posticipata della variabile di tabella: usa la cardinalità effettiva della variabile di tabella rilevata nella prima compilazione anziché un'ipotesi fissa.
Percentile approssimativo: calcola rapidamente i percentili per un set di dati di grandi dimensioni con limiti di errore accettabili basati sul rango per prendere decisioni rapide usando funzioni di aggregazione percentile approssimative.
Feedback sulla stima della cardinalità (CE): regola automaticamente le stime della cardinalità per le query ripetute per ottimizzare i carichi di lavoro in cui presupposti ce inefficienti causano prestazioni di query scarse. Il feedback di CE identifica e utilizza un presupposto del modello più adatto a una determinata query e alla distribuzione dei dati, per migliorare la qualità del piano di esecuzione della query.
Feedback sul Grado di Parallelismo (DOP): regola automaticamente il grado di parallelismo per le query ripetute per ottimizzare i carichi di lavoro in cui un parallelismo inefficiente può causare problemi di prestazioni. Richiede l'abilitazione di Query Store.
Ottimizzazione del piano sensibile ai parametri: L'ottimizzazione del piano sensibile ai parametri risolve lo scenario in cui un singolo piano memorizzato nella cache per una query con parametri non è ottimale per tutti i possibili valori dei parametri in ingresso, ad esempio distribuzioni di dati non uniformi.
Feedback sulle concessioni di memoria (Percentile): risolve le limitazioni esistenti del feedback delle concessioni di memoria in modo non invadente incorporando l'esecuzione di query precedenti per perfezionare il feedback.
Persistenza del feedback delle concessioni di memoria: fornisce nuove funzionalità per rendere persistente il feedback delle concessioni di memoria. È necessario che Query Store sia abilitato per il database e impostato in modalità READ_WRITE.
Persistenza dei feedback CE: richiede che il Query Store sia attivato per il database e in modalità
READ_WRITE
.Persistenza feedback DOP: richiede l'abilitazione di Query Store per il database e in
READ_WRITE
modalità .Utilizzo forzato del piano ottimizzato: riduce il sovraccarico di compilazione per le query forzate ripetute. Per altre informazioni, vedere Uso forzato del piano ottimizzato con Query Store.
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 = 160;
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:
Transparent Data Encryption (TDE) crittografa i dati inattivi, ovvero quando i dati vengono archiviati nei 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 che hanno eseguito tali eventi. 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 all'utente che esegue la query. È possibile controllare chi ha accesso ai dati, ad esempio, in base all'appartenenza al gruppo o al contesto di esecuzione.
La maschera dati dinamica 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.
Individuazione e classificazione dei dati identifica, etichette e report sui 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.
Valutazione della vulnerabilità identifica le vulnerabilità nei database. Dopo aver rilevato i punti deboli che potrebbero causare la configurazione del server e le progettazioni di database, è possibile prevenire attacchi comuni attenuandoli. Valutazione della vulnerabilità è un altro servizio di Sicurezza dei dati avanzata.
Agente di SQL Server
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
- Trasferimento dei log
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. Entrambe queste opzioni richiedono l'installazione del mssql-server-ha
pacchetto in ogni server. Linux supporta il clustering tramite Pacemaker, che è un equivalente a Windows Server Failover Clustering (WSCF), anche se non strettamente integrato nel sistema operativo host.
Se è disponibile una maggiore flessibilità rispetto a ciò che è accettabile per il tempo di inattività, tramite SQL Agent il log shipping può fornire un server di standby pronto, che può essere utilizzato per il ripristino in caso di perdita del 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, Forse, diversi team hanno requisiti diversi quando hanno selezionato il loro sistema, o l'azienda si è unita con un'altra società, o per qualche altra ragione storica. Tradizionalmente, è difficile integrare i dati attraverso questi limiti di sistema per rispondere a domande per gli utenti.
Si supponga di disporre di dati in SQL Server che registrano le vendite per il catalogo prodotti, ma i dati che registrano la quantità di costi per creare i prodotti si trovano in un database SAP HANA. Si vuole creare un report che analizza i margini di profitto, quindi 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 e versioni successive. Per usarlo, è necessario installare il mssql-server-polybase
pacchetto, oltre a SQL Server 2022.
Servizi di Apprendimento Automatico
Nel contesto del Machine Learning, i set di dati di grandi dimensioni vengono usati per modellare il comportamento di un sistema complesso. Quando viene sviluppato un modello che stima accuratamente il comportamento osservato del sistema. Il modello viene usato per stimare il comportamento del sistema in futuro. Le librerie di codice sofisticate, spesso open source, sono state sviluppate nei linguaggi R e Python. Queste librerie 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 consentire ad altri client di chiamare.
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 e versioni successive. Per usare questa funzionalità, è necessario aggiungere ulteriori pacchetti. Ad esempio, se si vuole usare Python per tutto il codice di Machine Learning, installare il
mssql-mlservices-mlm-py-9.4.7
pacchetto. L'equivalente per R consiste nell'installare il pacchettomssql-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.
Ricerca full-text
Le ricerche full-text consentono agli utenti di eseguire query su dati di testo che rispettano regole linguistiche. Ad esempio, quando si cerca la parola run
, una ricerca full-text restituisce un risultato che include forme della parola run
, ad esempio ran
e running
.
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.