Aangezien MongoDB de favoriete database is van veel ontwikkelaars, is het geen verrassing dat de community-ondersteuning uitstekend is. Je kunt snel antwoorden vinden op de meeste van je problemen op kennissites zoals Stack Overflow, maar de community maakt ook veel tools, scripts en frameworks rond MongoDB.
ClusterControl maakt deel uit van de communitytools waarmee u elke MongoDB-topologie kunt implementeren, bewaken, beheren en schalen. ClusterControl is ontworpen rond de levenscyclus van de database, maar kan natuurlijk niet alle aspecten van een ontwikkelingscyclus dekken. In deze blogpost wordt een selectie van communitytools besproken die kunnen worden gebruikt als aanvulling op ClusterControl bij het beheren van een ontwikkelingscyclus.
Schemabeheer
De pijn van schemawijzigingen in conventioneel RDBMS was een van de drijfveren achter de creatie van MongoDB:we hadden allemaal last van pijnlijk trage of mislukte schemamigraties. Daarom is MongoDB ontwikkeld met een schemaloos documentontwerp. Hierdoor kunt u uw schema wijzigen wanneer u maar wilt, zonder dat de database u tegenhoudt.
Schemawijzigingen worden over het algemeen gemaakt wanneer er applicatie-ontwikkeling is. Als u nieuwe functies aan bestaande modules toevoegt of nieuwe modules maakt, moet u mogelijk een andere versie van uw schema maken. Ook schema- en prestatie-optimalisaties kunnen nieuwe versies van uw schema's creëren.
Hoewel veel mensen zullen zeggen dat het geweldig is om niet te worden tegengehouden door de database, brengt het ook een aantal problemen met zich mee:aangezien oude gegevens niet worden gemigreerd naar het nieuwe schemaontwerp, zou uw toepassing in staat moeten zijn om elke schemaversie aan te kunnen die u in uw database hebben. Als alternatief kunt u alle (oude) gegevens bijwerken met het nieuwere schema direct nadat u de applicatie hebt geïmplementeerd.
De tools die in deze sectie worden besproken, zullen allemaal erg nuttig zijn bij het oplossen van deze schemaproblemen.
Meteor2-verzameling
De Meteor2-verzamelingsmodule zorgt ervoor dat het schema zowel aan de client- als aan de serverzijde wordt gevalideerd. Dit zorgt ervoor dat alle gegevens worden geschreven volgens het gedefinieerde schema. De module is alleen reactief, dus wanneer gegevens niet volgens het schema worden geschreven, wordt een waarschuwing geretourneerd.
Mangoest
Mongoose is Node.js middleware voor schemamodellering en validatie. De schemadefinitie wordt in uw Node.js-toepassing geplaatst en hierdoor kan Mongoose fungeren als een ORM. Mongoose migreert geen bestaande gegevens naar de nieuwe schemadefinitie.
MongoDB-schema
Tot nu toe hebben we alleen gesproken over schemawijzigingen, dus het is tijd om MongoDB Schema te introduceren. MongoDB Schema is een schema-analysator die een (willekeurige) steekproef van uw gegevens neemt en het schema voor de gesamplede gegevens uitvoert. Dit betekent echter niet noodzakelijkerwijs dat het 100% nauwkeurig zal zijn voor de schatting van het schema.
Met deze tool kunt u regelmatig uw gegevens vergelijken met uw schema en belangrijke of onbedoelde wijzigingen in uw schema detecteren.
Multiplenines Word een MongoDB DBA - MongoDB naar productie brengenLeer over wat u moet weten om MongoDB gratis te implementeren, bewaken, beheren en schalenBack-ups
ClusterControl ondersteunt twee implementaties voor het maken van back-ups van MongoDB:mongodump en Percona Consistent Backup. Toch zullen sommige minder regelmatig gebruikte functionaliteiten, zoals gedeeltelijke/incrementele back-ups en streaming back-ups naar andere clusters, niet standaard beschikbaar zijn.
MongoDB-back-up
MongoDB Backup is een logische back-upoplossing van NodeJS die vergelijkbare functionaliteit biedt als mongodump. Daarnaast kan het ook back-ups via het netwerk streamen, waardoor het handig is voor het transporteren van een verzameling van de ene MongoDB-instantie naar de andere.
Een andere handige functie is dat het is geschreven in NodeJS. Dit betekent dat het heel eenvoudig zal zijn om te integreren in een Hubot-chatbot en de incasso-overdrachten te automatiseren. Wees niet bang als uw bedrijf Hubot niet als chatbot gebruikt:het kan ook functioneren als een webhook of worden bestuurd via de CLI.
Mongool
Mongob is een andere logische back-upoplossing, maar in dit geval is het geschreven in Python en is het alleen beschikbaar als CLI-tool. Net als MongoDB Backup kan het databases en collecties tussen MongoDB-instanties overdragen, maar daarnaast kan het ook de overdrachtssnelheid beperken.
Een andere handige functie van Mongob is dat het incrementele back-ups kan maken. Dit is handig als u compactere back-ups wilt hebben, maar ook als u een herstel op een bepaald moment moet uitvoeren.
MongoRocks-strata
MongoRocks Strata is de back-uptool voor de MongoRocks-opslagengine. Percona Server voor MongoDB bevat de MongoRocks-opslagengine, maar het ontbreekt de Strata-back-uptool voor het maken van back-ups op bestandsniveau. In principe kunnen mongodump en Percona Consistent Backup betrouwbare back-ups maken, maar omdat het logische dumps zijn, zal de hersteltijd lang zijn.
MongoRocks is een opslagengine die vertrouwt op een LSM-boomarchitectuur. Dit betekent in feite dat het alleen een append-opslag is. Om dit te kunnen doen, werkt het met data-buckets:oudere data wordt opgeslagen in grotere (archief)-buckets, recente data wordt opgeslagen in kleinere (recente) buckets en alle nieuwe binnenkomende data wordt weggeschreven naar een speciale geheugen-bucket. . Elke keer dat een verdichting wordt uitgevoerd, druppelen gegevens van de geheugenbucket naar de recente buckets en recentelijk gewijzigde gegevens terug naar de archiefbucket.
Om een back-up van alle buckets te maken, geeft Strata MongoDB de opdracht om de geheugenbucket naar schijf te spoelen en vervolgens kopieert het alle buckets met gegevens op bestandsniveau. Dit zorgt voor een consistente back-up van alle beschikbare gegevens. Het zal ook mogelijk zijn om Strata te instrueren om alleen de recente buckets te kopiëren en effectief een incrementele back-up te maken.
Een ander goed punt van Strata is dat het het binaire bestand mongoq biedt, waarmee je de back-ups rechtstreeks kunt opvragen. Dit betekent dat het niet nodig is om de back-up te herstellen naar een MongoDB-instantie voordat u deze kunt opvragen. U zou deze functionaliteit kunnen gebruiken om uw productiegegevens offline naar uw analysesysteem te verzenden!
MongoDB GUI's
Binnen ClusterControl kunnen we via adviseurs de MongoDB-databases en -collecties opvragen. Deze adviseurs kunnen worden ontwikkeld in de interface van ClusterControl Developer Studio. We hebben geen directe interface met de databases, dus om wijzigingen in uw gegevens aan te brengen, moet u ofwel inloggen op de MongoDB-shell of een tool hebben waarmee u deze wijzigingen kunt aanbrengen.
PHPMoAdmin
PHPMoAdmin is het MongoDB-equivalent van PHPMyAdmin. Het beschikt over vergelijkbare functionaliteit als PHPMyAdmin:gegevens- en beheerdersbeheer. Met de tool kunt u CRUD-bewerkingen uitvoeren in zowel JSON- als PHP-syntaxis op alle databases en collecties. Daarnaast beschikt het ook over een import/export-functionaliteit van uw huidige gegevensselectie.
Mongo-Express
Als u op zoek bent naar een veelzijdige gegevensbrowser, is Mongo-Express een tool die u zeker moet uitproberen. Het staat niet alleen vergelijkbare bewerkingen toe als PHPMoAdmin, het is ook in staat om afbeeldingen en video's inline weer te geven. Het ondersteunt zelfs het ophalen van grote objecten uit GridFS-buckets.
Robomongo
De tool die nog een stap verder gaat is Robomongo. Omdat het een door crowdfunding gefinancierde tool is, is de lijst met functies enorm. Het kan dezelfde bewerkingen uitvoeren als Mongo-Express, maar maakt daarnaast ook gebruikers-, rol- en collectiebeheer mogelijk. Voor verbindingen ondersteunt het directe MongoDB-verbindingen, maar ondersteunt het ook replicaSet-topologieën en MongoDB Atlas-instanties.
Conclusie
Met deze selectie van gratis communitytools hopen we u een goed overzicht te hebben gegeven van het beheren van MongoDB-gegevens naast ClusterControl.
Veel plezier met clusteren!