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

Opret en databaseklynge i skyen med MongoDB Atlas

MongoDB har i årevis været den foretrukne NoSQL-database for både enkeltpersoner og virksomheder, der bygger store applikationer. Det er open source, let skalerbart og giver høj tilgængelighed. Det understøtter også meget komplekse forespørgsler og finkornet samtidighedskontrol.

Nødvendige opgaver såsom at installere databasen, tune den til at opretholde optimal ydeevne over lange perioder og sikre den har dog en tendens til at kræve en masse dygtig og dedikeret indsats.

Heldigvis er der et lettere alternativ: MongoDB Atlas, en fuldt administreret cloudversion af databasen.

Med MongoDB Atlas kan du oprette en MongoDB-klynge på enhver større cloud-udbyder efter eget valg og begynde at bruge denne klynge i løbet af få minutter. Ved at bruge Atlas' browserbaserede brugergrænseflade kan du også intuitivt konfigurere klyngen og overvåge dens ydeevne.

I dette selvstudie viser jeg dig, hvordan du opretter en MongoDB Atlas gratis tier-klynge og bruger den i en Python-applikation.

Forudsætninger

Før du fortsætter, skal du sørge for, at du har følgende installeret og konfigureret på din computer:

  • Python 3.4 eller nyere
  • pip 18.0 eller højere

1. Oprettelse af en klynge

For at kunne bruge MongoDBs cloud-tjenester skal du have en MongoDB Atlas-konto. For at oprette en, skal du gå til dens startside og trykke på Kom gratis i gang knap.

Når du har udfyldt den korte tilmeldingsformular, bliver du omdirigeret til guiden til oprettelse af klynge. I dets første afsnit skal du vælge den cloud-udbyder og den region, du foretrækker.

For at minimere netværksforsinkelsen ville du ideelt set vælge en region, der er tættest på din computer. For nu, men fordi vi opretter en gratis tier-klynge, skal du sørge for, at den region, du vælger, er en, der har en gratis tier tilgængelig. Derudover, hvis du bruger en Google Cloud VM eller en Amazon EC2-instans som dit udviklingsmiljø, skal du først vælge den tilsvarende cloud-udbyder.

I Klyngeniveauet skal du vælge M0 mulighed for at oprette din gratis tier-klynge. Den tilbyder 512 MB lagerplads, en nyere version af MongoDB med WiredTiger som lagermotor, et replikasæt med tre noder og en generøs 10 GB båndbredde om ugen.

Giv til sidst et meningsfuldt navn til klyngen og tryk på Opret klynge knap.

MongoDB Atlas vil nu tage omkring fem minutter at konfigurere din klynge.

2. Konfiguration af klyngen

Før du begynder at bruge klyngen, skal du angive nogle få sikkerhedsrelaterede detaljer, så skift til Sikkerhed fanen.

Først i MongoDB-brugere sektionen, skal du oprette en ny bruger til dig selv ved at trykke på Tilføj ny bruger knap. Indtast dit ønskede brugernavn og din adgangskode i dialogboksen, der dukker op, vælg Læs og skriv til enhver database privilegium, og tryk på Tilføj bruger knap.

Dernæst i IP-hvidliste sektion, skal du angive en liste over IP-adresser, hvorfra du vil få adgang til klyngen. Indtil videre er det tilstrækkeligt at angive den aktuelle IP-adresse på din computer.

Tryk på Tilføj IP-adresse knappen for at oprette en ny IP-adresseindtastning. Tryk på Tilføj aktuel IP-adresse i dialogboksen, der dukker op knappen for at autofylde hvidlisteposten Mark. Derudover, hvis du ikke har en statisk IP-adresse, er det en god idé at markere det som en midlertidig post ved at markere Gem som midlertidig hvidliste mulighed. Tryk til sidst på Bekræft for at tilføje posten.

3. Hentning af forbindelsesstrengen

Du skal bruge en gyldig forbindelsesstreng for at oprette forbindelse til din klynge fra din applikation. For at få det, gå til Oversigt fanen og tryk på Forbind knap.

I den dialog, der åbnes, skal du vælge Forbind din applikation og tryk på Jeg bruger driver 3.6 eller nyere knap. Du skulle nu kunne se din forbindelsesstreng. Den vil ikke have din egentlige adgangskode, så du bliver nødt til at indtaste den manuelt. Når du har gjort det, skal du notere strengen, så du kan bruge den senere.

4. Installation af Python-driveren

For at kunne interagere med din MongoDB Atlas-klynge programmatisk, skal du have en MongoDB-driver installeret på din computer. For programmeringssproget Python er PyMongo den mest populære driver, der er tilgængelig i dag. Den anbefalede måde at installere det på din computer er at bruge pip modul som vist nedenfor:

python3 -m pip install pymongo --user

Du har måske bemærket, at din MongoDB Atlas-forbindelsesstreng er en mongodb+srv:// URI. For at aktivere driveren til at arbejde med DNS SRV-poster, skal du også installere dnspython modul. Sådan gør du:

python3 -m pip install dnspython --user

5. Opretter forbindelse til klyngen

Du kan nu bruge din MongoDB-klynge fra enhver Python-applikation. For at følge med mig skal du oprette et nyt Python-script og åbne det ved hjælp af en hvilken som helst kodeeditor.

Inde i scriptet, for at kunne interagere med klyngen, skal du bruge en forekomst af MongoClient klasse. Som det eneste argument til dets konstruktør, send din forbindelsesstreng.

import pymongo



my_client = pymongo.MongoClient(

    'mongodb+srv://alice:[email protected]/test?retryWrites=true'

)

Ovenstående konstruktør vender tilbage med det samme og vil ikke rejse nogen fejl. Derfor, for at kontrollere, om du har etableret en forbindelse, foreslår jeg, at du prøver at udføre en handling på klyngen. Et kald til server_info() metode, som giver dig forskellige detaljer om din MongoDB-instans, vil være tilstrækkelig.

Hvis der ikke er nogen fejl i din forbindelsesstreng, kaldes server_info() metode vil lykkes. Men hvis det brugernavn eller adgangskode, du har angivet, er forkert, vil du støde på en OperationFailure fejl. Følgende kode viser dig, hvordan du fanger det:

try:

    print("MongoDB version is %s" % 

            my_client.server_info()['version'])

except pymongo.errors.OperationFailure as error:

    print(error)

    quit(1)

Du kan nu gå videre og prøve at køre dit script.

6. Indsættelse af dokumenter

Standardforbindelsesstrengen, du får fra MongoDB Atlas' webgrænseflade, nævner en database ved navn test . Lad os fortsætte med at bruge den samme database. Sådan kan du få en reference til det:

my_database = my_client.test

En MongoDB-database er sammensat af en eller flere samlinger, som ikke er andet end grupper af BSON-dokumenter (forkortelse for binær JSON). Din gratis tier-klynge på MongoDB Atlas kan maksimalt have 500 samlinger.

For at få et realistisk eksempel, lad os oprette en ny samling med navnet foods . Med PyMongo behøver du ikke eksplicit at kalde nogen metode for at gøre det. Du kan blot henvise til det, som om det allerede eksisterer.

my_collection = my_database.foods

Det er værd at nævne, at ovenstående kode ikke skaber foods afhentning med det samme. Det oprettes først, når du har tilføjet et dokument til det. Så lad os nu oprette og tilføje et nyt dokument, der indeholder ernæringsmæssige data om en fødevare.

Brug af insert_one() metode er den enkleste måde at tilføje et dokument til en samling. For at angive indholdet af dokumentet sender du en Python-ordbog til metoden. Følgende eksempelkode viser dig, hvordan:

my_collection.insert_one({

    "_id": 1,

    "name": "pizza",

    "calories": 266,

    "fats": {

        "saturated": 4.5,

        "trans": 0.2

    },

    "protein": 11

})

Tilføjelse af dokumenter et ad gangen kan være ineffektivt. Med insert_many() metode, kan du tilføje flere dokumenter til din samling på én gang. Den forventer en række ordbøger som input. Følgende kode tilføjer yderligere to dokumenter til samlingen:

my_collection.insert_many([

    {

        "_id": 2,

        "name": "hamburger",

        "calories": 295, "protein": 17,

        "fats": { "saturated": 5.0, "trans": 0.8 },

    },

    {

        "_id": 3,

        "name": "taco",

        "calories": 226, "protein": 9,

        "fats": { "saturated": 4.4, "trans": 0.5 },

    }

])

_id felt, du ser i ovenstående dokumenter, er et felt, der bruges som en primær nøgle af MongoDB. Som sådan er den uforanderlig og skal være til stede i alle MongoDB-dokumenter. Hvis du glemmer at inkludere det, mens du opretter dit dokument, tilføjer PyMongo det automatisk for dig og tildeler en automatisk genereret unik værdi til det.

7. Kører forespørgsler

Når du har tilføjet et par dokumenter til din samling, kan du køre forespørgsler på den ved at kalde find() metode, som returnerer en Cursor objekt, du kan iterere over. Hvis du ikke sender nogen argumenter til det, find returnerer alle dokumenter i samlingen.

Følgende kode viser dig, hvordan du udskriver navnene på alle de fødevarer, der findes i vores samling:

my_cursor = my_collection.find()



for item in my_cursor:

    print(item["name"])



# Output is:

#   pizza

#   hamburger

#   taco

Hvis du vil have find() metode til kun at returnere de dokumenter, der matcher specifikke kriterier, skal du sende en Python-ordbog til den. For eksempel, hvis du vil finde det dokument, hvis name feltet er sat til "pizza", kan du bruge følgende kode:

my_cursor = my_collection.find({

    "name": "pizza"

})

For mere komplekse forespørgsler kan du bruge MongoDBs intuitivt navngivne forespørgselsoperatorer i de ordbøger, du sender til find() metode. For eksempel viser følgende kode dig, hvordan du bruger $lt operatør for at finde dokumenter, hvis calories feltet er indstillet til en værdi, der er mindre end 280:

my_cursor = my_collection.find({

    "calories": { "$lt": 280 }

})



for item in my_cursor:

    print("Name: %s, Calories: %d" % 

        (item["name"], item["calories"]))



# Output is:

#   Name: pizza, Calories: 266

#   Name: taco, Calories: 226

Ved at bruge punktnotationen kan du også bruge indlejrede felter i dine forespørgsler. Følgende kode viser dig, hvordan du finder dokumenter, hvis trans felt, som er inde i fats felt, er sat til en værdi, der er større end eller lig med 0,5:

my_cursor = my_collection.find({

    "fats.trans": { "$gte": 0.5 }

})



for item in my_cursor:

    print("Name: %s, Trans fats: %.2f" % 

        (item["name"], item["fats"]["trans"]))



# Output is:

#   Name: hamburger, Trans fats: 0.80

#   Name: taco, Trans fats: 0.50

8. Opdatering og sletning af dokumenter

Meget lig insert_one() og insert_many() metoder er update_one() og update_many() metoder, som du kan bruge til at ændre indholdet af dokumenter, der allerede er i din samling. Begge opdateringsmetoder kræver, udover nye data, en forespørgsel for at nulstille de dokumenter, der skal ændres.

Du kan bruge en række forskellige opdateringsoperatører i dine opdateringsmetoder. Den mest brugte er $set , som lader dig tilføje nye felter eller opdatere værdierne for eksisterende felter. Følgende kode viser dig, hvordan du tilføjer to nye felter med navnet fiber og sugar til dokumentet, hvis name feltet er sat til "taco":

my_collection.update_one(

    { "name": "taco" }, # query

    {

        "$set": {       # new data

            "fiber": 3.95,

            "sugar": 0.9

        }

    }

)

Hvis forespørgslen du sender til update_one() metoden returnerer mere end ét dokument, kun det første dokument opdateres. update_many() metoden har ikke denne begrænsning.

Til sidst ved at bruge delete_one() og delete_many() metoder, kan du slette dokumenter i dine samlinger. Begge metoder har brug for en forespørgsel for at bestemme, hvilke dokumenter der skal slettes. Sådan kan du slette alle dokumenter, hvis calories feltet er indstillet til en værdi, der er mindre end 300:

my_collection.delete_many({

    "calories": {

        "$lt": 300

    }

})



# Deletes all the three documents

  1. Nye sikkerhedskopierings- og sikkerhedsfunktioner til MySQL og PostgreSQL:ClusterControl Release 1.6.2

  2. Overvågning og sikring af MongoDB med ClusterControl Advisors

  3. C# mongo-forespørgsler med json-strenge

  4. Design af en applikation med Redis som datalager. Hvad? Hvorfor?