MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Utwórz klaster baz danych w chmurze za pomocą MongoDB Atlas

Od lat MongoDB jest bazą danych NoSQL zarówno dla osób prywatnych, jak i przedsiębiorstw budujących aplikacje na dużą skalę. Jest to oprogramowanie typu open source, łatwo skalowalne i zapewniające wysoką dostępność. Obsługuje również bardzo złożone zapytania i szczegółową kontrolę współbieżności.

Jednak niezbędne zadania, takie jak instalowanie bazy danych, dostrajanie jej w celu utrzymania optymalnej wydajności przez długi czas i zabezpieczanie jej, zwykle wymagają dużo wprawnego i dedykowanego wysiłku.

Na szczęście istnieje prostsza alternatywa:MongoDB Atlas, w pełni zarządzana wersja bazy danych w chmurze.

Dzięki MongoDB Atlas możesz utworzyć klaster MongoDB u dowolnego głównego dostawcy chmury i zacząć korzystać z tego klastra w ciągu kilku minut. Korzystając z interfejsu użytkownika opartego na przeglądarce Atlas, możesz również intuicyjnie skonfigurować klaster i monitorować jego wydajność.

W tym samouczku pokażę, jak utworzyć bezpłatny klaster MongoDB Atlas i używać go w aplikacji Pythona.

Wymagania wstępne

Zanim przejdziesz dalej, upewnij się, że na komputerze są zainstalowane i skonfigurowane następujące elementy:

  • Python 3.4 lub nowszy
  • pip 18,0 lub wyższy

1. Tworzenie klastra

Aby móc korzystać z usług w chmurze MongoDB, potrzebujesz konta MongoDB Atlas. Aby go utworzyć, przejdź do jego strony głównej i naciśnij Rozpocznij bezpłatnie przycisk.

Po wypełnieniu krótkiego formularza rejestracji nastąpi przekierowanie do kreatora tworzenia klastra. W pierwszej sekcji musisz wybrać preferowanego dostawcę chmury i region.

Aby zminimalizować opóźnienia w sieci, najlepiej wybrać region najbliżej komputera. Na razie jednak, ponieważ tworzymy klaster z bezpłatną warstwą, upewnij się, że wybrany region ma dostęp do bezpłatnej warstwy. Dodatkowo, jeśli używasz maszyny wirtualnej Google Cloud lub instancji Amazon EC2 jako środowiska programistycznego, najpierw wybierz odpowiedniego dostawcę chmury.

W poziomie klastra sekcji, wybierz M0 możliwość utworzenia bezpłatnego klastra poziomu. Oferuje 512 MB przestrzeni dyskowej, najnowszą wersję MongoDB z WiredTiger jako silnikiem pamięci masowej, zestaw replik składający się z trzech węzłów i hojną przepustowość 10 GB tygodniowo.

Na koniec nadaj klastrowi znaczącą nazwę i naciśnij Utwórz klaster przycisk.

MongoDB Atlas zajmie teraz około pięciu minut, aby skonfigurować klaster.

2. Konfiguracja klastra

Zanim zaczniesz korzystać z klastra, musisz podać kilka szczegółów związanych z bezpieczeństwem, więc przełącz się na Zabezpieczenia zakładka.

Po pierwsze, w sekcji Użytkownicy MongoDB sekcji, musisz utworzyć dla siebie nowego użytkownika, naciskając Dodaj nowego użytkownika przycisk. W wyświetlonym oknie dialogowym wpisz żądaną nazwę użytkownika i hasło, wybierz Odczyt i zapis w dowolnej bazie danych uprawnienia i naciśnij Dodaj użytkownika przycisk.

Następnie na białej liście adresów IP sekcji, musisz podać listę adresów IP, z których będziesz uzyskiwać dostęp do klastra. Na razie wystarczy podać aktualny adres IP komputera.

Naciśnij Dodaj adres IP przycisk, aby utworzyć nowy wpis adresu IP. W wyświetlonym oknie dialogowym naciśnij Dodaj aktualny adres IP przycisk, aby automatycznie wypełnić Wpis na białej liście pole. Ponadto, jeśli nie masz statycznego adresu IP, dobrym pomysłem jest oznaczenie go jako wpis tymczasowy, zaznaczając białą listę Zapisz jako tymczasową opcja. Na koniec naciśnij Potwierdź aby dodać wpis.

3. Pobieranie parametrów połączenia

Aby nawiązać połączenie z klastrem z poziomu aplikacji, będziesz potrzebować prawidłowych parametrów połączenia. Aby to uzyskać, przejdź do Przeglądu i naciśnij przycisk Połącz przycisk.

W wyświetlonym oknie dialogowym wybierz Połącz swoją aplikację i naciśnij Używam sterownika 3.6 lub nowszego przycisk. Powinieneś teraz widzieć swoje parametry połączenia. Nie będzie zawierało Twojego prawdziwego hasła, więc musisz wprowadzić je ręcznie. Po wykonaniu tej czynności zanotuj ciąg, aby móc go później użyć.

4. Instalowanie sterownika Pythona

Aby móc programowo współdziałać z klastrem MongoDB Atlas, na komputerze musi być zainstalowany sterownik MongoDB. W przypadku języka programowania Python PyMongo jest najpopularniejszym obecnie dostępnym sterownikiem. Zalecanym sposobem zainstalowania go na komputerze jest użycie pip moduł, jak pokazano poniżej:

python3 -m pip install pymongo --user

Być może zauważyłeś, że parametry połączenia MongoDB Atlas to mongodb+srv:// URI. Aby umożliwić sterownikowi pracę z rekordami DNS SRV, należy również zainstalować dnspython moduł. Oto jak:

python3 -m pip install dnspython --user

5. Łączenie z klastrem

Możesz teraz używać swojego klastra MongoDB z dowolnej aplikacji Pythona. Aby podążać za mną, utwórz nowy skrypt Pythona i otwórz go za pomocą dowolnego edytora kodu.

Wewnątrz skryptu, aby móc wchodzić w interakcje z klastrem, potrzebujesz instancji MongoClient klasa. Jako jedyny argument do jego konstruktora przekaż swoje parametry połączenia.

import pymongo



my_client = pymongo.MongoClient(

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

)

Powyższy konstruktor wraca natychmiast i nie zgłosi żadnych błędów. Dlatego, aby sprawdzić, czy udało Ci się nawiązać połączenie, sugeruję wykonanie operacji na klastrze. Wywołanie server_info() wystarczy metoda, która dostarcza różnych informacji o Twojej instancji MongoDB.

Jeśli nie ma błędów w ciągu połączenia, wywołanie server_info() metoda się powiedzie. Jeśli jednak podana nazwa użytkownika lub hasło są nieprawidłowe, napotkasz błąd OperationFailure błąd. Poniższy kod pokazuje, jak go złapać:

try:

    print("MongoDB version is %s" % 

            my_client.server_info()['version'])

except pymongo.errors.OperationFailure as error:

    print(error)

    quit(1)

Możesz teraz śmiało spróbować uruchomić swój skrypt.

6. Wstawianie dokumentów

Domyślny ciąg połączenia, który otrzymujesz z interfejsu WWW MongoDB Atlas, wspomina o bazie danych o nazwie test . Nadal korzystajmy z tej samej bazy danych. Oto, jak możesz uzyskać odniesienie do tego:

my_database = my_client.test

Baza danych MongoDB składa się z jednej lub więcej kolekcji, które są niczym innym jak grupami dokumentów BSON (skrót od binarnego JSON). Twój bezpłatny klaster warstwy w MongoDB Atlas może mieć maksymalnie 500 kolekcji.

Aby uzyskać realistyczny przykład, stwórzmy nową kolekcję o nazwie foods . Dzięki PyMongo nie musisz jawnie wywoływać żadnej metody, aby to zrobić. Możesz po prostu odwołać się do niego tak, jakby już istniał.

my_collection = my_database.foods

Warto wspomnieć, że powyższy kod nie tworzy foods odbiór natychmiast. Jest tworzony dopiero po dodaniu do niego dokumentu. Stwórzmy więc i dodajmy nowy dokument zawierający dane żywieniowe dotyczące artykułu spożywczego.

Korzystanie z insert_one() Metoda to najprostszy sposób dodania dokumentu do kolekcji. Aby określić zawartość dokumentu, przekazujesz do metody słownik Pythona. Poniższy przykładowy kod pokazuje, jak:

my_collection.insert_one({

    "_id": 1,

    "name": "pizza",

    "calories": 266,

    "fats": {

        "saturated": 4.5,

        "trans": 0.2

    },

    "protein": 11

})

Dodawanie dokumentów pojedynczo może być nieefektywne. Za pomocą insert_many() metody, możesz dodać kilka dokumentów do swojej kolekcji naraz. Jako dane wejściowe oczekuje tablicy słowników. Poniższy kod dodaje dwa kolejne dokumenty do kolekcji:

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 pole, które widzisz w powyższych dokumentach, jest polem używanym jako klucz podstawowy przez MongoDB. Jako taki jest niezmienny i musi być obecny we wszystkich dokumentach MongoDB. Jeśli zapomnisz go uwzględnić podczas tworzenia dokumentu, PyMongo doda go automatycznie i przypisze do niego automatycznie wygenerowaną unikalną wartość.

7. Uruchamianie zapytań

Po dodaniu kilku dokumentów do swojej kolekcji możesz uruchamiać na niej zapytania, wywołując funkcję find() metoda, która zwraca Cursor obiekt, nad którym możesz iterować. Jeśli nie przekazujesz do niego żadnych argumentów, find zwraca wszystkie dokumenty z kolekcji.

Poniższy kod pokazuje, jak wydrukować nazwy wszystkich artykułów spożywczych znajdujących się w naszej kolekcji:

my_cursor = my_collection.find()



for item in my_cursor:

    print(item["name"])



# Output is:

#   pizza

#   hamburger

#   taco

Jeśli chcesz find() aby zwrócić tylko te dokumenty, które spełniają określone kryteria, musisz przekazać do niej słownik Pythona. Na przykład, jeśli chcesz znaleźć dokument, którego name pole jest ustawione na "pizza", możesz użyć następującego kodu:

my_cursor = my_collection.find({

    "name": "pizza"

})

W przypadku bardziej złożonych zapytań możesz użyć intuicyjnie nazwanych operatorów zapytań MongoDB w słownikach przekazywanych do funkcji find() metoda. Na przykład poniższy kod pokazuje, jak używać $lt operator, aby znaleźć dokumenty, których calories pole jest ustawione na wartość mniejszą niż 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

Korzystając z notacji z kropkami, możesz również używać w zapytaniach pól zagnieżdżonych. Poniższy kod pokazuje, jak znaleźć dokumenty, których trans pole, które znajduje się wewnątrz fats pole jest ustawione na wartość większą lub równą 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. Aktualizacja i usuwanie dokumentów

Bardzo podobny do insert_one() i insert_many() metody to update_one() i update_many() metody, za pomocą których możesz zmienić zawartość dokumentów znajdujących się już w Twojej kolekcji. Obie metody aktualizacji, oprócz nowych danych, wymagają zapytania, aby skupić się na dokumentach, które należy zmienić.

W metodach aktualizacji możesz używać różnych operatorów aktualizacji. Najczęściej używanym jest $set , który pozwala dodawać nowe pola lub aktualizować wartości istniejących pól. Poniższy kod pokazuje, jak dodać dwa nowe pola o nazwie fiber i sugar do dokumentu, którego name pole jest ustawione na "taco":

my_collection.update_one(

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

    {

        "$set": {       # new data

            "fiber": 3.95,

            "sugar": 0.9

        }

    }

)

Jeśli zapytanie przekazujesz do update_one() Metoda zwraca więcej niż jeden dokument, aktualizowany jest tylko pierwszy dokument. update_many() metoda nie ma tego ograniczenia.

Na koniec, używając delete_one() i delete_many() metody, możesz usuwać dokumenty ze swoich zbiorów. Obie metody wymagają zapytania, aby określić, które dokumenty należy usunąć. Oto jak usunąć wszystkie dokumenty, których calories pole jest ustawione na wartość mniejszą niż 300:

my_collection.delete_many({

    "calories": {

        "$lt": 300

    }

})



# Deletes all the three documents

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Aktualizacja ścieżki „x” spowodowałaby konflikt w miejscu „x”

  2. Muszę pobrać obiekt MongoDB tylko za pomocą filtrowanego elementu tablicy

  3. Połącz pełny tekst z innym indeksem

  4. Klucze obce w mongo?

  5. Wyszukiwanie pełnotekstowe z wagą w manguście