Che cos'è un database? Una guida alla gestione dei dati

Un database è un sistema strutturato per archiviare, gestire e recuperare informazioni. 

Immagina un database come una biblioteca digitale in cui il bibliotecario sa esattamente dove è nascosta ogni pagina di ogni libro. Se entrassi in una stanza enorme piena di milioni di fogli sparsi, non troveresti mai le informazioni di cui hai bisogno. Ti serve un sistema che organizzi questi documenti, li etichetti in modo chiaro e ti aiuti a recuperarli in pochi secondi. Questo è ciò che un database fa per le tue applicazioni. Funziona come una memoria affidabile per qualsiasi sistema digitale, archiviando in modo sicuro le informazioni su cui si basano siti web, aziende e servizi essenziali per funzionare ogni giorno.

La maggior parte dei database rientra in due categorie principali:

  • Database relazionali (SQL): organizzano i dati in tabelle con righe e colonne. Questi database offrono il linguaggio SQL (Structured Query Language) per trovare le relazioni tra i punti dati, il che li rende ideali per la coerenza transazionale e le query complesse.
  • Database non relazionali (NoSQL): hanno uno schema dinamico e flessibile. Archiviano i dati in documenti, grafici o coppie chiave-valore, il che consente loro di gestire dati non strutturati, semistrutturati o in rapida evoluzione su larga scala.

Concetti chiave sui database

  • Di che si tratta? Un database è un sistema specializzato che archivia, organizza e recupera i dati da utilizzare per le tue applicazioni
  • Come funziona? A differenza di un foglio di lavoro, progettato per essere letto dalle persone, un database è creato per la comunicazione tra macchine, il che gli consente di gestire in modo efficiente enormi quantità di informazioni
  • Come possono essere utilizzati? Esistono molti tipi di database, come quelli relazionali, di documenti e vettoriali, ognuno adatto a diversi tipi di informazioni, come profili utente, post sui social media o dati generati dall'AI

Che cos'è un servizio di database gestito?

Quando esegui un database sul tuo computer o server, devi fare molto lavoro. Devi gestire i backup, installare gli aggiornamenti di sicurezza e assicurarti che il server non esaurisca la memoria. Questa procedura è chiamata "self-hosting".

Un servizio di database gestito ti solleva da questo compito. Paghi un provider di servizi cloud per eseguire il database per te. Si occupano delle attività più pesanti, come la configurazione dell'infrastruttura, l'aggiornamento del software e la garanzia che il sistema rimanga online. In questo modo puoi concentrarti sulla scrittura del codice per la tua app, senza doverti preoccupare della gestione del server.

Come funzionano i database?

Sebbene un foglio di lavoro come un Foglio Google o Excel sia ottimo per la scansione a occhio nudo, diventa lento e disordinato quando migliaia di persone cercano di utilizzarlo contemporaneamente. I database sono costruiti in modo diverso. Sono costituite da tre parti principali:

  1. I dati: sono le informazioni vere e proprie. Possono essere cose semplici come testo (nomi ed email), numeri (prezzi) o cose complesse come immagini e incorporamenti di AI.
  2. La query: è il modo in cui "chiedi" informazioni al database. Utilizzi un linguaggio, come SQL (Structured Query Language), per indicare al database esattamente ciò di cui hai bisogno. Ad esempio, potresti chiedere "tutti gli utenti che si sono registrati nell'ultima settimana".
  3. Il sistema di gestione di database (DBMS): è il software che funge da gestore. Gestisce le richieste, garantisce la sicurezza dei dati e organizza la modalità di archiviazione delle informazioni. Ad esempio, PostgreSQL, MySQL e MongoDB.

Tipi di database

La scelta del database giusto dipende dalla forma dei tuoi dati.

Tipo

Ideale per

Caratteristiche principali

Esempi

Relazionale (SQL)

Dati strutturati con relazioni chiare

Utilizza tabelle, righe e colonne

Sistemi bancari per i saldi dei conti

Non relazionale (NoSQL)

Dati flessibili, veloci o in evoluzione

Non utilizza tabelle, archivia i dati in vari modi

Analisi dei big data per app web di grandi dimensioni

Key-Value

Ricerche semplici e veloci

Archivia i dati come coppie, come un dizionario digitale

Archiviazione delle informazioni sulla sessione utente per gli accessi

Documento

Archiviazione di dati complessi e nidificati

Archivia i dati come documenti, ad esempio file JSON

Gestione dei cataloghi di prodotti nell'e-commerce

Vector

AI e machine learning

Archivia le informazioni come vettori matematici

Trovare consigli sui prodotti in base al comportamento passato degli utenti

Grafico

Dati con connessioni profonde

Si concentra su come gli elementi si relazionano tra loro

Funzionalità "amici di amici" dei social media

Serie temporale

Dati che cambiano nel tempo

Registra informazioni con un timestamp specifico


Monitoraggio dei sensori di temperatura nelle fabbriche

Tipo

Ideale per

Caratteristiche principali

Esempi

Relazionale (SQL)

Dati strutturati con relazioni chiare

Utilizza tabelle, righe e colonne

Sistemi bancari per i saldi dei conti

Non relazionale (NoSQL)

Dati flessibili, veloci o in evoluzione

Non utilizza tabelle, archivia i dati in vari modi

Analisi dei big data per app web di grandi dimensioni

Key-Value

Ricerche semplici e veloci

Archivia i dati come coppie, come un dizionario digitale

Archiviazione delle informazioni sulla sessione utente per gli accessi

Documento

Archiviazione di dati complessi e nidificati

Archivia i dati come documenti, ad esempio file JSON

Gestione dei cataloghi di prodotti nell'e-commerce

Vector

AI e machine learning

Archivia le informazioni come vettori matematici

Trovare consigli sui prodotti in base al comportamento passato degli utenti

Grafico

Dati con connessioni profonde

Si concentra su come gli elementi si relazionano tra loro

Funzionalità "amici di amici" dei social media

Serie temporale

Dati che cambiano nel tempo

Registra informazioni con un timestamp specifico


Monitoraggio dei sensori di temperatura nelle fabbriche

Database relazionali

I database relazionali, comunemente noti anche come database SQL, rappresentano i dati in tabelle strutturate. Se devi assicurarti che una transazione bancaria vada a buon fine o fallisca completamente, potresti decidere di utilizzare un database relazionale a causa della sua rigorosa conformità alle proprietà ACID (atomicità, coerenza, isolamento, durabilità).

Database NoSQL

I database NoSQL offrono flessibilità. Archiviano i dati come documenti, grafici o coppie chiave-valore. Poiché non richiedono uno schema rigido, spesso funzionano bene per applicazioni in rapida evoluzione come app mobili, feed di social media o sistemi di gestione dei contenuti in tempo reale.

Database coppia chiave-valore

Sono le forme più semplici di database NoSQL. Archiviano i dati come una chiave univoca abbinata a un valore. Poiché sono veloci e semplici, gli sviluppatori possono utilizzarli per attività come la memorizzazione nella cache dei dati di sessione o l'archiviazione delle preferenze dell'utente. 

Questi agiscono come un dizionario. Hai una chiave (come un nome utente) e un valore (i dati del profilo). Sono incredibilmente veloci perché non devono cercare in tabelle complesse per trovare ciò che vuoi.

Database di documenti

I database di documenti archiviano i dati in formati flessibili, spesso JSON. Possono essere utili quando la struttura dei dati cambia frequentemente, ad esempio in un sistema di gestione dei contenuti in cui diversi post di blog potrebbero avere attributi diversi.

Database vettoriali

Un database vettoriale archivia le informazioni come vettori matematici, il che consente ai computer di comprendere meglio il "significato" dei dati anziché limitarsi a trovare corrispondenze esatte con le parole chiave. È la tecnologia alla base delle moderne funzionalità di AI generativa e di ricerca.

Database a grafo

I database a grafo si concentrano sulle relazioni tra i punti dati. Invece delle tabelle, archiviano i dati come nodi e archi. Pensa a un social network: una "persona" è un nodo e un'azione "segue" è un arco. Se stai creando un motore di consigli che si basa su connessioni complesse, un database a grafo può aiutarti a eseguire query su questi link molto più velocemente di un database relazionale standard.

Database di serie temporali

I database time-series sono specializzati nell'archiviazione di punti dati indicizzati in base al tempo. Sono progettati per volumi di dati più elevati con timestamp, come le letture dei sensori dei dispositivi IoT, i log dei server o gli aggiornamenti del mercato azionario. Questi database eccellono nel "downsampling", ovvero il processo di compressione dei dati più vecchi e ad alta frequenza in riepiloghi più ampi per risparmiare spazio.

Opzioni di deployment del database

Puoi inserire il tuo database in diversi luoghi:

On-premise: il database viene eseguito sul tuo hardware fisico nel tuo ufficio o data center. In questo modo hai il controllo totale, ma devi occuparti personalmente di tutta la sicurezza e della manutenzione.

Ibrido: è un mix di on-premise e cloud. Potresti conservare i dati sensibili on-premise per motivi di sicurezza, mentre utilizzi il cloud per i dati delle app rivolte al pubblico.

Cloud: il tuo database risiede sui server di un provider di servizi cloud. Questa è spesso la scelta più popolare perché è facile fare lo scale up se la tua app diventa improvvisamente popolare. I database cloud possono offrire diversi vantaggi:

  • Elasticità: puoi aumentare lo spazio di archiviazione o la potenza di elaborazione all'istante
  • Accessibilità: il tuo team può gestire il database da qualsiasi parte del mondo
  • Manutenzione: il provider cloud gestisce l'hardware sottostante, gli aggiornamenti e le patch di sicurezza

Quando si esegue la migrazione tra opzioni di deployment, ad esempio passando da una configurazione on-premise a un servizio cloud gestito o da un ambiente ibrido a una soluzione completamente cloud-native, l'attenzione dovrebbe essere rivolta alla modifica dell'infrastruttura piuttosto che alla semplice modifica del formato dei dati. Assicurati di pianificare con attenzione la migrazione del database per garantire l'integrità dei dati, ridurre al minimo i tempi di inattività e gestire le modifiche alla connettività. 

AI e database

In passato, gli sviluppatori spesso tenevano isolati i dati delle applicazioni standard e i dati di AI in silos di database separati. Ciò ha costretto gli sviluppatori a spostare enormi quantità di dati avanti e indietro tra il loro database e un motore di AI separato, il che ha reso le app più lente e difficili da mantenere. Oggi la tendenza è l'integrazione. Vogliamo che i nostri database comprendano ed elaborino i dati, comprese le informazioni generate dall'AI, nello stesso luogo.

A livello generale, i database moderni stanno diventando "intelligenti" grazie all'aggiunta di queste funzionalità di AI di base:

  • Ricerca vettoriale e semantica: i database archiviano i dati come "vettori" (elenchi di numeri che rappresentano il significato). Ciò consente all'app di trovare risultati in base al significato, non solo alla corrispondenza delle parole chiave. La ricerca di "canino" può trovare "cane".
  • Retrieval-Augmented Generation (RAG): il tuo database fornisce informazioni private e aggiornate a un modello di AI prima che risponda a una domanda. In questo modo, l'AI fornisce risposte più accurate e fondate.
  • Funzionalità e ricerca multimodali: i database ora possono archiviare e mettere in relazione diversi tipi di dati come testo, immagini e audio. Puoi eseguire ricerche tra questi formati, ad esempio trovare descrizioni di testo o prezzi che corrispondono alla foto di un prodotto specifico.
  • Linguaggio naturale in SQL: traduce domande in inglese semplice, come "Mostrami tutti i clienti di alto valore", nel codice esatto necessario per recuperare queste informazioni.
  • Ricerca ibrida: combina la ricerca tradizionale per parole chiave con la ricerca semantica. È molto efficace perché utilizza la corrispondenza esatta per termini specifici (come un ID prodotto) e i vettori per trovare elementi correlati in base all'intento.

Utilizzando un database che supporta questi strumenti, puoi cercare il nome di un utente, la sua cronologia e le sue preferenze in un'unica query, semplificando lo stack tecnologico e aiutando la tua app a fornire esperienze più rapide e intelligenti.

Ecco come potresti eseguire una ricerca ibrida in Python, combinando una parola chiave specifica e un concetto semantico:

  • Python
Caricamento in corso...

Scegliere il database giusto

Prima di impegnarti in un'architettura specifica, poniti queste domande per determinare quale tipo di database si adatta meglio alle esigenze del tuo progetto.

Considerazione

Tipo di database consigliato

Ragionamento

I miei dati hanno una struttura rigida, come i registri bancari o gli account utente?

Relazionale (SQL)

Tabelle e righe garantiscono l'accuratezza dei dati e impongono relazioni rigide tra i record.

Devo archiviare dati che cambiano formato di frequente, come i log utente o i feed di attività?

NoSQL

La mancanza di uno schema rigido consente di archiviare dati che si evolvono o variano nella struttura.

Devo cercare dati semplici, come le sessioni utente, il più velocemente possibile?

Coppia chiave-valore

Mappando una singola chiave direttamente a un valore, il database evita ricerche complesse.

I miei dati assomigliano a oggetti nel mio codice, come prodotti con caratteristiche diverse?

Documento

L'archiviazione dei dati in formati come JSON semplifica l'utilizzo dei dati direttamente nel codice dell'applicazione.

Sto creando un'applicazione di AI che deve cercare il "significato" o la somiglianza?

Vettoriale

Sono ottimizzati per archiviare e confrontare i dati in base alla somiglianza matematica piuttosto che a parole chiave esatte.

Le relazioni tra i miei punti dati sono importanti quanto i dati stessi?

Grafico

Questi sistemi sono progettati per attraversare rapidamente connessioni complesse, come i social network o i percorsi di rilevamento delle frodi.

Devo monitorare dati che cambiano costantemente nel tempo, come le letture dei sensori?

Serie temporali

Sono ottimizzati per registrare ed eseguire query su punti dati indicizzati specificamente in base al tempo.

Considerazione

Tipo di database consigliato

Ragionamento

I miei dati hanno una struttura rigida, come i registri bancari o gli account utente?

Relazionale (SQL)

Tabelle e righe garantiscono l'accuratezza dei dati e impongono relazioni rigide tra i record.

Devo archiviare dati che cambiano formato di frequente, come i log utente o i feed di attività?

NoSQL

La mancanza di uno schema rigido consente di archiviare dati che si evolvono o variano nella struttura.

Devo cercare dati semplici, come le sessioni utente, il più velocemente possibile?

Coppia chiave-valore

Mappando una singola chiave direttamente a un valore, il database evita ricerche complesse.

I miei dati assomigliano a oggetti nel mio codice, come prodotti con caratteristiche diverse?

Documento

L'archiviazione dei dati in formati come JSON semplifica l'utilizzo dei dati direttamente nel codice dell'applicazione.

Sto creando un'applicazione di AI che deve cercare il "significato" o la somiglianza?

Vettoriale

Sono ottimizzati per archiviare e confrontare i dati in base alla somiglianza matematica piuttosto che a parole chiave esatte.

Le relazioni tra i miei punti dati sono importanti quanto i dati stessi?

Grafico

Questi sistemi sono progettati per attraversare rapidamente connessioni complesse, come i social network o i percorsi di rilevamento delle frodi.

Devo monitorare dati che cambiano costantemente nel tempo, come le letture dei sensori?

Serie temporali

Sono ottimizzati per registrare ed eseguire query su punti dati indicizzati specificamente in base al tempo.

Una volta che sai quale tipo di database è adatto al tuo progetto, dovresti anche considerare come lo gestirai. Se devi scalare rapidamente e vuoi dedicare il tuo tempo alla scrittura di funzionalità invece di correggere gli errori del server, un servizio cloud gestito è di solito la soluzione migliore.

Il tuo database è pronto per l'AI?

Anche se il tuo database funziona bene per l'app attuale, l'AI introduce nuove esigenze. Prima di iniziare a creare la tua prossima funzionalità di AI, poniti queste domande per vedere se la tua configurazione attuale è davvero pronta per l'attività:

  • Il mio database può archiviare dati vettoriali ad alta dimensionalità insieme ai miei dati regolari?
  • Se la risposta è sì: puoi mantenere la tua architettura semplice utilizzando il database esistente per l'AI
  • Se la risposta è no: potresti dover aggiungere un database vettoriale o un plug-in specializzato al tuo stack
  • Il mio database offre una ricerca di similarità integrata?
  • Se la risposta è sì: il tuo sistema può trovare rapidamente corrispondenze "significative" senza codice aggiuntivo
  • Se la risposta è no: devi creare o gestire un "livello di ricerca" separato per trasformare i tuoi dati in qualcosa che l'AI possa comprendere
  • Il mio database è in grado di elaborare i dati senza spostarli altrove?
  • Se la risposta è sì: risparmi sui costi di trasferimento dei dati e riduci la latenza delle risposte dell'AI
  • In caso contrario: potresti riscontrare colli di bottiglia delle prestazioni poiché devi costantemente spostare i dati avanti e indietro verso un modello di AI esterno
  • Il mio database gestisce diversi tipi di dati (testo, immagini, audio) in un unico posto?
  • Se la risposta è sì: puoi creare app di AI complesse e "multimodali" con un linguaggio di query unificato
  • Se no: potresti dover unire più database, il che rende il codice più difficile da gestire
  • Con quanta facilità il mio database può aggiornare le proprie "conoscenze" man mano che arrivano nuovi dati?
  • Se la risposta è sì: le tue funzionalità di AI possono riflettere immediatamente le modifiche in tempo reale man mano che i tuoi dati vengono aggiornati
  • In caso di risposta negativa: le risposte dell'AI potrebbero essere "obsolete" o imprecise fino a quando non viene attivata manualmente una reindicizzazione che richiede molto tempo
  • Il mio database fornisce controlli di accesso e sicurezza efficaci per le query di AI?
  • Se la risposta è sì: puoi creare in tutta sicurezza app di AI che mostrino agli utenti solo le informazioni che sono autorizzati a vedere
  • Se la risposta è no: c'è il rischio di "perdita di dati", in cui l'AI potrebbe condividere accidentalmente informazioni riservate con la persona sbagliata
Google Cloud