Introduzione
I database sono componenti essenziali per molte applicazioni e strumenti moderni. Come utente, potresti interagire con dozzine o centinaia di database ogni giorno mentre visiti siti Web, utilizzi applicazioni sul telefono o acquisti articoli al supermercato. In qualità di sviluppatore, i database sono il componente principale utilizzato per mantenere i dati oltre la durata dell'applicazione. Ma cosa sono esattamente i database e perché sono così comuni?
In questo articolo esamineremo:
- cosa sono i database
- come vengono utilizzati da persone e applicazioni per tenere traccia di vari tipi di dati
- quali funzionalità offrono i database
- quali tipi di garanzie fanno
- come si confrontano con altri metodi di archiviazione dei dati
Infine, discuteremo di come le applicazioni si basano sui database per l'archiviazione e il recupero dei dati per abilitare funzionalità complesse.
Cosa sono i database?
Banche dati sono strutture logiche utilizzate per organizzare e archiviare i dati per l'elaborazione, il recupero o la valutazione futuri. Nel contesto dei computer, queste strutture sono quasi sempre gestite da un'applicazione chiamata sistema di gestione del database o DBMS . Il DBMS gestisce file dedicati sul disco del computer e presenta un'interfaccia logica per utenti e applicazioni.
I sistemi di gestione dei database sono in genere progettati per organizzare i dati secondo uno schema specifico. Questi modelli, chiamati tipi di database o modelli di database, sono le basi logiche e strutturali che determinano il modo in cui i singoli dati vengono archiviati e gestiti. Esistono molti tipi di database diversi, ognuno con i propri vantaggi e limiti. Il modello relazionale , che organizza i dati in tabelle, righe e colonne con riferimenti incrociati, è spesso considerato il paradigma predefinito.
I DBMS possono rendere accessibili i database che gestiscono tramite una varietà di mezzi, inclusi client della riga di comando, API, librerie di programmazione e interfacce amministrative. Attraverso questi canali, i dati possono essere inseriti nel sistema, organizzati come richiesto e restituiti come richiesto.
Persistenza dei dati vs archiviazione effimera
I database archiviano i dati su disco o in memoria.
In genere si dice che l'archiviazione su disco sia persistente , il che significa che i dati vengono salvati in modo affidabile per dopo, anche se l'applicazione database o il computer stesso vengono riavviati.
Al contrario, si dice che l'archiviazione in memoria sia effimera o volatile . L'archiviazione temporanea non sopravvive all'arresto dell'applicazione o del sistema. Il vantaggio dei database in memoria è che in genere sono molto veloci.
In pratica, molti ambienti utilizzeranno una combinazione di entrambi questi tipi di sistemi per ottenere i vantaggi di ciascun tipo. Per i sistemi che accettano nuove scritture sul livello effimero, questo può essere ottenuto salvando periodicamente i dati effimeri su disco. Altri sistemi utilizzano copie in memoria di sola lettura di dati persistenti per velocizzare l'accesso in lettura. Questi sistemi possono ricaricare i dati dalla memoria di backup in qualsiasi momento per aggiornare i propri dati.
Tipo di archiviazione di supporto | I dati sopravvivono al riavvio? | Vantaggi | Esempi |
---|---|---|---|
Su disco | Sì | Longevità dei dati | MySQL |
In memoria | No | Velocità operativa | memcached |
Interazione con i database per gestire i tuoi dati
Sebbene il sistema di database si occupi di come archiviare i dati su disco o in memoria, fornisce anche un'interfaccia per utenti o applicazioni. Le interfacce per il database devono essere in grado di rappresentare le operazioni che i soggetti esterni possono eseguire e devono essere in grado di rappresentare tutti i tipi di dati supportati dal sistema.
Secondo Wikipedia, i database in genere consentono i seguenti quattro tipi di interazioni:
- Definizione dei dati :crea, modifica e rimuove le definizioni della struttura dei dati. Queste operazioni modificano le proprietà che influiscono sul modo in cui il database accetterà e memorizzerà i dati. Questo è più importante in alcuni tipi di database rispetto ad altri.
- Aggiorna :consente di inserire, modificare ed eliminare i dati all'interno del database. Queste operazioni modificano i dati effettivi che vengono gestiti.
- Recupero :fornisce l'accesso ai dati memorizzati. I dati possono essere recuperati così come sono o spesso possono essere filtrati o trasformati per trasformarli in un formato più utile. Molti sistemi di database comprendono linguaggi di query avanzati per raggiungere questo obiettivo.
- Amministrazione :Altre attività come la gestione degli utenti, la sicurezza, il monitoraggio delle prestazioni, ecc. che sono necessarie ma non direttamente correlate ai dati stessi.
Esaminiamoli un po' più in dettaglio di seguito.
Le definizioni dei dati controllano la forma e la struttura dei dati all'interno del sistema
La creazione e il controllo della struttura che i tuoi dati assumeranno all'interno del database è una parte importante della gestione del database. Questo può aiutarti a controllare la forma o la struttura dei tuoi dati prima di inserirli nel sistema. Ti consente inoltre di impostare vincoli per assicurarti che i tuoi dati aderiscano a determinati parametri.
Nei database che operano su dati altamente regolari, come i database relazionali, queste definizioni sono spesso note come schema del database . Uno schema di database è uno schema rigoroso di come i dati devono essere formattati per essere accettati da un particolare database. Questo copre i campi specifici che devono essere presenti nei singoli record, nonché i requisiti per valori come tipo di dati, lunghezza del campo, valori minimi o massimi, ecc. Uno schema di database è uno degli strumenti più importanti che un proprietario di database deve influenzare e controllare i dati che verranno archiviati nel sistema.
I sistemi di gestione dei database che privilegiano la flessibilità rispetto alla regolarità vengono spesso definiti database senza schema . Sebbene ciò sembri implicare che i dati archiviati all'interno di questi database non abbiano struttura, di solito non è così. Al contrario, la struttura del database è determinata dai dati stessi e dalla conoscenza e dalla relazione dell'applicazione con i dati. Il database di solito aderisce ancora a una struttura, ma il sistema di gestione del database è meno coinvolto nell'applicazione dei vincoli. Questa è una scelta progettuale che presenta vantaggi e svantaggi a seconda della situazione.
Aggiornamenti dei dati per importare, modificare e rimuovere dati dal sistema
Gli aggiornamenti dei dati includono qualsiasi operazione che:
- Inserisce nuovi dati nel sistema
- Modifica le voci esistenti
- Elimina le voci dal database
Queste capacità sono essenziali per qualsiasi database e, in molti casi, costituiscono la maggior parte delle azioni elaborate dal sistema di database. Questi tipi di attività, operazioni che causano modifiche ai dati nel sistema, sono noti collettivamente come scrittura operazioni.
Le azioni di scrittura sono importanti per qualsiasi origine dati che cambierà nel tempo. Anche la rimozione dei dati, un'azione distruttiva, è considerata un'operazione di scrittura poiché modifica i dati all'interno del sistema.
Poiché le operazioni di scrittura possono modificare i dati, queste azioni sono potenzialmente pericolose. La maggior parte degli amministratori di database configura i propri sistemi per limitare le operazioni di scrittura a determinati processi applicativi per ridurre al minimo la possibilità di alterazione accidentale o dannosa dei dati. Ad esempio, l'analisi dei dati, che utilizza i dati esistenti per rispondere a domande sulle prestazioni di un sito Web o sul comportamento dei visitatori, richiede solo l'autorizzazione di lettura. D'altra parte, la parte dell'applicazione che registra gli ordini di un utente deve essere in grado di scrivere nuovi dati nel database.
Recupero di dati per estrarre informazioni o rispondere a domande specifiche
La memorizzazione dei dati non è molto utile a meno che tu non abbia un modo per recuperarli quando ne hai bisogno. Poiché la restituzione dei dati non influisce su nessuna delle informazioni attualmente memorizzate nel database, queste azioni sono chiamate lettura operazioni. Le operazioni di lettura sono il modo principale per raccogliere dati già archiviati all'interno di un database.
I sistemi di gestione dei database hanno quasi sempre un modo semplice per accedere ai dati tramite un identificatore univoco, spesso chiamato chiave primaria . Ciò consente l'accesso a qualsiasi voce fornendo la chiave.
Molti sistemi hanno anche metodi sofisticati per interrogare il database per restituire set di dati che corrispondono a criteri specifici o restituire informazioni parziali sulle voci. Questo tipo di flessibilità di interrogazione aiuta il sistema di gestione del database a funzionare come un elaboratore di dati oltre alle sue capacità di archiviazione dei dati di base. Sviluppando query specifiche, gli utenti possono richiedere al sistema di database di restituire solo le informazioni di cui hanno bisogno. Questa funzionalità viene spesso utilizzata insieme alle operazioni di scrittura per individuare e modificare un record specifico in base alle sue proprietà.
Amministrazione del sistema di database per far funzionare tutto senza intoppi
L'ultima categoria di azioni che spesso i database supportano sono le funzioni amministrative. Questa è una classe di azioni ampia e generale che aiuta a supportare l'ambiente del database senza influenzare direttamente i dati stessi. Alcuni elementi che potrebbero rientrare in questo gruppo includono:
- Gestione di utenti, autorizzazioni, autenticazione e autorizzazione
- Configurazione e mantenimento dei backup
- Configurazione del supporto per l'archiviazione
- Gestione della replica e altre considerazioni sul ridimensionamento
- Fornire opzioni di ripristino online e offline
Questo insieme di azioni è in linea con le preoccupazioni amministrative di base comuni a qualsiasi applicazione moderna.
Le operazioni amministrative potrebbero non essere centrali per le funzionalità di gestione dei dati di base, ma queste funzionalità spesso distinguono sistemi di gestione di database simili. Essere in grado di eseguire facilmente il backup e il ripristino dei dati, implementare la gestione degli utenti che si collega ai sistemi esistenti o ridimensionare il database per soddisfare la domanda sono tutte caratteristiche essenziali per operare in produzione. I database che non prestano attenzione a queste aree spesso faticano a ottenere l'adozione negli ambienti del mondo reale.
Quali responsabilità hanno i database?
Data la descrizione di cui sopra, come possiamo generalizzare le responsabilità primarie che hanno i database? La risposta dipende molto dal tipo di database utilizzato e dai requisiti delle tue applicazioni. Ciononostante, esiste un insieme comune di responsabilità che tutti i database cercano di fornire.
Protezione dell'integrità dei dati attraverso la registrazione e la ricostituzione fedeli
L'integrità dei dati è un requisito fondamentale di un sistema di database, indipendentemente dallo scopo o dal design. I dati caricati nel database dovrebbero poter essere recuperati in modo affidabile senza modifiche, manipolazioni o cancellazioni impreviste. Ciò richiede metodi affidabili per caricare e recuperare i dati, nonché serializzare e deserializzare i dati secondo necessità per archiviarli su supporti fisici.
I database spesso si basano su funzionalità per verificare i dati mentre vengono scritti o recuperati, come il checksum, o per proteggersi da problemi causati da arresti imprevisti, utilizzando ad esempio tecniche come i registri write-ahead. L'integrità dei dati diventa tanto più difficile quanto più è distribuito l'archivio dati, poiché ogni parte del sistema deve riflettere lo stato attuale desiderato di ciascun elemento di dati. Ciò si ottiene spesso con requisiti e risposte più solidi da parte di più membri ogni volta che i dati vengono modificati nel sistema.
Offrendo prestazioni che soddisfano i requisiti dell'ambiente di distribuzione
I database devono funzionare adeguatamente per essere utili. Le caratteristiche prestazionali di cui hai bisogno dipendono fortemente dalle esigenze particolari delle tue applicazioni. Ogni ambiente ha un equilibrio unico di richieste di lettura e scrittura e dovrai decidere cosa significano prestazioni accettabili per entrambe le categorie.
I database sono generalmente migliori nell'esecuzione di determinati tipi di operazioni rispetto ad altri. Le caratteristiche delle prestazioni operative spesso riflettono il tipo di database utilizzato, lo schema o la struttura dei dati e l'operazione stessa. In alcuni casi, funzionalità come indicizzazione , che crea un archivio alternativo ottimizzato per le prestazioni dei dati a cui si accede comunemente, può fornire un recupero più rapido di questi elementi. Altre volte, il database potrebbe non essere adatto ai modelli di accesso richiesti. Questo è un aspetto da considerare quando si decide quale tipo di database è necessario.
Impostazione di processi per consentire un accesso simultaneo sicuro
Sebbene questo non sia un requisito rigoroso, in pratica, i database devono consentire l'accesso simultaneo. Ciò significa che più parti devono essere in grado di lavorare con il database contemporaneamente. I record devono essere leggibili da un numero qualsiasi di utenti contemporaneamente e scrivibili quando non sono attualmente bloccati da un altro utente.
L'accesso simultaneo di solito significa che il database deve implementare alcune altre funzionalità fondamentali come account utente, un sistema di autorizzazioni e meccanismi di autenticazione e autorizzazione. Deve inoltre sviluppare strategie per impedire a più utenti di tentare di manipolare gli stessi dati contemporaneamente. Il blocco dei record e le transazioni vengono spesso implementati per risolvere questi problemi.
Recupero dei dati singolarmente o in aggregato
Una delle responsabilità fondamentali di un database è la capacità di recuperare i dati su richiesta. Le richieste potrebbero riguardare singole porzioni di dati associate a un singolo record o potrebbero implicare il recupero dei dati trovati in molti record diversi. Entrambi questi casi devono essere possibili nella maggior parte dei sistemi.
Nella maggior parte dei database, un certo livello di elaborazione dei dati è fornito dal database stesso durante il recupero. Questi possono includere i seguenti tipi di operazioni:
- Ricerca per criteri
- Filtraggio e rispetto dei vincoli
- Estrazione di campi specifici
- Media, ordinamento, ecc.
Queste opzioni ti aiutano ad articolare i dati che desideri e il formato che sarebbe più utile.
Alternative ai database
Prima di andare avanti, dovremmo dare un'occhiata brevemente a quali sono le tue opzioni se non utilizzi un database.
La maggior parte dei metodi che archiviano i dati possono essere classificati come database di qualche tipo. Alcune eccezioni includono quanto segue.
Memoria locale o filesystem temporanei
A volte le applicazioni producono dati che non sono utili o che sono rilevanti solo per la durata dell'applicazione. In questi casi, potresti voler mantenere quei dati in memoria o scaricarli su un filesystem temporaneo poiché non ne avrai bisogno una volta terminata l'applicazione. Per i casi in cui i dati non sono mai utili, potresti voler disabilitare completamente l'output o registrarlo su /dev/null
.
Serializzazione dei dati dell'applicazione direttamente nel filesystem locale
Un altro caso in cui un database potrebbe non essere necessario è dove una piccola quantità di dati può essere serializzata e deserializzata direttamente. Questo è pratico solo per piccole quantità di dati con un modello di utilizzo prevedibile che non implica molta, se non nessuna, concorrenza. Questo non si adatta bene ma può essere utile in alcuni casi, come l'output di informazioni di registro locali.
Memorizzazione di oggetti simili a file direttamente su disco o storage di oggetti
A volte, i dati delle applicazioni possono essere scritti direttamente su disco o in un archivio alternativo invece di essere archiviati in un database. Ad esempio, se i dati sono già organizzati in un formato orientato ai file, come un file immagine o audio, e non richiedono metadati aggiuntivi, potrebbe essere più semplice archiviarli direttamente su disco o in un archivio oggetti dedicato.
A cosa servono i database?
Quasi tutte le applicazioni e i siti Web che non sono completamente statici si basano su un database da qualche parte nel loro ambiente. Lo scopo principale del database spesso determina il tipo di database utilizzato, i dati archiviati e i modelli di accesso utilizzati. Spesso vengono implementati più sistemi di database per gestire diversi tipi di dati con requisiti diversi. Alcuni database sono sufficientemente flessibili per svolgere più ruoli a seconda della natura dei diversi set di dati.
Diamo un'occhiata a un esempio per discutere i punti di contatto che una tipica applicazione Web può avere con i database. Faremo finta che l'applicazione contenga una vetrina di base e venda articoli di cui tiene traccia in un inventario.
Memorizzazione ed elaborazione dei dati del sito
Uno degli usi principali dei database è l'archiviazione e l'elaborazione dei dati relativi al sito. Questi elementi influiscono sull'organizzazione delle informazioni sul sito e, in molti casi, costituiscono la maggior parte del "contenuto" del sito.
Nell'applicazione di esempio sopra menzionata, il database popolerebbe la maggior parte del contenuto del sito, comprese le informazioni sul prodotto, i dettagli dell'inventario e le informazioni sul profilo dell'utente. Ciò significa che il database o una cache intermedia verranno consultati ogni volta che è necessario visualizzare un elenco prodotti, una pagina di dettaglio prodotto o un profilo utente.
Un database verrebbe anche coinvolto nella visualizzazione degli ordini correnti e passati, nel calcolo dei costi di spedizione e nell'applicazione di sconti controllando i codici sconto o calcolando i premi dei clienti frequenti. Il nostro sito di esempio utilizzerebbe il sistema di database per creare correttamente gli ordini combinando informazioni sul prodotto, inventario e informazioni sull'utente. Le informazioni composite registrate in un ordine verrebbero nuovamente archiviate in un database per tenere traccia dell'elaborazione degli ordini, consentire resi, annullare o modificare ordini o consentire una migliore assistenza clienti.
Analisi delle informazioni per prendere decisioni migliori
Le azioni nell'ultima categoria erano legate alle funzionalità di base del sito web. Sebbene questi siano molto importanti per gestire i requisiti di dati del livello dell'applicazione, non rappresentano l'intera immagine.
Una volta che la tua applicazione web inizia a registrare utenti ed elaborare gli ordini, probabilmente vorrai essere in grado di rispondere a domande dettagliate su come vengono venduti i diversi prodotti, chi sono i tuoi utenti più redditizi e quali fattori influenzano le tue vendite. Si tratta di domande analitiche che possono essere eseguite in qualsiasi momento per raccogliere informazioni aggiornate sulle tendenze e le prestazioni della tua organizzazione.
Questi tipi di operazioni sono spesso chiamati business intelligence o analisi . Insieme, aiutano le organizzazioni a capire cosa è successo in passato e ad apportare modifiche informate. I sistemi di database memorizzano la maggior parte dei dati utilizzati durante questi processi e devono fornire gli strumenti appropriati o le capacità di interrogazione per rispondere a domande al riguardo.
Nella nostra applicazione di esempio, i database potrebbero essere interrogati per rispondere a domande sulle tendenze dei prodotti, sui numeri di registrazione degli utenti, sugli stati che spediamo di più o su chi sono i nostri utenti più fedeli. Queste query relativamente semplici possono essere utilizzate per comporre domande più complesse per comprendere e controllare meglio i fattori che influenzano le prestazioni del prodotto.
Gestione della configurazione del software
Alcuni tipi di database vengono utilizzati come repository per i valori di configurazione per altri software sulla rete. Questi servono come una fonte centrale di verità per i valori di configurazione sulla rete. Quando vengono avviati nuovi servizi, vengono configurati per controllare i valori per chiavi specifiche all'indirizzo di rete del database di configurazione. Ciò ti consente di archiviare tutte le informazioni necessarie per avviare i servizi in un'unica posizione.
Dopo il bootstrap, le applicazioni possono essere configurate per controllare le chiavi relative alla loro configurazione per le modifiche. Se viene rilevata una modifica, l'applicazione può riconfigurarsi per utilizzare la nuova configurazione. Questo processo è talvolta orchestrato da un processo di gestione che implementa i nuovi valori nel tempo riducendo i vecchi servizi man mano che emergono i nuovi servizi, modificando nel tempo la configurazione attiva per mantenere la disponibilità.
La nostra applicazione potrebbe utilizzare questo tipo di database per archiviare dati di configurazione persistenti per l'intero ambiente applicativo. I nostri server delle applicazioni, server Web, sistemi di bilanciamento del carico, code di messaggistica e altro potrebbero essere configurati per fare riferimento a un database di configurazione per ottenere le impostazioni di produzione. Gli sviluppatori dell'applicazione potrebbero quindi modificare il comportamento dell'ambiente modificando i valori di configurazione in una posizione centrale.
Raccolta di registri, eventi e altro output
L'esecuzione di applicazioni che servono attivamente le richieste può generare molto output. Ciò include file di registro, eventi e altro output. Questi possono essere scritti su disco o in un'altra posizione non gestita, ma ciò ne limita l'utilità. La raccolta di questo tipo di dati in un database semplifica l'utilizzo, l'individuazione di schemi e l'analisi di eventi quando accade qualcosa di imprevisto o quando è necessario saperne di più sulle prestazioni storiche.
La nostra applicazione di esempio potrebbe raccogliere i registri da ciascuno dei nostri sistemi in un database per un'analisi più semplice. Questo può aiutarci a trovare correlazioni tra gli eventi se cerchiamo di analizzare l'origine dei problemi o di comprendere la salute del nostro ambiente nel suo insieme.
Separatamente, potremmo raccogliere le metriche prodotte dalla nostra infrastruttura e dal codice in un database di serie temporali , un database progettato specificamente per tenere traccia dei valori nel tempo. Questo database può essere utilizzato per potenziare strumenti di monitoraggio e visualizzazione in tempo reale per fornire ai team operativi e di sviluppo dell'applicazione informazioni su prestazioni, tassi di errore e così via.
Come funzionano i diversi ruoli con i database?
I database sono fondamentali per il lavoro di molti ruoli diversi all'interno delle organizzazioni. Nei team più piccoli, uno o pochi individui possono essere responsabili dell'esecuzione dei compiti di vari ruoli. Nelle aziende più grandi, queste responsabilità sono spesso segmentate in ruoli distinti svolti da individui o team dedicati.
Architetti di dati
I data architect sono responsabili della struttura macro complessiva dei sistemi di database, delle interfacce che espongono alle applicazioni e ai team di sviluppo e delle tecnologie e dell'infrastruttura sottostanti necessarie per soddisfare le esigenze di dati dell'organizzazione.
Le persone in questo ruolo generalmente decidono il modello di database appropriato e l'implementazione che verrà utilizzata per diverse applicazioni. Sono responsabili dell'implementazione delle decisioni sui database esaminando le opzioni, decidendo sulla tecnologia, integrandola con i sistemi esistenti e sviluppando una strategia di dati completa per l'organizzazione. Si occupano dei sistemi di dati in modo olistico e contribuiscono a decidere e implementare modelli di dati per vari progetti.
DBA (amministratori di database)
Gli amministratori di database, o DBA, sono individui responsabili del corretto funzionamento dei sistemi di dati. Sono responsabili della pianificazione di nuovi sistemi di dati, dell'installazione e della configurazione del software, della creazione di sistemi di database per altre parti e della gestione delle prestazioni. Spesso sono anche responsabili della protezione del database, del monitoraggio dei problemi e delle modifiche al sistema per ottimizzare i modelli di utilizzo.
Gli amministratori di database sono esperti sia sui singoli sistemi di database sia su come integrarli bene con il sistema operativo e l'hardware sottostanti per massimizzare le prestazioni. Lavorano a lungo con i team che utilizzano i database per gestire la capacità e le prestazioni e per aiutare i team a risolvere i problemi con il sistema di database.
Sviluppatori di applicazioni
Gli sviluppatori di applicazioni interagiscono con i database in molti modi diversi. Sviluppano molte delle applicazioni che interagiscono con il database. Questo è molto importante perché queste sono quasi sempre le uniche applicazioni che controllano come i singoli utenti o clienti interagiscono con i dati gestiti dal sistema di database. Prestazioni, correttezza e affidabilità sono incredibilmente importanti per gli sviluppatori di applicazioni.
Gli sviluppatori gestiscono le strutture dati associate alle loro applicazioni per mantenere i dati su disco. Devono creare o utilizzare meccanismi in grado di mappare i loro dati di programmazione sul sistema di database in modo che i componenti possano lavorare insieme in armonia. Quando le applicazioni cambiano, devono mantenere sincronizzati i dati e le strutture dati all'interno del sistema di database. Parleremo di più su come gli sviluppatori lavorano con i database più avanti nell'articolo.
SRE (ingegneri dell'affidabilità del sito) e professionisti operativi
Gli SRE (tecnici dell'affidabilità del sito) e i professionisti delle operazioni interagiscono con i sistemi di database dal punto di vista della configurazione dell'infrastruttura e dell'applicazione. Potrebbero essere responsabili del provisioning di capacità aggiuntiva, della messa in piedi dei sistemi di database, della garanzia che la configurazione del database corrisponda alle linee guida organizzative, del monitoraggio dei tempi di attività e della gestione dei backup.
In molti modi, queste persone hanno responsabilità sovrapposte con i DBA, ma non si concentrano esclusivamente sui database. Il personale operativo garantisce che i sistemi su cui si basano le applicazioni su cui si basa il resto dell'organizzazione, inclusi i sistemi di database, funzionino in modo affidabile e abbiano tempi di inattività minimi.
Business intelligence e analisti di dati
I dipartimenti di business intelligence e gli analisti di dati sono principalmente interessati ai dati già raccolti e disponibili all'interno del sistema di database. Lavorano per sviluppare approfondimenti basati su tendenze e modelli all'interno dei dati in modo da poter prevedere le prestazioni future, consigliare l'organizzazione su potenziali cambiamenti e rispondere a domande sui dati per altri dipartimenti come marketing e vendite.
Gli analisti di dati possono generalmente lavorare esclusivamente con l'accesso in sola lettura ai sistemi di dati. Le query eseguite spesso hanno caratteristiche prestazionali notevolmente diverse rispetto a quelle utilizzate dalle applicazioni primarie. Per questo motivo, spesso lavorano con repliche o copie di database, in modo da poter eseguire query aggregate di lunga durata e ad alta intensità di prestazioni che potrebbero altrimenti influire sull'utilizzo delle risorse del sistema di database primario.
Come faccio a lavorare con i database come sviluppatore?
Quindi, come si fa effettivamente a lavorare con i database come sviluppatore di applicazioni? A livello di base, se la tua applicazione deve gestire e mantenere lo stato, lavorare con un database sarà una parte importante del tuo codice.
Traduzione dei dati tra la tua applicazione e il database
Sarà necessario creare o utilizzare un'interfaccia esistente per comunicare con il database. Puoi connetterti direttamente al database utilizzando le normali funzioni di rete, sfruttare librerie semplici o librerie di programmazione di livello superiore (ad es. query builder o ORM).
ORM , o mappatori relazionali a oggetti, sono livelli di mappatura che traducono le tabelle trovate nel database relazionale nelle classi utilizzate nei linguaggi di programma orientati agli oggetti e viceversa. Sebbene questa traduzione sia spesso utile, non è mai perfetta. Disadattamento di impedenza relazionale all'oggetto è un termine usato per descrivere l'attrito causato dalla differenza nel modo in cui i database relazionali e i programmi orientati agli oggetti strutturano i dati.
Sebbene i database relazionali e la programmazione orientata agli oggetti descrivano due scelte progettuali specifiche, il problema della traduzione tra il livello dell'applicazione e quello del database è generalizzato che esiste indipendentemente dal tipo di database o dal paradigma di programmazione. Livello di astrazione del database è un termine più generale per il software con la responsabilità di tradurre tra questi due contesti.
Mantenere le modifiche strutturali sincronizzate con il database
Un fatto importante che scoprirai durante lo sviluppo delle tue applicazioni è che, poiché il database esiste al di fuori della tua base di codice, richiede un'attenzione speciale per far fronte alle modifiche alla struttura dei dati. Questo problema è più diffuso in alcuni progetti di database rispetto ad altri.
L'approccio più comune per sincronizzare le strutture dati della tua applicazione con il tuo database è un processo chiamato migrazione del database o migrazione dello schema (entrambi conosciuti colloquialmente semplicemente come migrazione). La migrazione implica l'aggiornamento della struttura del database per riflettere le modifiche man mano che il modello di dati dell'applicazione si evolve. Questi di solito prendono la forma di una serie di file, uno per ogni evoluzione, che contengono le istruzioni necessarie per trasformare il database nel nuovo formato.
Protezione dell'accesso ai tuoi dati e sanificazione dell'input
Una responsabilità importante quando si lavora con i database come sviluppatore è garantire che le applicazioni non consentano l'accesso non autorizzato ai dati. La sicurezza dei dati è un problema ampio e a più livelli con molte parti interessate. In definitiva, sarà tuo dovere occuparti di alcune delle considerazioni sulla sicurezza.
L'applicazione richiederà l'accesso privilegiato al database per eseguire attività di routine. For safety, the database's authorization framework can help restrict the type of operations your application can perform. However, you need to ensure that your application restricts those operations appropriately. For example, if your application manages user profile data, you have to prevent a user from manipulating that access to view or edit other users' information.
One specific challenge is sanitizing user input. Sanitizing input means taking special precautions when operating on any data provided by a user. There is a long history of malicious actors using normal user input mechanisms to trick applications into revealing sensitive data. Crafting your applications to protect against these scenarios is an important skill.
Conclusion
Databases are an indispensable component in modern application development. Storing and controlling the stateful information related to your application and its environment is an important responsibility that requires reliability, performance, and flexibility.
Fortunately, there are many different database options designed to fulfil the requirements of different types of applications. In our next article, we'll take an in-depth look at the different types of databases available and how they can be used to match different types of application requirements.