A Comparative Performance Evaluation of SQL and NoSQL Databases Under Different Indexing and Cache Conditions
Questo studio confronta MySQL 8.0.46 e MongoDB 8.0.32 attraverso diverse dimensioni dei dataset, strategie di indicizzazione e condizioni di cache, rivelando che MongoDB eccelle nelle scritture massive mentre entrambi i sistemi beneficiano significativamente dell'indicizzazione per le ricerche, dimostrando in definitiva che le prestazioni del database sono altamente dipendenti dal contesto piuttosto che universalmente superiori per l'uno o per l'altro modello.
Articolo originale sotto licenza CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Nel mondo digitale, quasi ogni azione lascia una traccia. Un acquisto, un accesso, un messaggio inviato: ogni evento viene memorizzato in un database, un vasto archivio elettronico che custodisce la memoria della vita moderna. Per mantenere questi sistemi in funzione correttamente, gli ingegneri devono scegliere tra due tipi principali di sistemi di archiviazione. Un tipo, noto come relazionale, organizza i dati in tabelle rigide con righe e colonne ben definite, molto simile a un tradizionale foglio di calcolo. L'altro, chiamato NoSQL, memorizza le informazioni sotto forma di documenti flessibili e autonomi che possono variare per forma e dimensione. Per anni, un dibattito è rimasto acceso su quale sistema sia più veloce o migliore. La risposta, tuttavia, è raramente semplice, perché la velocità dipende interamente da ciò che si chiede al sistema di fare e da quanta quantità di dati deve ricercare.
Un recente studio si è posto l'obiettivo di risolvere questa questione non con la teoria, ma con un esperimento controllato. I ricercatori Amir Khan, Sawaira Gull e Arooj Shahzadi hanno costruito un ambiente di test su un singolo computer per vedere come due sistemi popolari, MySQL e MongoDB, si comportassero in condizioni identiche. Non si sono limitati a chiedere quale fosse il più veloce; hanno chiesto come la velocità cambiasse quando la quantità di dati cresceva da un piccolo mucchio a una montagna massiccia, e come l'uso degli indici — scorciatoie specializzate che aiutano il sistema a trovare rapidamente le informazioni — alterasse i risultati. Hanno testato tre compiti specifici: scaricare una grande quantità di nuovi dati nel sistema, trovare un singolo record basato su un nome specifico e raggruppare molti record insieme per calcolare un totale.
I ricercatori hanno iniziato generando record di transazioni sintetiche, creando tre dataset separati contenenti diecimila, centomila e un milione di voci. Hanno caricato questi record in entrambi i sistemi di database e misurato quanto tempo occorresse per completare ogni compito. Nel primo test, che consisteva nello scrivere tutti i dati nel sistema in una volta sola, il sistema basato su documenti, MongoDB, si è rivelato costantemente più veloce. Gestendo un milione di record, ha completato il compito in circa dodici e mezzo secondi, mentre il sistema relazionale, MySQL, ne ha impiegati quasi trenta. Questa differenza è rimasta valida indipendentemente dal fatto che il dataset fosse piccolo o grande, suggerendo che per la pura ingestione di dati, l'approccio basato su documenti avesse un chiaro vantaggio in questa specifica configurazione.
Il secondo test si è concentrato sulla ricerca di un singolo record, simile alla ricerca di un cliente specifico tramite il suo numero ID. In questa fase, i ricercatori hanno misurato il tempo necessario per trovare un record sia senza alcun aiuto che con l'ausilio di un indice. Senza un indice, il sistema doveva scansionare ogni singolo record per trovare la corrispondenza. Con la crescita dei dati fino a un milione di voci, questa ricerca è diventata dolorosamente lenta, richiedendo oltre mezzo secondo in entrambi i sistemi. Tuttavia, una volta che i ricercatori hanno aggiunto un indice a campo singolo — una lista semplice che punta direttamente alla posizione di ogni ID — i risultati sono cambiati drasticamente. Il tempo per trovare il record è crollato a poco più di un millisecondo per entrambi i sistemi. Questa riduzione, che ha superato il novanta per cento, ha dimostrato che per le ricerche semplici, il tipo di database contava molto meno della presenza di una buona mappa per guidare la ricerca.
Il terzo test era più complesso e prevedeva un'aggregazione filtrata. I ricercatori hanno chiesto al sistema di trovare tutte le transazioni in una categoria specifica, raggrupparle per stato e sommare gli importi totali. Questo compito è più difficile perché richiede non solo di trovare i dati, ma anche di ordinarli e calcolarli. In questo scenario, i risultati sono stati meno uniformi. Per i dataset più piccoli, il sistema relazionale era talvolta più veloce, ma man mano che i dati crescevano fino a un milione di record, il sistema basato su documenti prendeva il sopravvento significativamente. Il sistema documentale ha completato il compito in circa trecento millisecondi, mentre il sistema relazionale ne ha impiegati oltre un secondo.
Forse il risultato più sorprendente è emerso durante questo terzo test con il dataset più grande. Quando i ricercatori hanno utilizzato un indice sul campo della categoria per velocizzare il sistema relazionale, il compito è diventato in realtà più lento rispetto a quando non c'era alcun indice. Il sistema ha impiegato oltre un secondo con l'indice, rispetto ai circa settecento millisecondi senza di esso. Questo risultato controintuitivo non era un errore; i ricercatori hanno ripetuto il test indipendentemente e hanno confermato che l'indice causava effettivamente un ritardo in questa specifica configurazione. Sembra che per questo particolare tipo di calcolo complesso, l'overhead dell'uso dell'indice abbia superato i suoi benefici, una sfumatura che una semplice conclusione del tipo "uno è più veloce dell'altro" perderebbe.
Lo studio ha anche esaminato come i sistemi si comportassero quando erano già "caldi", ovvero quando avevano elaborato richieste simili di recente e avevano i dati pronti nella memoria. In queste condizioni, entrambi i sistemi sono diventati più veloci, ma il grado di miglioramento variava. Il sistema documentale ha registrato un aumento significativo nella velocità di aggregazione quando era caldo, mentre il sistema relazionale ha mostrato un guadagno più modesto. Questi risultati rafforzano l'idea che la prestazione non sia una proprietà fissa del software stesso, ma un risultato fluido dell'interazione tra la dimensione dei dati, il tipo di query, la presenza di indici e lo stato attuale della memoria del sistema.
In definitiva, la ricerca conclude che non esiste un vincitore universale. La scelta tra questi due modelli di database non può essere presa sulla base di un singolo test di velocità. Se l'obiettivo è ingerire rapidamente enormi quantità di nuovi dati, il sistema basato su documenti ha mostrato un vantaggio distintivo. Se l'obiettivo è recuperare un singolo record, entrambi i sistemi funzionano altrettanto bene purché sia presente un indice appropriato. Tuttavia, per calcoli complessi che coinvolgono grandi volumi di dati, le prestazioni possono oscillare a seconda di come i dati sono strutturati e indicizzati. Lo studio serve da promemoria che nel mondo dei dati, lo strumento giusto dipende interamente dal compito specifico, e che la via più efficiente si trova spesso non scegliendo un marchio, ma comprendendo la forma unica del lavoro da svolgere.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.