Djongo i NoSQL

Djongo i NoSQL

Django + MongoDB = Djongo - przyjemna praca z bazą NoSQL

Baza relacyjna a nierelacyjna

W bazach nierelacyjnych, jak sama nazwa wskazuje nie występują relacje. W SQL służą one by unikać powielania danych w wielu miejscach. Same dane nie są przechowywane w tabelach, lecz analogicznych do nich kolekcjach. Poniższa tabelka może pomóc w łatwiejszym zrozumieniu konceptu.

Zapytania w bazie relacyjnej tworzy się przy użyciu SQL, natomiast w bazach typu NoSQL możemy stosować języki skryptowe np. JavaScript, Ruby lub Python. Szczególnie doceniana jest jej horyzontalna skalowalność, co pozwala na pracę z Big Data. Jeśli chodzi o porównanie wydajności pomiędzy SQL a NoSQL to w poniższej tabelce przedstawione są rezultaty testu przeprowadzonego przez ArangoDB.com, które pokazują silne i słabe strony baz nierelacyjnych.

W prostych zapytaniach bazy NoSQL mogą być delikatnie szybsze, ale ogólnie prezentują podobny poziom. Dla tych co przyzwyczaili się do pracy z relacyjnymi bazami danych w Django dostępna jest paczka, która ułatwia przejście na bazy nierelacyjne. Djongo to paczka pozwalająca w łatwy sposób podłączyć się do bazy MongoDB, oraz korzystać z niej w taki sposób, jakby była ona bazą SQL. Obecnie wymaga Pythona w wersji co najmniej 3.6, oraz MongoDB 3.4 lub wyższej, jeśli chcesz z bazy lokalnie którą można pobrać z tej strony. Pokażę jak podłączyć bazę znajdującą się w chmurze.

Tworzenie darmowego konta na

    - Wchodzimy na strone MongoDB.com
    - Wypełniamy formularz rejestrujący  
    - Po zalogowaniu wciskamy przycisk Build a Cluster
    - Wybiermay opcję Free
    - Wybieramy dostarczyciela bazy, region oraz nadajemy nazwę Clustera
    - Przechodzimy do zakładki Database Access i tworzymy użytkownika, oraz hasło do bazy
    - Wracamy do panelu Clusters, wciskamy przycisk connect i dodajemy swój adres IP
    - Następnie wybieramy Connect your application
    - Po zaznaczeniu języka Python generuje się nam Connection String, który kopiujemy

Konfiguracja Djongo

Teraz przechodzimy do kodu. Zakładam, że masz zainstalowanego Django oraz utworzony nowy projekt. Teraz możemy zainstalować Djongo komendą:

    pip install djongo

Przechodzimy do settings.py i odszukujemy Databases. W ENGINE wpisujemy djongo. NAME to nazwa bazy. PORT należy podać 27017. W miejscu HOST wklejamy skopiowany wcześniej Connection String i uzupełniamy użytkownika oraz hasło. Na koniec tak powinno się prezentować nasze ustawienie:

DATABASES = {
        'default': {
            'ENGINE': 'djongo',
            'NAME': 'nazwa_bazy',
            'PORT': 27017,
            'HOST': "mongodb+srv://'nazwa_użytkownika':'hasło_bazy'@cluster0-ezmy4.mongodb.net/test?retryWrites=true&w=majority",
            'USER': 'nazwa_użytkownika',
            'PASSWORD': 'hasło_bazy',

Skonfigurowaliśmy bazę. Teraz możemy wykonać migrację. W tym celu należy wykonać:

python manage.py makemigrations

Oraz:

python manage.py migrate

Jeśli wrócimy do naszej bazy, zauważymy, że w naszym klastrze pojawiło się wiele kolekcji.

Na ten moment są jeszcze puste. Stwórzmy, więc nowego użytkownika z użyciem polecenia:

python manage.py createsuperuser

Otrzymalismy powiadomienie o sukcesie. Teraz nasz kolekcja auth_user zawiera dokument z informacjami o stworzonym przez nas użykowniku. Po więcej informacji odsyłam na strone djongo.