Potresti avere familiarità con i database che memorizzano i record in righe. Un database colonnare, tuttavia, memorizza i dati in colonne. Un database colonnare è una forma di database NoSQL che memorizza dati non strutturati. È in grado di recuperare i dati più velocemente rispetto a un tradizionale database strutturato basato su righe. I database che memorizzano i dati in colonne consentono letture molto più veloci, ma sacrificano le performance delle transazioni in scrittura. Le performance di lettura sono migliorate perché i dati vengono memorizzati raggruppati per colonna anziché per righe.
Che cos'è un database colonnare?
Per accelerare le query, un database colonnare memorizza i dati in colonne anziché in righe. Questi database moderni sono anche chiamati negozi "orientati alle colonne" o "a colonne larghe". Man mano che le aziende aumentano la quantità di dati archiviati, possono raggiungere terabyte (o più) di data storage da recuperare. I database colonnari accelerano l'elaborazione delle query e vengono spesso utilizzati per Big Data o query per gli analytics del machine learning.
Caratteristiche principali dei database colonnari
Il miglioramento delle performance delle query è uno dei vantaggi principali dei database colonnari, ma offre diversi altri vantaggi. Ecco alcuni motivi per cui potresti trarre vantaggio dal passaggio da database basati su righe a database colonnari:
- Compressione dei dati: La compressione avanzata dei dati riduce la quantità di requisiti di storage, il che richiede anche meno tempo di ricerca per trovare i dati su disco. Più veloci sono i tempi di ricerca e gli aggiornamenti delle performance, più veloci saranno i calcoli più comuni (es. MIN o SUM).
- Maggiore velocità degli analytics: I software di machine learning e analytics richiedono enormi quantità di dati, quindi un database colonnare accelera queste applicazioni con un'elaborazione delle query più rapida di dataset di grandi dimensioni.
- Auto-indicizzazione: Gli amministratori che utilizzavano gli indici manuali nei database tradizionali apprezzeranno la capacità del database colonnare di eseguire l'auto-indice, riducendo anche la quantità di spazio di storage necessario per i dati.
- Vettorizzazione: I database colonnari gestiscono più data point per analytics avanzati e funzioni matematiche molto più velocemente rispetto ai database basati su righe standard.
- Eliminazione di NULL: Invece di memorizzare i valori NULL, che occupano spazio di storage, i database colonnari non memorizzano i valori NULL o mancanti.
Casi d'uso per database colonnari
I database colonnari sono più vantaggiosi per le query di dati in cui sono necessarie solo poche colonne per i risultati. I database relazionali tradizionali hanno tabelle che possono avere diverse colonne per una singola riga, ma i database colonnari raggruppano i dati in base alle colonne. Se hai una query che richiede solo poche colonne per visualizzare i risultati agli utenti, un database colonnare migliorerà le performance delle tue applicazioni.
Alcuni casi d'uso per i database colonnari:
- Business analytics: Per molte metriche di business, sono necessarie alcune colonne per riassumere il successo. Un database colonnare può visualizzare meglio le previsioni di analytics e machine learning in base a queste poche colonne. Ad esempio, gli analytics basati sulle vendite totali di un prodotto potrebbero essere adatti allo storage di database colonnare.
- Monitoraggio della sicurezza o delle applicazioni: I dati raccolti dagli eventi delle applicazioni (ad esempio, errori di autenticazione o tempi di risposta) possono essere memorizzati in un database colonnare e utilizzati negli analytics per migliorare le performance e arrestare gli attacchi informatici in corso.
- IoT: i sensori IoT per i macchinari di magazzino o il monitoraggio sanitario raccolgono i dati e li memorizzano in colonne specifiche, che possono essere utilizzate per rilevare anomalie nei macchinari o nella bioattività umana.
Confronto con database basati su righe
La differenza principale tra un database basato su colonne e un database basato su righe è la funzionalità di storage di backend. Un database colonnare raggruppa i dati delle colonne, in modo che le query non debbano cercare intere righe per ogni colonna da recuperare. Al contrario, le colonne vengono raggruppate per un recupero più rapido.
I database basati su righe raggruppano lo storage di intere righe utilizzando indici, quindi sono utili quando hai query transazionali. Ad esempio, se si ospita un sito in cui gli utenti cercano i loro acquisti recenti, un database relazionale offre performance e strategie di sviluppo migliori. I database basati su colonne sono più adatti per Big Data e analytics. Se hai la necessità di cercare milioni di record per trovare gli acquisti e fornire i risultati agli algoritmi di machine learning, un database basato su colonne sarebbe meglio.
Soluzioni di database colonnari più diffuse
Per le tue soluzioni di sviluppo sono disponibili diversi database colonnari. Ognuno ha i propri vantaggi e svantaggi. Eccone alcuni da considerare:
- Snowflake: Snowflake è molto diffuso nelle grandi infrastrutture di data warehouse. Può combinare più origini dati per fornire un motore di query da un'unica posizione. Snowflake viene utilizzato principalmente per il machine learning e gli analytics, ma è noto per Snowpipe, una funzionalità di acquisizione dati continua ideale per l'output in tempo reale.
- MariaDB: MariaDB è una versione modificata e più scalabile di MySQL quindi viene spesso utilizzata quando l'infrastruttura attuale funziona con MySQL. Gli amministratori che hanno familiarità con MySQL apprezzeranno il supporto esteso delle query JSON e MariaDB supporta fino a 200.000 connessioni simultanee. MariaDB utilizza motori di storage più estesi, tra cui XtraDB, Aria, InnoDB, MariaDB ColumnStore, Memory, Cassandra e Connect. Usa MariaDB quando hai connessioni a volumi elevati e hai bisogno di risultati rapidi in tempo reale.
- Redshift: Redshift è una soluzione Amazon, quindi viene spesso utilizzata quando un'organizzazione dispone di un'infrastruttura AWS. È vantaggioso per le aziende che lavorano con database cloud AWS che devono condividere i dati con Redshift per il machine learning, le previsioni, le previsioni finanziarie e le dashboard utente per gli analytics.
- BigQuery: Per gli utenti di Google Cloud Platform (GCP), Google offre BigQuery. Come Redshift, gli amministratori con dati già memorizzati sulla piattaforma Google possono sfruttare BigQuery e utilizzare i dati in GCP per creare un silo di dati alimentati agli algoritmi di machine learning. La business intelligence e gli analytics sono comunemente utilizzati con BigQuery.
- Vertica: Gli amministratori con l'obiettivo di integrare le soluzioni Hadoop potrebbero scoprire che Vertica è molto più conveniente degli altri database colonnari elencati qui. Vertica è vantaggioso anche se si desidera implementarlo on-premise.
- SAP HANA: SAP HANA Cloud offre SAP HANA DPaaS (database platform-as-a-service) e SAP collabora con il proprio database per la sua tecnologia ERP. Gli sviluppatori che creano soluzioni JavaScript potrebbero apprezzare il framework JavaScript SAP HANA con HTML5 per supportare i loro progetti ERP.
- Cosmos DB: Cosmos DB è una soluzione Microsoft Azure, quindi viene utilizzata quando gli amministratori dispongono già di servizi cloud Azure. È comunemente utilizzato negli ambienti Microsoft, ma è vantaggioso per la raccolta di dati IoT, il retail e il marketing, il gaming e le applicazioni social che richiedono previsioni e analytics in tempo reale.
Conclusione
Se si dispone di dataset di grandi dimensioni basati su poche colonne in un database relazionale, è possibile migliorare le performance passando a un database colonnare. Questi database sono perfetti per analytics, applicazioni in tempo reale, machine learning, predictive analytics e altre applicazioni di Big Data. La maggior parte dei database colonnari funziona con Big Data con requisiti di storage di terabyte. Pure Storage fornisce soluzioni per archiviare i Big Data che possono essere acquisiti e archiviati nel database colonnare.