Non esiste una vera e propria soluzione a quando utilizzare uno l’altro DBMS, va scelto a seconda dei casi e degli eventuali PRO e CONTRO che si vanno a sviluppare.
Una traccia generale su quando utilizzare MySQL è dettata da:
Dimensioni contenute
Il database non cresce troppo in dimensioni, dimensioni eccessive delle tabelle e quindi del database file degradano le prestazioni di ricerca.
Tempi rapidi di risposta su piccole moli di dati
C’è la necessità di tempi di risposta rapidi, essendo gli accessi al database file idealmente univoci, viene implementato in MySQL un sistema di caching in RAM che aumenta le prestazioni su un numero elevato di query/secondo. In MongoDB al contrario l’accesso al documento fa perdere molto tempo per operazioni di apertura e chiusura del file su filesystem.
Schema stabile
La struttura non varia nel tempo o comunque ha variazioni minime, grazie allo schema infatti la struttura delineata ad inizio progetto non si discosta (di solito) da quello che verrà trovato alla sua fine. Questo succede perché le variazioni di schema impattano tutti i dati presenti su una tabella e vengono sempre effettuate “se e solo se” è estremamente necessario.
Sicurezza dei dati
La sicurezza dei dati viene gestita in maniera stringente grazie ad un sistema privilege level based, infatti vengono stabiliti dei gruppi con dei privilegi e gli utenti afferiscono a questi gruppi, nel modello di MongoDB c’è più libertà a causa del role based dove ogni utente ha le sue caratteristiche non necessariamente afferenti ad un gruppo specifico.
Posso suggerire l’utilizzo di MongoDB in queste situazioni:
Schema variabile
Si lavora su un progetto con uno schema non ben definito o instabile, quando si sviluppano progetti di ricerca dove c’è alta variabilità sulla natura, quantità e caratteristiche del dato, MongoDB diventa la soluzione ottimale perché ogni document definisce il proprio schema.
Scalabilità orizzontale
I servizi possono scalare orizzontalmente. Mentre MySQL che è scalabile verticalmente, ovvero un singolo server può aumentare CPU e RAM senza inficiare le prestazioni del DBMS, MongoDB è progettato per scalare orizzontalmente. Questa caratteristica gli permette di essere inizializzato su un cluster con uno o più istanze del DBMS e creare delle repliche (o supporti) anche nel tempo.
Time To Market
Il Time To Market è essenziale, l’assenza di schema e la possibilità di gestire dati di qualsiasi natura (sempre rispettando il limiti di 16MB per document), lo rendono la scelta migliore per un rapido sviluppo sia come deposito dati per un software che come repository per l’analisi dei dati tramite Query.
App based
Ottima soluzione per APP con Geolocalizzazione, MongoDB introduce la tipologia di dato Geofence ed è ottimizzato per le ricerche su latitudine/longitudine.
Velocità di ricerca e reperimento su grandi moli di dati
Velocità di reperimento dati di grandi dimensioni, a differenza di MySQL che ha una velocità di ricerca elevata per tabelle di piccole dimensioni, MongoDB è ottimizzato per la ricerca su collection di document anche molto grandi. Essendo un DBMS di tipologia NoSQL, inoltre, non è sottoposto a JOIN e la sua caratteristica di embedding velocizza il processo di ricerca e recupero informazioni che diventa molto più rapido di MySQL.