MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Fattori da considerare quando si sceglie MongoDB per applicazioni Big Data

I progressi tecnologici hanno portato vantaggi che devono essere sfruttati dalle organizzazioni aziendali per il massimo valore del profitto e la riduzione dei costi operativi. I dati sono stati la spina dorsale di questi progressi tecnologici da cui derivano procedure sofisticate per il raggiungimento di obiettivi specifici. Con l'avanzare della tecnologia, ci sono più dati inseriti nei sistemi. Inoltre, man mano che un'azienda cresce, sono coinvolti più dati e la configurazione del sistema di servizio deve essere un'elaborazione dati veloce, un'archiviazione affidabile e offrire una sicurezza ottimale per questi dati. MongoDB è uno dei sistemi affidabili per il raggiungimento di questi fattori.

Big Data si riferisce a enormi dati in rapida evoluzione, facilmente accessibili e altamente disponibili per soddisfare le esigenze in modo efficiente. Le organizzazioni aziendali tendono a riesaminare le configurazioni di database disponibili che fornirebbero le migliori prestazioni con il passare del tempo e di conseguenza realizzerebbero un certo valore dai Big Data.

Ad esempio, i mercati online osservano i clic sul Web dei clienti, il potere d'acquisto e quindi utilizzano i dati derivati ​​per suggerire altri beni come mezzo di pubblicità o utilizzano i dati per determinare i prezzi. I robot imparano attraverso l'apprendimento automatico e il processo ovviamente implica la raccolta di molti dati perché il robot dovrebbe conservare ciò che ha appreso in memoria per un utilizzo successivo. Conservare questo tipo di dati complessi con i tradizionali software di database è considerato impraticabile.

Caratteristiche dei Big Data

Nei sistemi software, consideriamo i Big Data in termini di dimensioni, velocità di accesso e tipi di dati coinvolti. Questo può essere relativamente ridotto a 3 parametri: 

  1. Volume
  2. Velocità
  3. Varietà

Volume

Il volume è la dimensione dei Big Data coinvolti e varia da gigabyte a terabyte o più. Quotidianamente, le grandi aziende ingeriscono terabyte di dati dalle loro operazioni quotidiane. Ad esempio, una società di telecomunicazioni vorrebbe tenere un registro delle chiamate effettuate dall'inizio della propria attività, dei messaggi inviati e del tempo impiegato da ciascuna chiamata. Quotidianamente, ci sono molte di queste attività che si svolgono e quindi producono molti dati. I dati possono essere utilizzati nell'analisi statistica, nel processo decisionale e nella pianificazione tariffaria.

Velocità

Considera piattaforme come il trading Forex che necessitano di aggiornamenti in tempo reale su tutte le macchine client connesse e visualizzano i nuovi aggiornamenti di borsa in tempo reale. Ciò impone che il database di servizio dovrebbe essere abbastanza veloce nell'elaborazione di tali dati con poca latenza in mente. Alcuni giochi online che coinvolgono giocatori di diverse località del mondo raccolgono molti dati da clic, trascinamenti e altri gesti degli utenti, quindi li inoltrano tra milioni di dispositivi in ​​microsecondi. Il sistema di database coinvolto deve essere abbastanza veloce per fare tutto questo in tempo reale.

Varietà

I dati possono essere classificati in diversi tipi che vanno da, numeri, stringhe, data, oggetti, array, dati binari, codice, dati geospaziali ed espressioni regolari, solo per citarne alcuni. Un sistema di database ottimale dovrebbe fornire funzioni in atto per migliorare la manipolazione di questi dati senza incorrere in procedure aggiuntive dal lato client. Ad esempio, MongoDB fornisce le operazioni di geolocalizzazione per l'utilizzo durante il recupero di posizioni vicine alle coordinate fornite nella query. Questa capacità non può essere raggiunta con i database tradizionali poiché sono stati progettati solo per gestire strutture di piccoli volumi di dati, meno aggiornamenti e alcune strutture di dati coerenti. Inoltre, saranno necessarie operazioni aggiuntive per raggiungere alcuni obiettivi specifici, nel caso dei database tradizionali.

MongoDB può anche essere eseguito da più server, rendendolo poco costoso e infinito, contrariamente ai database tradizionali progettati per essere eseguiti solo su un singolo server.

Fattori da considerare quando si sceglie MongoDB per i Big Data

I big data offrono un vantaggio aziendale quando sono gestiti in modo ottimale grazie a una maggiore potenza di elaborazione. Quando si seleziona un sistema di database, è necessario considerare alcuni fattori relativi al tipo di dati con cui si avrà a che fare e se il sistema selezionato fornisce tale capacità. In questo blog discuteremo in alcuni casi dei vantaggi offerti da MongoDB per i Big Data rispetto ad Hadoop.

  • Un linguaggio di query avanzato per query dinamiche
  • Incorporamento dei dati
  • Alta disponibilità
  • Indicizzazione e scalabilità
  • Motore di archiviazione efficiente e gestione della memoria
  • Coerenza e integrità dei dati

Rich Query Language per query dinamiche

MongoDB è più adatto per Big Data in cui i dati risultanti richiedono ulteriori manipolazioni per l'output desiderato. Alcune delle potenti risorse sono le operazioni CRUD, il framework di aggregazione, la ricerca di testo e la funzione Map-Reduce. All'interno del framework di aggregazione, MongoDB ha una funzionalità di geolocalizzazione aggiuntiva che può consentire di fare molte cose con i dati geospaziali. Ad esempio, creando un indice 2Dsphere, puoi recuperare posizioni all'interno di un raggio definito semplicemente fornendo le coordinate di latitudine e longitudine. Facendo riferimento all'esempio di telecomunicazione di cui sopra, l'azienda può utilizzare la funzione Map-reduce o il framework di aggregazione per raggruppare le chiamate da una determinata località, calcolando il tempo medio di chiamata su base giornaliera per i propri utenti o più altre operazioni. Controlla l'esempio qui sotto.

Facciamo una raccolta di posizione con i dati

{ name: "KE",loc: { type: "Point", coordinates: [ -73.97, 40.77 ] }, category: "Parks"}

{ name: "UG",loc: { type: "Point", coordinates: [ -45.97, 40.57 ] }, category: "Parks"}

{ name: "TZ",loc: { type: "Point", coordinates: [ -73.27, 34.43 ] }, category: "Parks"}

{ name: "SA",loc: { type: "Point", coordinates: [ -67.97, 40.77 ] }, category: "Parks"}

Possiamo quindi trovare dati per località vicine a [-73.00, 40.00] utilizzando il framework di aggregazione e entro una distanza di 1KM con la query seguente:

db.places.aggregate( [

   {

      $geoNear: {

         near: { type: "Point", coordinates: [ -73.00, 40.00 ] },

         spherical: true,

         query: { category: "Parks" },

         distanceField: "calcDistance",

   maxDistance: 10000

      }

   }

]

L'operazione Map-Reduce è disponibile anche in Hadoop ma è adatta per richieste semplici. Il processo iterativo per Big Data che utilizza Map-Reduce in Hadoop è piuttosto lento rispetto a MongoDB. Il motivo è che le attività iterative richiedono molte mappe e riducono i processi prima del completamento. Nel processo, vengono generati più file tra la mappa e riducono le attività rendendola abbastanza inutilizzabile nell'analisi avanzata. MongoDb ha introdotto il framework della pipeline di aggregazione per arginare questa battuta d'arresto ed è il più utilizzato nel recente passato.

Incorporamento dei dati

MongoDB è basato su documenti con la possibilità di inserire più campi all'interno di un singolo campo chiamato incorporamento. L'incorporamento ha il vantaggio di eseguire query minime per un singolo documento poiché il documento stesso può contenere molti dati. Per i database relazionali in cui una potrebbe avere molte tabelle, devi inviare più query al database per lo stesso scopo.

Alta disponibilità

La replica dei dati su più host e server è ora possibile con MongoDB, a differenza dei DBMS relazionali in cui la replica è limitata a un singolo server. Ciò è vantaggioso in quanto i dati sono altamente disponibili in posizioni diverse e gli utenti possono essere serviti in modo efficiente dal server più vicino. Inoltre, il processo di ripristino o interruzione è facilmente realizzabile considerando la funzionalità di journaling in MongoDB che crea punti di controllo da cui è possibile fare riferimento al processo di ripristino.

Indicizzazione e scalabilità

L'indicizzazione primaria e secondaria in MongoDB ha molti vantaggi. L'indicizzazione fa eseguire le query per prime, una considerazione necessaria per i Big Data, come abbiamo discusso nella caratteristica di velocità per i Big Data. L'indicizzazione può essere utilizzata anche nella creazione di frammenti. Gli shard possono essere definiti come sottoraccolte che contengono dati che sono stati distribuiti in gruppi utilizzando una chiave shard. Quando viene emessa una query, la chiave shard viene utilizzata per determinare dove cercare tra gli shard disponibili. Se non ci fossero frammenti, il processo richiederebbe molto tempo per i Big Data poiché tutti i documenti devono essere esaminati e il processo potrebbe anche scadere prima che gli utenti ottengano ciò che desiderano. Ma con il partizionamento orizzontale, la quantità di dati da cui prelevare viene ridotta e di conseguenza riduce la latenza di attesa per la restituzione di una query.

Motore di archiviazione efficiente e gestione della memoria

Le recenti versioni di MongoDB impostano WiredTiger come motore di archiviazione predefinito che ha una capacità esecutiva per la gestione di più carichi di lavoro. Questo motore di archiviazione offre numerosi vantaggi per i Big Data, come descritto in questo articolo. Il motore ha funzionalità come compressione, checkpoint e promuove più operazioni di scrittura tramite la concorrenza dei documenti. Big Data significa molti utenti e la funzione di concorrenza a livello di documento consentirà a molti utenti di modificare il database contemporaneamente senza incorrere in alcuna battuta d'arresto delle prestazioni. MongoDB è stato sviluppato utilizzando C++, quindi è adatto per la gestione della memoria.

Coerenza e integrità dei dati

 Lo strumento di convalida JSON è un'altra funzionalità disponibile in MongoDB per garantire l'integrità e la coerenza dei dati. Viene utilizzato per garantire che i dati non validi non entrino nel database. Ad esempio, se è presente un campo chiamato età, si aspetterà sempre un valore Intero. Il validatore JSON verificherà sempre che una stringa o qualsiasi altro tipo di dati non sia inviato per l'archiviazione al database per questo campo. Questo serve anche a garantire che tutti i documenti abbiano valori per questo campo nello stesso tipo di dati, quindi la coerenza dei dati. MongoDB offre anche funzionalità di backup e ripristino in modo tale che in caso di errore si possa tornare allo stato desiderato.

Conclusione

MongoDB gestisce l'analisi dei dati in tempo reale nel modo più efficiente, quindi adatto ai Big Data. Ad esempio, l'indicizzazione geospaziale consente un'analisi dei dati GPS in tempo reale.

Oltre alla configurazione di sicurezza di base, MongoDB ha uno strumento di convalida dei dati JSON aggiuntivo per garantire che solo i dati validi entrino nel database. Poiché il database è basato su documenti e i campi sono stati incorporati, è possibile inviare pochissime query al database per recuperare molti dati. Questo lo rende ideale per l'utilizzo quando si tratta di Big Data.