Negli anni '70, Oracle Corporation divenne la prima azienda a immettere sul mercato il database relazionale. In un momento in cui gli ingegneri del software scrivevano codice su fogli di carta, Oracle aveva creato un software che procurava enormi vantaggi in termini di efficienza. RDBMS divenne uno standard e Oracle diventò uno dei fornitori di software più affermati e solidi del settore aziendale. Alternative come MongoDB sono arrivate negli anni 2000 per far fronte a nuove modalità di archiviazione e gestione dei dati.
Le aziende moderne stanno studiando metodi per sfruttare meglio i propri dati, sia che si tratti di ottenere un migliore insight sui clienti, adattarsi alle mutevoli aspettative degli utenti o battere la concorrenza sul tempo con nuove applicazioni e nuovi modelli di business. Di conseguenza, molti dei presupposti che hanno guidato lo sviluppo dei precedenti relational database sono cambiati:
- la domanda per una maggiore produttività degli sviluppatori e un time-to-market più rapido, che vede i tradizionali e rigidi modelli di dati relazionali e lo sviluppo a cascata di applicazioni monolitiche cedere il passo a metodologie agili, microservizi e DevOps, determinano una compressione dei cicli di rilascio che passa da mesi e anni a giorni e settimane.
- La necessità di gestire incrementi enormi di nuove tipologie di dati in rapida evoluzione: dati strutturati, semi-strutturati e polimorfici generati da nuove classi di applicazioni web, mobili, social e IoT.
- Il passaggio massiccio ai sistemi distribuiti e al cloud computing consente agli sviluppatori di sfruttare un'infrastruttura on-demand di elaborazione e storage altamente scalabile, insieme alla capacità di servire l'utenza in qualsiasi luogo e per qualsiasi scopo in tutto il mondo, soddisfando allo stesso tempo una serie di adempimenti normativi totalmente nuovi sulla sovranità dei dati.
Di conseguenza, i database NoSQL (non relazionali), come MongoDB, sono emersi per soddisfare i requisiti delle nuove applicazioni e modernizzare i carichi di lavoro esistenti. Grazie al supporto per le transazioni ACID multi-documento, MongoDB rende più facile che mai gestire i casi d'uso che già ora Oracle gestisce con difficoltà, o che avrà difficoltà a gestire in futuro.
Questa pagina fornisce una panoramica di Oracle e MongoDB, evidenziando le principali differenze e i casi d'uso appropriati per ciascuno dei sistemi. Puoi approfondire i vantaggi apportati dalla modernizzazione dei sistemi legacy e dei processi di sviluppo visitando la nostra pagina Legacy Modernization.
Cos'è Oracle?
Oracle è un'azienda tecnologica globale specializzata in sistemi di gestione di database. La sua offerta principale è Oracle Database 23ai. Viene venduto tramite un modello di licenza per elaborazione, in cui il prezzo aumenta a seconda dei componenti aggiuntivi richiesti per specifiche funzionalità. In Oracle, l'utente predefinisce lo schema del database in base ai propri requisiti. Successivamente, si impostano le regole per governare le relazioni tra i campi nelle tabelle. Le informazioni correlate possono essere archiviate in tabelle separate. Queste informazioni vengono quindi associate tramite l'uso di chiavi esterne e join. Qualsiasi modifica dello schema richiede una procedura di migrazione, che può portare il database offline o ridurre significativamente le prestazioni dell'applicazione.
Cos’è MongoDB?
MongoDB è un database non relazionale sviluppato da MongoDB, Inc. MongoDB memorizza dati strutturati, semistrutturati e non strutturati come documenti in una rappresentazione binaria denominata BSON (JSON binaria). Le informazioni correlate sono memorizzate insieme per permettere un rapido accesso alle interrogazioni tramite MongoDB Query Language (MQL). I campi possono variare da un documento all'altro; non è necessario dichiarare la struttura dei documenti al sistema, in quanto gli stessi sono auto-descrittivi. Se è necessario aggiungere un nuovo campo a un documento, è possibile crearlo senza interessare tutti gli altri documenti nella raccolta, senza aggiornare un catalogo centrale di sistema e senza portare il sistema offline. Facoltativamente, è possibile utilizzare la convalida dello schema per imporre controlli di governance dei dati su ciascuna raccolta.
Il data model doc di MongoDB mappa naturalmente gli oggetti nel codice dell'applicazione. Questo semplifica l'apprendimento e l'utilizzo da parte degli sviluppatori. I documenti offrono la possibilità di rappresentare relazioni gerarchiche per archiviare facilmente matrici e altre strutture più complesse.
Driver nativi e idiomatici sono forniti per più di 12 linguaggi, e la MongoDB Community ne ha costruiti a decine, consentendo query ad hoc, aggregazione in tempo reale e una ricca indicizzazione per potenti modalità programmatiche di accesso e analisi dei dati di qualsiasi struttura.
I documenti possono unificare dati correlati che altrimenti verrebbero modellati attraverso tabelle separate padre-figlio in uno schema relazionale. Di conseguenza, le operazioni atomiche a singolo documento di MongoDB forniscono già una semantica delle transazioni che soddisfa le esigenze di integrità dei dati della maggior parte delle applicazioni. In una singola operazione possono essere scritti uno o più campi. Ciò include aggiornamenti a più sottodocumenti ed elementi di una matrice. Le garanzie fornite da MongoDB assicurano un isolamento completo durante l'aggiornamento di un documento; in caso di errore, l'operazione viene annullata in modo che i client ricevano una vista del documento priva di incongruenze.
A differenza di Oracle e di altri database relazionali, MongoDB è basato su un'architettura di sistemi distribuiti anziché su un design monolitico a nodo singolo. Di conseguenza, MongoDB offre scalabilità orizzontale e localizzazione dei dati immediatamente implementabili tramite partizionamento orizzontale per zone e replica set per mantenere una disponibilità senza interruzioni.
Transazioni ACID multi-documento
Le transazioni multi-documento rendono MongoDB l'unico database in grado di combinare le garanzie ACID dei tradizionali database relazionali con la velocità, la flessibilità e la potenza del document model, insieme a una progettazione intelligente dei sistemi distribuiti per scalare e posizionare i dati laddove necessario. Attraverso l'isolamento degli snapshot, le transazioni forniscono una visione coerente dei dati e impongono un'esecuzione "all-or-nothing" per mantenere l'integrità degli stessi. Le transazioni in MongoDB sono analoghe alle transazioni con cui gli sviluppatori hanno già familiarità in Oracle. Sono multi-statement, con una sintassi simile (ad es. start_transaction e commit_transaction) e, pertanto, facili da aggiungere a qualsiasi applicazione per chiunque abbia già esperienza con le transazioni.
Perché utilizzare MongoDB al posto di Oracle?
Le organizzazioni di tutte le dimensioni stanno adottando MongoDB perché consente loro di creare applicazioni più velocemente, gestire tipi di dati estremamente diversificati e gestire le applicazioni in modo più efficiente su vasta scala.
Lo sviluppo è semplificato poiché i documenti MongoDB si collegano naturalmente ai linguaggi di programmazione moderni orientati agli oggetti. L'uso di MongoDB rimuove il complesso layer ORM (object-relational mapping) che traduce gli oggetti nel codice in celle nelle tabelle relazionali.
Quando si valutano i database, è fondamentale considerare i costi relativi di ciascuna soluzione: non solo il costo del software, ma anche i costi dell'hardware, dello sviluppo e della distribuzione. Le organizzazioni possono risparmiare milioni di dollari passando da Oracle a MongoDB, beneficiando di una migliore replica dei dati, di guadagni in termini di produttività degli sviluppatori, di una riduzione delle licenze e di minori requisiti hardware.
MongoDB può anche essere scalato all'interno e attraverso più data center distribuiti. Ciò fornisce nuovi livelli di disponibilità e scalabilità precedentemente irraggiungibili con database relazionali come Oracle. Man mano che le distribuzioni crescono in termini di volume di dati e throughput, MongoDB scala facilmente senza downtime e senza modificare l'applicazione. Al contrario, per poter scalare con Oracle, spesso si rende necessario un intervento ingegneristico su misura, oppure un investimento in costose piattaforme hardware personalizzate.
Se MongoDB è la soluzione giusta per te e attualmente utilizzi Oracle, consulta la nostra guida alla migrazione e il Relational Migrator di MongoDB: uno strumento che semplifica la migrazione e la trasformazione dei dati da un relational database a MongoDB, riducendo i rischi della transizione a MongoDB e aiutandoti a trarre il massimo vantaggio dal document model.
Gli utenti stanno preferendo MongoDB ad Oracle
Come illustrano gli esempi a seguire, la preferenza per MongoDB rispetto ad Oracle è determinata da miglioramenti radicali della produttività degli sviluppatori, delle prestazioni delle applicazioni e della scalabilità, riducendo al contempo in modo significativo costi e lock-in.
Per tenere il passo con le richieste del business, Travelers Insurance ha modernizzato i suoi processi di sviluppo con un'architettura di microservizi supportata da metodologie agile e DevOps. Ma la rigidità dei database Oracle e SQL Server impediva all'azienda di muoversi alla velocità necessaria. La soluzione è stata MongoDB e il suo modello di dati flessibile, particolarmente adatto per applicazioni di livello aziendale. L'azienda ha eliminato il tempo di attesa di tre giorni necessario per apportare modifiche al database, creando una pipeline di sviluppo del software che supporta la consegna ininterrotta di nuove funzionalità aziendali.
Il gigante finanziario RBS ha modernizzato i suoi sistemi di investment banking con un nuovo data fabric basato su MongoDB. Grazie allo smantellamento di centinaia di server Oracle, ha dato un impulso alla produttività degli sviluppatori per creare nuove applicazioni più velocemente, ha creato un'infrastruttura pronta per il cloud semplificata per scalare i dati e ha evitato milioni di dollari di costi.
Telefonica ha migrato il suo servizio di personalizzazione clienti da Oracle a MongoDB. Con Oracle ci sono voluti sette sviluppatori, molteplici iterazioni e 14 mesi per creare un sistema che non funzionava. Utilizzando MongoDB, un team di tre sviluppatori ha creato il nuovo servizio di personalizzazione in tre mesi, che ora alimenta sia i prodotti legacy che quelli nuovi in tutto il mondo. MongoDB aiuta Telefonica ad essere più agile, a risparmiare denaro e a generare nuovi flussi di ricavi.
La migrazione di China Eastern da Oracle a MongoDB ha permesso ai team di progetto e di ingegneria dell'azienda di creare un'applicazione impensabile con Oracle, trasformando l'esperienza del cliente e incrementando il giro d'affari online. La semplicità del data model doc, degli schemi dinamici, dei driver idiomatici e la flessibilità nell'indicizzazione si traducono nel fatto che adesso i team di sviluppo possono lanciare più rapidamente nuove applicazioni, raggiungendo inoltre notevoli risparmi sui costi.
In quali casi Oracle sarebbe la scelta migliore?
Benché molte organizzazioni siano migrate con successo da un RDBMS a MongoDB, non è possibile utilizzare MongoDB come sostituto diretto per le applicazioni legacy costruite attorno al modello di dati relazionale e a SQL. Tuttavia, le organizzazioni stanno traendo vantaggi dalla modernizzazione di applicazioni mission-critical che generano entrate verso MongoDB. Ad esempio, Cisco è passata da un database relazionale legacy a MongoDB e ha migliorato l'esperienza del cliente riducendo la latency di 8 volte ed eliminando i tempi di inattività per gli aggiornamenti di sistema. I team di sviluppo di Cisco possono creare e rilasciare nuove applicazioni più velocemente, mentre la piattaforma di e-commerce dell'azienda può sfruttare l'agilità di business resa possibile dal cloud computing.
Terminologia e concetti
Molti concetti presenti su Oracle trovano dei corrispettivi analoghi in MongoDB. La tabella seguente illustra i concetti comuni tra Oracle e MongoDB.
Confronto delle caratteristiche
Come Oracle, MongoDB offre un ricco set di caratteristiche e funzionalità che vanno ben oltre quelle offerte dai semplici archivi di dati NoSQL. MongoDB ha un linguaggio di query avanzato, indici secondari altamente funzionali (inclusi la ricerca testuale e gli indici geospaziali), un potente aggregation framework per l'analisi dei dati, la ricerca multivariata, il graph processing e altro ancora. Con MongoDB è anche possibile utilizzare queste funzionalità su più tipologie di dati diversi rispetto a un database relazionale, ed è possibile farlo su larga scala.
Linguaggio delle Query
Sia Oracle che MongoDB sono provvisti di un linguaggio di query avanzato. Di seguito sono riportati alcuni esempi di istruzioni SQL e relative corrispondenze in MongoDB. Un elenco più completo di istruzioni è disponibile nella documentazione di MongoDB.
Vuoi migrare da Oracle a MongoDB?
Se si sta valutando la migrazione dei dati da Oracle a MongoDB, Relational Migrator può essere d'aiuto. È uno strumento MongoDB gratuito che semplifica e ottimizza il processo di migrazione, riducendo significativamente l'impegno e i rischi dell'iniziativa di migrazione.
Vuoi migrare? Inizia oggi stesso con il Relational Migrator gratuito!