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

I database NoSQL più popolari supportati da ClusterControl

NoSQL ("non solo SQL") è un approccio alla progettazione di database che consente l'archiviazione e l'interrogazione di dati al di fuori delle strutture tradizionali presenti nei database relazionali. È stato creato per gestire principalmente dati non strutturati generati da numerose fonti come documenti, audio, video, social network, ecc. I database NoSQL sono i migliori per le applicazioni moderne in cui i modelli di dati si evolvono e la scalabilità è essenziale. Questo database ha guadagnato popolarità negli ultimi anni poiché le aziende ora devono gestire dati non strutturati più che mai. Questo modello memorizza i dati in modo diverso dalle tradizionali tabelle relazionali per consentire il mantenimento dei dati correlati all'interno di un'unica struttura dati. Un database NoSQL può essere suddiviso in quattro categorie:

  • Archivio documenti

  • Database di valori-chiave

  • Negozi a colonne larghe

  • Database di grafici

I database NoSQL vengono spesso utilizzati nei progetti agili perché offrono modelli di dati flessibili. Ciò consente agli sviluppatori di concentrarsi sulla logica aziendale e sugli algoritmi invece di occuparsi degli aggiornamenti dello schema. Se prevedi che il modello di dati della tua applicazione debba rimanere flessibile per adattarsi alle modifiche nel tempo, l'approccio dello schema flessibile dei database NoSQL potrebbe essere adatto alle tue esigenze.

Secondo db-engines, i primi due database NoSQL (luglio 2021) sono MongoDB (classifica:5) e Redis (classifica:6). È interessante notare che questi database NoSQL non esistevano 12 anni fa. Il modo in cui sono nati e hanno guadagnato attrazione, popolarità e hanno cambiato il panorama del sistema di gestione del database è l'essenza principale di questo post del blog.

MongoDB

MongoDB è un database orientato ai documenti open source, con il rilascio iniziale nel febbraio 2009. I database dei documenti sono in forte contrasto con il database relazionale tradizionale. Memorizzano tutte le informazioni per un determinato oggetto in una singola istanza nel database e ogni oggetto archiviato può essere diverso dall'altro. Ciò elimina la necessità di mappatura relazionale a oggetti e consente una struttura senza schema, una funzionalità in cui gli sviluppatori di applicazioni hanno l'agilità di evolversi rapidamente grazie al suo modello di dati flessibile. Invece di adattare un'applicazione per soddisfare i requisiti dello schema, gli sviluppatori scrivono l'applicazione e lo schema segue.

MongoDB è molto popolare grazie alla sua flessibilità, facilità di apprendimento e basso costo di proprietà per iniziare. Gli sviluppatori di applicazioni adorano MongoDB perché possono modificare il modello di dati in movimento e perché MongoDB utilizza i documenti JSON per registrare i dati. JSON è ovunque e può essere considerato il formato di fatto per l'invio di dati avanzati tra applicazioni Web ed endpoint. Il design semplice e la flessibilità lo rendono facile da leggere e capire e, nella maggior parte dei casi, facile da manipolare nel linguaggio di programmazione di tua scelta.

MongoDB è nato grazie a 10gen (prima di essere rinominato in MongoDB Inc), ha iniziato a svilupparlo nel 2007 ed è uscito con la sua prima versione GA nel febbraio 2009. Da allora, MongoDB si è evoluto rapidamente e è considerato uno dei progetti di database più interessanti per le applicazioni moderne. Secondo StackOverflow Developer Survey 2020, MongoDB rimane la tecnologia di database che gli sviluppatori vogliono imparare di più. Al momento della stesura di questo articolo, hanno appena rilasciato la versione 5.0 (13 luglio 2021) e include molte funzionalità degne di nota come il resharding in tempo reale, il supporto dei dati di serie temporali native e l'API con versione, adatta per ambienti multi-cloud.

Un'altra caratteristica significativa di MongoDB sono le funzionalità integrate di alta disponibilità come la replica, il set di repliche e lo sharding. È scalabile orizzontalmente, il che aiuta a ridurre il carico di lavoro e a scalare facilmente il tuo business. Offre la replica tramite un protocollo di consenso interno che trae ispirazione da Raft e può distribuire i dati tra frammenti tramite il suo router di query chiamato mongos. Puoi utilizzare ClusterControl per distribuire facilmente un set di repliche MongoDB e la configurazione di un cluster partizionato.

MongoDB ha attirato l'attenzione del pubblico e la critica a causa della sua debolezza nella configurazione di sicurezza predefinita di MongoDB, consentendo a chiunque di avere pieno accesso al database. I dati di decine di migliaia di installazioni di MongoDB sono stati rubati. Inoltre, molti server MongoDB sono stati trattenuti per un riscatto. Questa esposizione ci ha portato a scrivere una manciata di post di blog relativi alla sicurezza relativi a MongoDB come Secure MongoDB e Protect Yourself From the Ransom Hack e How to Secure MongoDB From Ransomware - Dieci suggerimenti. Di conseguenza, MongoDB ha migliorato gli aspetti della configurazione predefinita per essere più sicuri con MongoDB 3 e versioni successive.

Alcune grandi aziende fanno molto affidamento su MongoDB come datastore, come Forbes, Toyota, SAP, Cisco, eBay e Adobe. MongoDB è considerato un punto di svolta nel mondo dei database, diventando una delle piattaforme di database più importanti nell'era di Internet.

ClusterControl supporta MongoDB dalla versione luglio 2013 (v1.2.3) e da allora è in continuo miglioramento. ClusterControl supportava anche TokuMX (MongoDB con l'albero frattale di Tokutek), prima che fosse deprecato in MongoDB 3 a causa delle modifiche alla progettazione di base dell'upstream. Nei recenti notevoli miglioramenti, ClusterControl introduce il supporto per Percona Backup for MongoDB, una soluzione distribuita a basso impatto per ottenere backup coerenti di cluster sharded MongoDB e set di repliche. Il progetto Percona Backup for MongoDB viene ereditato e sostituisce mongodb_consistent_backup, che non è più attivamente sviluppato o supportato.

Redis

Redis è un'altra tecnologia di database NoSQL più popolare che si concentra sull'accesso frequente ad alta velocità agli stessi blocchi di dati, anche se quei blocchi di dati sono di grandi dimensioni. A maggio 2019, Salvatore Sanfilllippo ha rilasciato la versione iniziale di Redis, alias Remote Dictionary Server, e ha attirato l'attenzione di tutti per le sue funzionalità più ricche rispetto alla soluzione di database in memoria open source già affermata all'epoca chiamata Memcached.

Redis è super veloce grazie alla struttura dei dati in memoria e al fatto che è stato scritto nel linguaggio C (questo è uno dei motivi per cui Memcached è stato riscritto in C). A causa delle sue elevate prestazioni, gli sviluppatori si sono rivolti a Redis per la memorizzazione nella cache dei dati quando il volume delle operazioni di lettura e scrittura supera le capacità dei database tradizionali. I dati a cui si accede di frequente possono essere memorizzati nella cache e serviti da datastore chiave-valore in memoria e riducendo al minimo le letture e le scritture su sistemi basati su disco più lenti concentrandosi sull'archiviazione persistente.

Tradizionalmente, i sistemi di gestione dei database sono progettati per fornire solide funzionalità di dati piuttosto che velocità su larga scala. La cache dell'applicazione viene spesso utilizzata per archiviare copie di tabelle di ricerca e le risposte a query costose dal DBMS, sia per migliorare le prestazioni dell'applicazione che per ridurre il carico dell'origine dati. A volte il flusso di lavoro di un'applicazione richiede la generazione di risultati ad alta intensità di risorse. Una volta ottenuti questi risultati, ci sono casi in cui i risultati potrebbero essere successivamente riutilizzati, ad esempio quando si eseguono aggregati parziali. La cache funge da mezzo intermedio ideale per conservare tali risultati tra le richieste. È qui che Redis brilla.

Redis si è evoluto da un semplice archivio chiave-valore molto veloce a un archivio dati persistente ed è stato utilizzato come broker di messaggistica e sistema di accodamento. Consente una vera apolidia per i processi delle applicazioni riducendo la duplicazione dei dati o le richieste a origini dati esterne. Secondo StackOverflow Developer Survey 2020, Redis rimane al vertice della tecnologia di database che gli sviluppatori hanno espresso interesse a continuare a sviluppare. Al momento della stesura di questo articolo, Redis 6 è l'ultima versione, con una nuova e più sofisticata implementazione ACL basata sull'utente, crittografia SSL del traffico integrata e I/O multi-thread, sebbene il processo Redis sia ancora a thread singolo .

La distribuzione di Redis è supportata in ClusterControl 1.9.0 utilizzando il nostro nuovo pacchetto GUI ClusterControl di nuova generazione disponibile in un'installazione separata. Al momento in cui scriviamo, lo chiamiamo ClusterControl v2 taggato con Technology Preview che supporta solo l'implementazione di una replica Redis fino a 5 nodi con Redis Sentinel con gestione del backup di AOF e RDB. Se sei interessato, fai riferimento a questa guida su come installarlo.

Riepilogo

MongoDB e Redis sono senza dubbio due delle migliori soluzioni di database NoSQL sul mercato in questo momento e si ritiene che manterranno la loro posizione nella classifica dei primi 10 database per un periodo piuttosto lungo. Questo è il motivo per cui ClusterControl supporta entrambe le tecnologie di database.