Poiché MongoDB è il database preferito da molti sviluppatori, non sorprende che il supporto della community sia eccellente. Puoi trovare rapidamente le risposte alla maggior parte dei tuoi problemi su siti di conoscenza come Stack Overflow, ma la community crea anche molti strumenti, script e framework attorno a MongoDB.
ClusterControl fa parte degli strumenti della community che consentono di distribuire, monitorare, gestire e ridimensionare qualsiasi topologia MongoDB. ClusterControl è progettato attorno al ciclo di vita del database, ma naturalmente non può coprire tutti gli aspetti di un ciclo di sviluppo. Questo post del blog tratterà una selezione di strumenti della community che possono essere utilizzati per integrare ClusterControl nella gestione di un ciclo di sviluppo.
Gestione dello schema
Il dolore delle modifiche allo schema nell'RDBMS convenzionale è stato uno dei fattori alla base della creazione di MongoDB:abbiamo tutti sofferto di migrazioni dello schema dolorosamente lente o fallite. Pertanto MongoDB è stato sviluppato con un design del documento senza schema. Ciò ti consente di modificare il tuo schema quando vuoi, senza che il database ti trattenga.
Le modifiche allo schema vengono generalmente apportate ogni volta che c'è lo sviluppo di applicazioni. L'aggiunta di nuove funzionalità ai moduli esistenti o la creazione di nuovi moduli può comportare la creazione di un'altra versione dello schema. Inoltre, l'ottimizzazione dello schema e delle prestazioni può creare nuove versioni dei tuoi schemi.
Anche se molte persone diranno che è fantastico non essere trattenuto dal database, comporta anche un paio di problemi:poiché i vecchi dati non vengono migrati alla nuova progettazione dello schema, la tua applicazione dovrebbe essere in grado di far fronte a tutte le versioni dello schema che avere nel tuo database. In alternativa, puoi aggiornare tutti i (vecchi) dati con lo schema più recente subito dopo aver distribuito l'applicazione.
Gli strumenti discussi in questa sezione saranno tutti molto utili per risolvere questi problemi di schema.
Raccolta di Meteor2
Il modulo di raccolta di Meteor2 garantirà la convalida dello schema sia dal lato client che da quello server. Ciò garantirà che tutti i dati vengano scritti secondo lo schema definito. Il modulo sarà solo reattivo, quindi ogni volta che i dati non vengono scritti secondo lo schema, verrà restituito un avviso.
Mangusta
Mongoose è il middleware Node.js per la modellazione e la convalida degli schemi. La definizione dello schema viene inserita all'interno dell'applicazione Node.js e ciò consentirà a Mongoose di agire come ORM. Mongoose non eseguirà la migrazione dei dati esistenti nella nuova definizione dello schema.
Schema MongoDB
Finora abbiamo parlato solo di modifiche allo schema, quindi è tempo di introdurre MongoDB Schema. MongoDB Schema è un analizzatore di schemi che prenderà un campione (casuale) dei tuoi dati e produrrà lo schema per i dati campionati. Ciò non significa necessariamente che sarà accurato al 100% sulla stima dello schema.
Con questo strumento puoi controllare regolarmente i tuoi dati rispetto al tuo schema e rilevare modifiche importanti o non intenzionali nel tuo schema.
Diversinines Diventa un DBA MongoDB - Portare MongoDB in produzioneScopri ciò che devi sapere per distribuire, monitorare, gestire e ridimensionare MongoDBScarica gratuitamenteBackup
ClusterControl supporta due implementazioni per il backup di MongoDB:mongodump e Percona Consistent Backup. Tuttavia, alcune funzionalità utilizzate meno regolarmente, come backup parziali/incrementali e backup in streaming su altri cluster, non saranno disponibili immediatamente.
Backup MongoDB
MongoDB Backup è una soluzione di backup logico NodeJS che offre funzionalità simili a mongodump. Oltre a questo, può anche eseguire lo streaming di backup sulla rete, rendendolo utile per il trasporto di una raccolta da un'istanza MongoDB a un'altra.
Un'altra caratteristica utile è che è stata scritta in NodeJS. Ciò significa che sarà molto facile integrarsi in un chatbot Hubot e automatizzare i trasferimenti di raccolta. Non temere se la tua azienda non utilizza Hubot come chatbot:può anche funzionare come webhook o essere controllato tramite la CLI.
Mongobo
Mongob è un'altra soluzione logica di backup, ma in questo caso è stata scritta in Python ed è disponibile solo come strumento CLI. Proprio come MongoDB Backup, è in grado di trasferire database e raccolte tra istanze MongoDB, ma in aggiunta a ciò, può anche limitare la velocità di trasferimento.
Un'altra caratteristica utile di Mongob è che sarà in grado di creare backup incrementali. Questo è utile se desideri avere backup più compatti, ma anche se devi eseguire un ripristino temporizzato.
Strate MongoRocks
MongoRocks Strata è lo strumento di backup per il motore di archiviazione MongoRocks. Percona Server per MongoDB include il motore di archiviazione MongoRocks, tuttavia non dispone dello strumento di backup Strata per eseguire backup a livello di file. In linea di principio mongodump e Percona Consistent Backup sono in grado di eseguire backup affidabili, ma poiché sono dump logici il tempo di ripristino sarà lungo.
MongoRocks è un motore di archiviazione che si basa su un'architettura ad albero LSM. Ciò significa fondamentalmente che è un archivio di sola aggiunta. Per essere in grado di farlo, opera con bucket di dati:i dati più vecchi verranno archiviati in bucket (di archivio) più grandi, i dati recenti verranno archiviati in bucket più piccoli (recenti) e tutti i nuovi dati in entrata verranno scritti in uno speciale bucket di memoria . Ogni volta che viene eseguita una compattazione, i dati scendono dal bucket di memoria ai bucket recenti e i dati modificati di recente tornano al bucket di archivio.
Per eseguire un backup di tutti i bucket, Strata indica a MongoDB di svuotare il bucket di memoria su disco, quindi copia tutti i bucket di dati a livello di file. Ciò creerà un backup coerente di tutti i dati disponibili. Sarà anche possibile indicare a Strata di copiare solo i bucket recenti e di eseguire effettivamente un backup incrementale.
Un altro punto positivo di Strata è che fornisce il binario mongoq, che consente di interrogare direttamente i backup. Ciò significa che non è necessario ripristinare il backup su un'istanza MongoDB prima di poterla interrogare. Saresti in grado di sfruttare questa funzionalità per inviare i tuoi dati di produzione offline al tuo sistema di analisi!
GUI MongoDB
All'interno di ClusterControl consentiamo di interrogare i database e le raccolte MongoDB tramite gli advisor. Questi advisor possono essere sviluppati nell'interfaccia di ClusterControl Developer Studio. Non disponiamo di un'interfaccia diretta con i database, quindi per apportare modifiche ai tuoi dati dovrai accedere alla shell MongoDB o disporre di uno strumento che ti consenta di apportare queste modifiche.
PHPMoAdmin
PHPMoAdmin è l'equivalente MongoDB di PHPMyAdmin. Presenta funzionalità simili a PHPMyAdmin:gestione dati e amministrazione. Lo strumento ti consentirà di eseguire operazioni CRUD sia nella sintassi JSON che PHP su tutti i database e le raccolte. Oltre a tutto ciò, offre anche una funzionalità di importazione/esportazione della tua attuale selezione di dati.
Mongo Express
Se cerchi un browser di dati versatile, Mongo-Express è uno strumento che devi assolutamente provare. Non solo consente operazioni simili a PHPMoAdmin, ma è anche in grado di visualizzare immagini e video in linea. Supporta anche il recupero di oggetti di grandi dimensioni dai bucket GridFS.
Robomongo
Lo strumento che fa un ulteriore passo avanti è Robomongo. Essendo uno strumento finanziato dal crowdfunding, l'elenco delle funzionalità è enorme. È in grado di eseguire tutte le stesse operazioni di Mongo-Express, ma oltre a ciò consente anche la gestione di utenti, ruoli e collezioni. Per le connessioni supporta le connessioni MongoDB dirette, ma supporta anche le topologie replicaSet e le istanze MongoDB Atlas.
Conclusione
Con questa selezione di strumenti gratuiti della community, speriamo di averti fornito una buona panoramica su come gestire i dati MongoDB accanto a ClusterControl.
Buon raggruppamento!