Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
Dedykowane serwery Serwery Wirtualne

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

FunkcjaMongoDB (NoSQL)Tradycyjny SQL
Model danychElastyczne dokumenty (BSON)Schemat stały (tabele/wiersze)
SkalowalnośćPozioma (sharding)Przede wszystkim pionowa
Zmiany schematuBez schematu, dynamicznaWymaga migracji
Język zapytańBogaty MQL + agregacjaSQL
Najlepsze dlaDynamiczne, nieustrukturyzowane daneStrukturalne, relacyjne dane
Wydajność na dużą skalęDoskonała z shardingiemMoż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() i skip()
  • 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 sudo uprawnieniami
  • 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 update

Krok 4: Instalacja MongoDB

Zainstaluj najnowszą stabilną wersję MongoDB ze wszystkimi wymaganymi komponentami:

sudo apt install -y mongodb-org

Instaluje to następujące pakiety:

  • mongod — demon bazy danych MongoDB
  • mongos — router shardingu MongoDB
  • mongosh — powłoka MongoDB (nowoczesna zamiana dla starszej powłoki mongo)
  • Narzędzia i biblioteki MongoDB

Krok 5: Uruchamianie i włączanie usługi MongoDB

Uruchom usługę MongoDB natychmiast:

sudo systemctl start mongod

Włącz MongoDB, aby uruchamiał się automatycznie przy starcie systemu:

sudo systemctl enable mongod

Sprawdź, czy MongoDB działa prawidłowo:

sudo systemctl status mongod

Powinieneś 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:

mongosh

Wewną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.conf

Znajdź sekcję security i dodaj:

security:
  authorization: enabled

Uruchom ponownie MongoDB, aby zastosować zmiany:

sudo systemctl restart mongod

Od 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:

mongosh

Jeśli uwierzytelnianie jest włączone, połącz się z poświadczeniami:

mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase admin

Krok 2: Operacje na bazach danych

Wyświetl wszystkie bazy danych:

show dbs

Utwó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:

db

Usuń 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 collections

Usuń 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 })  // Descending

Ogranicz i paginuj wyniki:

db.users.find().limit(10).skip(20)  // Page 3 with 10 results per page

Aktualizowanie 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

  1. Przydziel wystarczającą ilość RAM — Silnik magazynu WiredTiger MongoDB używa pamięci podręcznej w pamięci. Ustaw cacheSizeGB na około 50% dostępnej pamięci RAM systemu.
  2. Użyj odpowiednich indeksów — Analizuj wolne zapytania za pomocą db.collection.explain("executionStats") i twórz indeksy odpowiednio.
  3. Monitoruj za pomocą MongoDB Atlas lub mongostat — Użyj narzędzi wiersza poleceń mongostat i mongotop do monitorowania wydajności w czasie rzeczywistym.
  4. Włącz journaling — Journaling jest domyślnie włączony i zapewnia odzyskiwanie po awarii; nie wyłączaj go w produkcji.
  5. Użyj puli połączeń — Skonfiguruj sterownik MongoDB aplikacji, aby używał puli połączeń w celu zmniejszenia narzutu na połączenia.
  6. 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 -e

Dodaj 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>&1

Wybór odpowiedniego planu AlexHost dla MongoDB

Odpowiedni plan hostingowy zależy od skali aplikacji, ruchu i wymagań dotyczących danych:

Przypadek użyciaRekomendowany planDlaczego
Rozwój / TestowanieHosting VPSOpłacalny, pełna kontrola, łatwa konfiguracja
Mała do średniej produkcjiHosting VPSSkalowalne zasoby, pamięć SSD, dostęp root
Produkcja z dużym ruchemSerwery dedykowaneWydajność bare-metal, brak dzielenia zasobów
ML/AI z MongoDBHosting GPUPrzyspieszenie GPU dla obciążeń przetwarzania danych
Aplikacja internetowa + MongoDBVPS 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.