15 września 2023
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.
- 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
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.