Kompletny przewodnik MongoDB: Instalacja, funkcje i najlepsze praktyki na VPS
MongoDB jest jedną z najpotężniejszych i najszerzej adoptowanych baz danych NoSQL na świecie — i to z dobrego powodu. Jego elastyczna, zorientowana na dokumenty architektura czyni go pierwszym wyborem dla deweloperów budujących nowoczesne, intensywnie korzystające z danych aplikacje, które muszą szybko się skalować. Niezależnie od tego, czy uruchamiasz startup MVP czy zarządzasz infrastrukturą klasy enterprise, MongoDB w połączeniu ze środowiskiem hostingowym o wysokiej wydajności zapewnia szybkość, elastyczność i niezawodność, których wymagają Twoje aplikacje.
W tym kompleksowym przewodniku dowiesz się, czym jest MongoDB, dlaczego wyróżnia się na tle tradycyjnych relacyjnych baz danych, jak zainstalować go na Ubuntu i jak wykonywać niezbędne operacje za pomocą powłoki MongoDB.
Czym jest MongoDB i dlaczego powinieneś go używać?
MongoDB to open-source’owa, zorientowana na dokumenty baza danych NoSQL, która przechowuje dane w elastycznych dokumentach podobnych do JSON, zwanych BSON (Binary JSON). W przeciwieństwie do tradycyjnych relacyjnych baz danych, które opierają się na sztywnych strukturach tabel-wierszy-kolumn, MongoDB pozwala każdemu dokumentowi w kolekcji mieć własną unikalną strukturę. To czyni ją wyjątkowo dobrze dostosowaną do aplikacji z ewoluującymi lub nieprzewidywalnymi modelami danych.
Kluczowe zalety MongoDB w stosunku do tradycyjnych baz danych SQL
| Funkcja | MongoDB (NoSQL) | Tradycyjny SQL |
|---|---|---|
| Model danych | Elastyczne dokumenty (BSON) | Schemat stały (tabele/wiersze) |
| Skalowalność | Pozioma (sharding) | Przede wszystkim pionowa |
| Zmiany schematu | Bez schematu, dynamiczna | Wymaga migracji |
| Język zapytań | Bogaty MQL + agregacja | SQL |
| Najlepsze dla | Dynamiczne, nieustrukturyzowane dane | Strukturalne, relacyjne dane |
| Wydajność na dużą skalę | Doskonała z shardingiem | Może się pogorszyć bez tuningu |
MongoDB jest idealna dla szerokiego zakresu przypadków użycia, w tym analityki w czasie rzeczywistym, systemów zarządzania treścią, platform e-commerce, pozyskiwania danych IoT, backendów mobilnych i każdej aplikacji, w której struktury danych mogą się zmieniać w czasie.
Dlaczego hostować MongoDB na VPS?
Hosting MongoDB na dedykowanym wirtualnym serwerze prywatnym daje Ci poziom kontroli, wydajności i bezpieczeństwa, którego środowiska współdzielone po prostu nie mogą zapewnić. Dzięki planowi VPS Hosting od AlexHost otrzymujesz:
- Pełny dostęp root do konfiguracji MongoDB dokładnie zgodnie z wymaganiami Twojej aplikacji
- Dedykowane zasoby RAM i CPU do obsługi wymagających obciążeń odczytu/zapisu
- Izolowane środowisko eliminujące problem „głośnego sąsiada” powszechny w hostingu współdzielonym
- Bezproblemowe skalowanie pionowe i poziome w miarę wzrostu Twoich danych
- Niestandardowe reguły zapory i sieci do zabezpieczenia dostępu do bazy danych
W przypadku aplikacji o wyjątkowo wysokich wymaganiach przepustowości, Serwery Dedykowane AlexHost oferują wydajność bare-metal z pełną izolacją sprzętu — złoty standard dla produkcyjnych wdrożeń MongoDB.
Sekcja 1: Zrozumienie podstawowej architektury MongoDB
Przed przystąpieniem do instalacji ważne jest zrozumienie, jak MongoDB organizuje i zarządza danymi.
Dokumenty
Podstawową jednostką danych w MongoDB jest dokument — obiekt podobny do JSON, który może zawierać zagnieżdżone pola, tablice i mieszane typy danych. Na przykład:
{
"_id": ObjectId("64b1f2c3e4b0a1d2e3f4a5b6"),
"name": "Alice",
"age": 30,
"email": "alice@example.com",
"address": {
"city": "New York",
"zip": "10001"
},
"tags": ["developer", "mongodb", "nodejs"]
}Kolekcje
Kolekcje to grupy dokumentów, które są analogiczne do tabel w bazach danych SQL. Jednak w przeciwieństwie do tabel SQL, kolekcje nie wymuszają stałego schematu — dokumenty w tej samej kolekcji mogą mieć zupełnie różne pola.
Bazy danych
Serwer MongoDB może hostować wiele baz danych, z których każda zawiera własny zestaw kolekcji. Ułatwia to izolowanie danych dla różnych aplikacji lub środowisk (np. development, staging, production) na jednym wystąpieniu serwera.
Sekcja 2: Kluczowe cechy MongoDB
2.1 Magazyn zorientowany na dokumenty
Model dokumentu MongoDB jest jedną z jego najpotężniejszych funkcji. Ponieważ każdy dokument może mieć inną strukturę, deweloperzy mogą organicznie rozwijać schemat bazy danych w miarę zmian wymagań aplikacji — bez uruchamiania złożonych migracji ALTER TABLE ani doświadczania przestojów.
Ta elastyczność jest szczególnie cenna w środowiskach agile development, gdzie wymagania zmieniają się często, lub w aplikacjach, które agregują dane z wielu heterogenicznych źródeł.
2.2 Skalowanie horyzontalne z Shardingiem
Jedną z definiujących możliwości MongoDB jest natywna obsługa skalowania horyzontalnego poprzez sharding. Sharding rozprowadza dane na wiele serwerów (zwanych shardami), umożliwiając MongoDB obsługę zbiorów danych i poziomów przepustowości, które przytłoczyłyby pojedynczą maszynę.
Każdy shard przechowuje podzbiór całkowitych danych, a router mongos kieruje zapytania do odpowiedniego(ych) sharda(ów) na podstawie konfigurowalnego klucza shardowania. Ta architektura umożliwia skalowanie bliskie liniowemu w miarę wzrostu objętości danych i obciążenia zapytań.
W środowiskach produkcyjnych o wysokim ruchu, hostowanie MongoDB na Serwerach Dedykowanych AlexHost zapewnia, że każdy shard ma dostęp do izolowanych zasobów sprzętu o wysokiej wydajności.
2.3 Wysoka dostępność z zestawami replik
MongoDB zapewnia wbudowaną tolerancję na uszkodzenia poprzez zestawy replik — grupy instancji MongoDB, które utrzymują identyczne kopie tych samych danych. Zestaw replik składa się z:
- Jednego węzła podstawowego, który odbiera wszystkie operacje zapisu
- Jednego lub więcej węzłów wtórnych, które replikują dane z węzła podstawowego
- Opcjonalnego arbitra, który uczestniczy w wyborach bez przechowywania danych
Jeśli węzeł podstawowy ulegnie awarii, zestaw replik automatycznie wybiera nowy węzeł podstawowy spośród dostępnych węzłów wtórnych, minimalizując przestoje i zapewniając trwałość danych.
2.4 Potężny język zapytań i struktura agregacji
Język zapytań MongoDB (MQL) obsługuje bogaty zestaw operacji, w tym:
- Filtrowanie na poziomie pola z operatorami porównania, logiki i elementów
- Projekcja do zwracania tylko określonych pól
- Sortowanie i paginacja z
sort(),limit()iskip() - Wyszukiwanie tekstu z indeksami pełnotekstowymi
- Zapytania geoprzestrzenne dla aplikacji opartych na lokalizacji
Struktura agregacji zapewnia podejście oparte na potoku do transformacji i analizy danych, obsługując operacje takie jak $match, $group, $sort, $project, $lookup (sprzężenia), $unwind i wiele innych — oferując funkcjonalność porównywalną do złożonych operacji SQL GROUP BY i JOIN.
2.5 Elastyczne indeksowanie
MongoDB obsługuje wiele typów indeksów w celu optymalizacji wydajności zapytań:
- Indeksy jedno-polowe dla prostych zapytań
- Indeksy złożone dla zapytań wielopolowych
- Indeksy wielokluczowe dla pól tablicy
- Indeksy tekstowe dla wyszukiwania pełnotekstowego
- Indeksy geoprzestrzenne dla zapytań lokalizacyjnych
- Indeksy TTL do automatycznego wygaśnięcia dokumentów (przydatne dla danych sesji lub dzienników)
Sekcja 3: Instalacja MongoDB na Ubuntu (Krok po kroku)
Ta sekcja przeprowadzi Cię przez kompletną instalację MongoDB na Ubuntu 20.04 LTS (Focal Fossa). Te kroki są zoptymalizowane dla środowiska AlexHost VPS z dostępem root lub sudo.
Wymagania wstępne
- Serwer Ubuntu 20.04 LTS
- Konto użytkownika z
sudouprawnieniami - Podstawowa znajomość wiersza poleceń Linux
Jeśli nie masz jeszcze serwera, możesz uruchomić w pełni skonfigurowany VPS Ubuntu w kilka minut dzięki AlexHost VPS Hosting.
Krok 1: Importowanie klucza publicznego GPG MongoDB
Pakiety MongoDB są podpisane kluczem GPG w celu weryfikacji ich autentyczności. Zaimportuj klucz za pomocą następującego polecenia:
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -Powinieneś zobaczyć OK jako dane wyjściowe, potwierdzające, że klucz został pomyślnie zaimportowany.
Krok 2: Dodawanie repozytorium MongoDB
Utwórz plik listy, aby dodać oficjalne repozytorium MongoDB do źródeł pakietów systemu:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list> Uwaga: To polecenie dodaje repozytorium MongoDB 6.0. Dostosuj numer wersji, jeśli potrzebujesz innego wydania.
Krok 3: Aktualizacja bazy danych pakietów
Odśwież lokalny indeks pakietów, aby uwzględnić nowo dodane repozytorium MongoDB:
sudo apt updateKrok 4: Instalacja MongoDB
Zainstaluj najnowszą stabilną wersję MongoDB ze wszystkimi wymaganymi komponentami:
sudo apt install -y mongodb-orgInstaluje to następujące pakiety:
mongod— demon bazy danych MongoDBmongos— router shardingu MongoDBmongosh— powłoka MongoDB (nowoczesna zamiana dla starszej powłokimongo)- Narzędzia i biblioteki MongoDB
Krok 5: Uruchamianie i włączanie usługi MongoDB
Uruchom usługę MongoDB natychmiast:
sudo systemctl start mongodWłącz MongoDB, aby uruchamiał się automatycznie przy starcie systemu:
sudo systemctl enable mongodSprawdź, czy MongoDB działa prawidłowo:
sudo systemctl status mongodPowinieneś zobaczyć dane wyjściowe wskazujące, że usługa jest active (running). Jeśli MongoDB uruchomiło się pomyślnie, zobaczysz również linię potwierdzającą, że nasłuchuje na porcie 27017.
Krok 6: Zabezpieczenie instalacji MongoDB (Zalecane)
Przed użyciem MongoDB w jakimkolwiek środowisku produkcyjnym lub dostępnym z Internetu, konieczne jest włączenie uwierzytelniania. Domyślnie MongoDB nie wymaga nazwy użytkownika ani hasła.
Utwórz użytkownika administracyjnego:
mongoshWewnątrz powłoki MongoDB:
use admin
db.createUser({
user: "adminUser",
pwd: "YourStrongPasswordHere",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
})Włącz uwierzytelnianie poprzez edycję pliku konfiguracyjnego MongoDB:
sudo nano /etc/mongod.confZnajdź sekcję security i dodaj:
security:
authorization: enabledUruchom ponownie MongoDB, aby zastosować zmiany:
sudo systemctl restart mongodOd tego momentu wszystkie połączenia z MongoDB będą wymagać ważnych poświadczeń.
Sekcja 4: Używanie MongoDB — Podstawowe komendy i operacje
Po zainstalowaniu i zabezpieczeniu MongoDB, poznajmy najważniejsze operacje, które będziesz używać na co dzień.
Krok 1: Dostęp do powłoki MongoDB
Połącz się z instancją MongoDB używając nowoczesnej powłoki mongosh:
mongoshJeśli uwierzytelnianie jest włączone, połącz się z poświadczeniami:
mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase adminKrok 2: Operacje na bazach danych
Wyświetl wszystkie bazy danych:
show dbsUtwórz lub przełącz się na bazę danych:
use mydatabase> MongoDB automatycznie tworzy bazę danych, gdy po raz pierwszy wstawisz do niej dane.
Sprawdź aktualnie wybraną bazę danych:
dbUsuń bazę danych:
db.dropDatabase()Krok 3: Operacje na kolekcjach
Utwórz kolekcję jawnie:
db.createCollection("users")Wyświetl wszystkie kolekcje w bieżącej bazie danych:
show collectionsUsuń kolekcję:
db.users.drop()Krok 4: Operacje CRUD na dokumentach
Wstawianie dokumentów
Wstaw pojedynczy dokument:
db.users.insertOne({
name: "Alice",
age: 30,
email: "alice@example.com",
role: "developer"
})Wstaw wiele dokumentów naraz:
db.users.insertMany([
{ name: "Bob", age: 25, email: "bob@example.com", role: "designer" },
{ name: "Carol", age: 35, email: "carol@example.com", role: "manager" },
{ name: "Dave", age: 28, email: "dave@example.com", role: "developer" }
])Odczytywanie dokumentów
Znajdź wszystkie dokumenty w kolekcji:
db.users.find()Znajdź dokumenty spełniające określony warunek:
db.users.find({ role: "developer" })Znajdź dokumenty spełniające wiele warunków:
db.users.find({ role: "developer", age: { $gte: 28 } })Zwróć tylko określone pola (projekcja):
db.users.find({ role: "developer" }, { name: 1, email: 1, _id: 0 })Znajdź pojedynczy dokument:
db.users.findOne({ name: "Alice" })Sortuj wyniki:
db.users.find().sort({ age: 1 }) // Ascending
db.users.find().sort({ age: -1 }) // DescendingOgranicz i paginuj wyniki:
db.users.find().limit(10).skip(20) // Page 3 with 10 results per pageAktualizowanie dokumentów
Zaktualizuj pojedynczy dokument:
db.users.updateOne(
{ name: "Alice" },
{ $set: { age: 31, role: "senior developer" } }
)Zaktualizuj wiele dokumentów:
db.users.updateMany(
{ role: "developer" },
{ $set: { department: "Engineering" } }
)Zwiększ wartość pola numerycznego:
db.users.updateOne(
{ name: "Bob" },
{ $inc: { age: 1 } }
)Usuwanie dokumentów
Usuń pojedynczy dokument:
db.users.deleteOne({ name: "Dave" })Usuń wiele dokumentów spełniających warunek:
db.users.deleteMany({ role: "designer" })Krok 5: Indeksowanie dla wydajności
Tworzenie indeksów na często przeszukiwanych polach dramatycznie poprawia wydajność zapytań.
Utwórz indeks na jednym polu:
db.users.createIndex({ email: 1 })Utwórz indeks złożony:
db.users.createIndex({ role: 1, age: -1 })Utwórz indeks unikatowy:
db.users.createIndex({ email: 1 }, { unique: true })Wyświetl wszystkie indeksy w kolekcji:
db.users.getIndexes()Krok 6: Potok agregacji
Framework agregacji pozwala na wykonywanie złożonych analiz danych bezpośrednio w MongoDB.
Przykład: Policz użytkowników według roli i sortuj według liczby:
db.users.aggregate([
{ $group: { _id: "$role", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])Przykład: Filtruj, grupuj i oblicz średni wiek według roli:
db.users.aggregate([
{ $match: { department: "Engineering" } },
{ $group: { _id: "$role", avgAge: { $avg: "$age" }, total: { $sum: 1 } } },
{ $sort: { avgAge: 1 } }
])Sekcja 5: Konfiguracja MongoDB i dostrajanie wydajności
Konfigurowanie mongod.conf
Główny plik konfiguracyjny MongoDB znajduje się w /etc/mongod.conf. Kluczowe ustawienia do przeglądu i optymalizacji:
# Network settings
net:
port: 27017
bindIp: 127.0.0.1 # Restrict to localhost for security; use server IP for remote access
# Storage settings
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 2 # Set to ~50% of available RAM
# Logging
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Security
security:
authorization: enabled
# Replication (for replica sets)
replication:
replSetName: "rs0"Najlepsze praktyki wydajności
- Przydziel wystarczającą ilość RAM — Silnik magazynu WiredTiger MongoDB używa pamięci podręcznej w pamięci. Ustaw
cacheSizeGBna około 50% dostępnej pamięci RAM systemu. - Użyj odpowiednich indeksów — Analizuj wolne zapytania za pomocą
db.collection.explain("executionStats")i twórz indeksy odpowiednio. - Monitoruj za pomocą MongoDB Atlas lub mongostat — Użyj narzędzi wiersza poleceń
mongostatimongotopdo monitorowania wydajności w czasie rzeczywistym. - Włącz journaling — Journaling jest domyślnie włączony i zapewnia odzyskiwanie po awarii; nie wyłączaj go w produkcji.
- Użyj puli połączeń — Skonfiguruj sterownik MongoDB aplikacji, aby używał puli połączeń w celu zmniejszenia narzutu na połączenia.
- Regularnie kompaktuj kolekcje — Użyj
db.runCommand({ compact: "collectionName" })do odzyskania przestrzeni dyskowej po dużych usunięciach.
Sekcja 6: Tworzenie kopii zapasowych i przywracanie MongoDB
Regularne kopie zapasowe są niezbędne dla każdej produkcyjnej bazy danych. MongoDB udostępnia wbudowane narzędzia do tego celu.
Utwórz kopię zapasową za pomocą mongodump
mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d)Przywróć z kopii zapasowej za pomocą mongorestore
mongorestore --uri="mongodb://adminUser:password@localhost:27017" /backup/mongodb/20240115/Automatyzuj kopie zapasowe za pomocą Cron
Dodaj zadanie cron, aby uruchamiać codzienne kopie zapasowe automatycznie:
sudo crontab -eDodaj następującą linię, aby uruchomić kopię zapasową każdego dnia o 2:00 AM:
0 2 * * * mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d) >> /var/log/mongodb-backup.log 2>&1Wybór odpowiedniego planu AlexHost dla MongoDB
Odpowiedni plan hostingowy zależy od skali aplikacji, ruchu i wymagań dotyczących danych:
| Przypadek użycia | Rekomendowany plan | Dlaczego |
|---|---|---|
| Rozwój / Testowanie | Hosting VPS | Opłacalny, pełna kontrola, łatwa konfiguracja |
| Mała do średniej produkcji | Hosting VPS | Skalowalne zasoby, pamięć SSD, dostęp root |
| Produkcja z dużym ruchem | Serwery dedykowane | Wydajność bare-metal, brak dzielenia zasobów |
| ML/AI z MongoDB | Hosting GPU | Przyspieszenie GPU dla obciążeń przetwarzania danych |
| Aplikacja internetowa + MongoDB | VPS z cPanel | Łatwy interfejs zarządzania obok bazy danych |
W przypadku aplikacji wymagających również frontendu internetowego, powiadomień e-mail lub połączeń zabezpieczonych SSL, AlexHost oferuje Certyfikaty SSL i Hosting poczty e-mail, aby uzupełnić stos infrastruktury.
Często Zadawane Pytania
P: Czy MongoDB jest bezpłatny?
Tak. MongoDB Community Edition jest bezpłatny i open-source na licencji Server Side Public License (SSPL). MongoDB Enterprise i MongoDB Atlas (chmura) oferują dodatkowe funkcje na zasadzie płatnej.
P: Jaki port używa MongoDB domyślnie?
MongoDB nasłuchuje na porcie 27017 domyślnie. Możesz to zmienić w /etc/mongod.conf.
P: Czy mogę uruchomić MongoDB na planie hostingu współdzielonego?
MongoDB wymaga dostępu root lub administratora do prawidłowej instalacji i konfiguracji, który nie jest dostępny na standardowym hostingu współdzielonym. Wymagany jest VPS lub serwer dedykowany. Współdzielony Hosting WWW AlexHost jest lepiej dostosowany do aplikacji PHP/MySQL, podczas gdy wdrożenia MongoDB powinny używać VPS lub serwera dedykowanego.
P: Jak się połączyć z MongoDB ze zdalnej aplikacji?
Zaktualizuj bindIp w /etc/mongod.conf aby uwzględnić adres IP serwera, skonfiguruj zaporę sieciową aby zezwolić na port 27017 tylko z zaufanych adresów IP i użyj ciągu połączenia w formacie: mongodb://username:password@your-server-ip:27017/dbname.
P: Jaka jest różnica między MongoDB i MySQL?
MySQL to relacyjna baza danych, która używa strukturalnych tabel i SQL. MongoDB to baza danych NoSQL przechowująca elastyczne dokumenty podobne do JSON. MongoDB doskonale sprawdza się w obsłudze nieustrukturyzowanych lub półustrukturyzowanych danych i skalowania poziomego, podczas gdy MySQL jest lepiej dostosowany do aplikacji ze złożonymi danymi relacyjnymi i ścisłymi wymaganiami zgodności ACID.
Podsumowanie
MongoDB to transformacyjna technologia bazy danych, która umożliwia deweloperom budowanie nowoczesnych, skalowalnych aplikacji bez ograniczeń sztywnych schematów relacyjnych. Jej model zorientowany na dokumenty, natywne skalowanie poziome poprzez sharding, wbudowana wysoka dostępność poprzez zestawy replik i potężna struktura agregacji czynią ją jedną z najbardziej wszechstronnych baz danych dostępnych dzisiaj.
Hostując MongoDB na planie VPS Hosting AlexHost, uzyskujesz pełną kontrolę, dedykowane zasoby i niezawodną infrastrukturę potrzebną do efektywnego uruchamiania MongoDB — niezależnie od tego, czy prototypujesz swoją pierwszą aplikację, czy zarządzasz systemem produkcyjnym o wysokim ruchu.
Postępuj zgodnie z instrukcjami instalacji i konfiguracji w tym przewodniku, aby uruchomić instancję MongoDB, wdrożyć odpowiednie środki bezpieczeństwa od samego początku i wykorzystaj indeksowanie oraz potok agregacji do budowania wydajnych, opartych na danych aplikacji.
Masz pytania dotyczące konfiguracji MongoDB lub potrzebujesz pomocy w wyborze odpowiedniego planu hostingu? Zespół wsparcia ekspertów AlexHost jest dostępny 24/7, aby pomóc Ci na każdym etapie.
na wszystkich usługach hostingowych