Eftersom MongoDB är den favoritdatabasen för många utvecklare, kommer det inte som någon överraskning att communitystödet är utmärkt. Du kan snabbt hitta svar på de flesta av dina problem på kunskapssajter som Stack Overflow, men communityn skapar också många verktyg, skript och ramverk runt MongoDB.
ClusterControl är en del av community-verktygen som låter dig distribuera, övervaka, hantera och skala vilken MongoDB-topologi som helst. ClusterControl är designat kring databasens livscykel, men det kan naturligtvis inte täcka alla aspekter av en utvecklingscykel. Det här blogginlägget kommer att täcka ett urval av community-verktyg som kan användas för att komplettera ClusterControl i hanteringen av en utvecklingscykel.
Schemahantering
Smärtan av schemaändringar i konventionella RDBMS var en av drivkrafterna bakom skapandet av MongoDB:vi led alla av smärtsamt långsamma eller misslyckade schemamigreringar. Därför har MongoDB utvecklats med en schemalös dokumentdesign. Detta gör att du kan ändra ditt schema när du vill, utan att databasen hindrar dig.
Schemaändringar görs i allmänhet när det pågår applikationsutveckling. Att lägga till nya funktioner i befintliga moduler eller skapa nya moduler kan innebära att du skapar en annan version av ditt schema. Även schema- och prestandaoptimeringar kan skapa nya versioner av dina scheman.
Även om många kommer att säga att det är briljant att inte hållas tillbaka av databasen, medför det också ett par problem:eftersom gamla data inte migreras till den nya schemadesignen, bör din applikation kunna hantera varje schemaversion du har i din databas. Alternativt kan du uppdatera alla (gamla) data med det nyare schemat direkt efter att du har distribuerat programmet.
Verktygen som diskuteras i det här avsnittet kommer alla att vara till stor hjälp för att lösa dessa schemaproblem.
Meteor2-samling
Insamlingsmodulen Meteor2 kommer att säkerställa att schemat valideras från både klient- och serversidan. Detta kommer att säkerställa att all data skrivs enligt det definierade schemat. Modulen kommer bara att vara reaktiv, så närhelst data inte skrivs enligt schemat kommer en varning att returneras.
Mangust
Mongoose är Node.js mellanprogram för schemamodellering och validering. Schemadefinitionen placeras i din Node.js-applikation, och detta gör att Mongoose kan agera som en ORM. Mongoose kommer inte att migrera befintliga data till den nya schemadefinitionen.
MongoDB Schema
Hittills har vi bara pratat om schemaändringar, så det är dags att introducera MongoDB Schema. MongoDB Schema är en schemaanalysator som tar ett (slumpmässigt) urval av dina data och matar ut schemat för de samplade data. Detta betyder dock inte nödvändigtvis att det kommer att vara 100 % korrekt i sin schemauppskattning.
Med det här verktyget kan du regelbundet kontrollera dina data mot ditt schema och upptäcka viktiga eller oavsiktliga ändringar i ditt schema.
Severalnines Become a MongoDB DBA - Bringing MongoDB to ProductionLäs om vad du behöver veta för att distribuera, övervaka, hantera och skala MongoDBDownload gratisSäkerhetskopiering
ClusterControl stöder två implementeringar för säkerhetskopiering av MongoDB:mongodump och Percona Consistent Backup. Ändå kommer vissa mindre vanligt använda funktioner, som partiella/inkrementella säkerhetskopior och strömmande säkerhetskopior till andra kluster, inte att vara tillgängliga direkt.
MongoDB Backup
MongoDB Backup är en NodeJS logisk säkerhetskopieringslösning som erbjuder liknande funktionalitet som mongodump. Utöver detta kan den också strömma säkerhetskopior över nätverket, vilket gör det användbart för att transportera en samling från en MongoDB-instans till en annan.
En annan användbar funktion är att den har skrivits i NodeJS. Detta innebär att det kommer att vara mycket enkelt att integrera i en Hubot-chatbot och automatisera samlingsöverföringarna. Var inte rädd om ditt företag inte använder Hubot som en chatbot:den kan också fungera som antingen en webhook eller styras via CLI.
Mongob
Mongob är en annan logisk säkerhetskopieringslösning, men i det här fallet har den skrivits i Python och är endast tillgänglig som ett CLI-verktyg. Precis som MongoDB Backup kan den överföra databaser och samlingar mellan MongoDB-instanser, men utöver det kan den också begränsa överföringshastigheten.
En annan användbar funktion hos Mongob är att den kommer att kunna skapa inkrementella säkerhetskopior. Detta är bra om du vill ha mer kompakta säkerhetskopior, men också om du behöver utföra en återställning vid en tidpunkt.
MongoRocks Strata
MongoRocks Strata är säkerhetskopieringsverktyget för MongoRocks lagringsmotor. Percona Server för MongoDB inkluderar MongoRocks lagringsmotor, men den saknar Strata-säkerhetskopieringsverktyget för att göra säkerhetskopior på filnivå. I princip kan mongodump och Percona Consistent Backup göra pålitliga säkerhetskopior, men eftersom de är logiska dumpar kommer återställningstiden att bli lång.
MongoRocks är en lagringsmotor som förlitar sig på en LSM-trädarkitektur. Detta betyder i princip att det endast är en tilläggslagring. För att kunna göra detta arbetar den med datahinkar:äldre data kommer att lagras i större (arkiv-) hinkar, senaste data kommer att lagras i mindre (senaste) hinkar och all ny inkommande data kommer att skrivas in i en speciell minneshink . Varje gång en komprimering görs kommer data att sippra ner från minnesbucket till de senaste buckets och nyligen ändrade data tillbaka till arkivhinken.
För att göra en säkerhetskopia av alla buckets, instruerar Strata MongoDB att spola minnesbucket till disk, och sedan kopierar den alla hinkar med data på filnivå. Detta kommer att skapa en konsekvent säkerhetskopia av all tillgänglig data. Det kommer också att vara möjligt att instruera Strata att bara kopiera de senaste buckets och effektivt ta en inkrementell säkerhetskopia.
En annan bra poäng med Strata är att den tillhandahåller mongoq-binären, som låter dig fråga säkerhetskopiorna direkt. Det betyder att det inte finns något behov av att återställa säkerhetskopian till en MongoDB-instans innan du kan fråga den. Du skulle kunna utnyttja denna funktion för att skicka din produktionsdata offline till ditt analyssystem!
MongoDB GUI
Inom ClusterControl tillåter vi sökning av MongoDB-databaser och samlingar via rådgivare. Dessa rådgivare kan utvecklas i ClusterControl Developer Studio-gränssnittet. Vi har inte ett direkt gränssnitt med databaserna, så för att göra ändringar i dina data måste du antingen logga in på MongoDB-skalet eller ha ett verktyg som låter dig göra dessa ändringar.
PHPMoAdmin
PHPMoAdmin är MongoDB-motsvarigheten till PHPMyAdmin. Den har liknande funktionalitet som PHPMyAdmin:data- och adminhantering. Verktyget låter dig utföra CRUD-operationer i både JSON- och PHP-syntax på alla databaser och samlingar. Förutom allt det har den också en import/exportfunktion för ditt aktuella dataval.
Mongo-Express
Om du letar efter en mångsidig datawebbläsare är Mongo-Express ett verktyg du definitivt behöver kolla in. Det tillåter inte bara liknande operationer som PHPMoAdmin, det kan också visa bilder och videor inline. Det stöder till och med att hämta stora föremål från GridFS-hinkar.
Robomongo
Verktyget som går ett steg längre är Robomongo. Eftersom det är ett publikfinansierat verktyg är funktionslistan enorm. Den kan utföra samma operationer som Mongo-Express, men utöver detta tillåter den också användar-, roll- och samlingshantering. För anslutningar stöder den direkta MongoDB-anslutningar, men stöder även replicaSet-topologier och MongoDB Atlas-instanser.
Slutsats
Med det här urvalet av gratis communityverktyg hoppas vi att vi har gett dig en bra översikt över hur du hanterar MongoDB-data bredvid ClusterControl.
Lycka till med klustringen!