Повний посібник MongoDB: Встановлення, функції та найкращі практики на VPS
MongoDB — один з найпотужніших і найширше використовуваних NoSQL баз даних у світі — і не без причини. Його гнучка, орієнтована на документи архітектура робить його першим вибором для розробників, які створюють сучасні, насичені даними додатки, які потребують швидкого масштабування. Незалежно від того, чи ви запускаєте стартап MVP або керуєте інфраструктурою корпоративного рівня, MongoDB у поєднанні з високопродуктивним хостингом забезпечує швидкість, гнучкість і надійність, які вимагають ваші додатки.
У цьому комплексному посібнику ви дізнаєтеся, що таке MongoDB, чим він виділяється серед традиційних реляційних баз даних, як встановити його на Ubuntu та як виконувати основні операції за допомогою оболонки MongoDB.
Що таке MongoDB і чому його варто використовувати?
MongoDB — це відкритобережна, орієнтована на документи NoSQL база даних, яка зберігає дані в гнучких, подібних до JSON документах, які називаються BSON (Binary JSON). На відміну від традиційних реляційних баз даних, які покладаються на жорсткі структури таблиця-рядок-колонка, MongoDB дозволяє кожному документу в колекції мати власну унікальну структуру. Це робить її виключно придатною для додатків з еволюціонуючими або непередбачуваними моделями даних.
Ключові переваги MongoDB над традиційними SQL базами даних
| Функція | MongoDB (NoSQL) | Традиційний SQL |
|---|---|---|
| Модель даних | Гнучкі документи (BSON) | Фіксована схема (таблиці/рядки) |
| Масштабованість | Горизонтальна (sharding) | Переважно вертикальна |
| Зміни схеми | Без схеми, динамічна | Вимагає міграцій |
| Мова запитів | Багата MQL + агрегація | SQL |
| Найкраще для | Динамічні, неструктуровані дані | Структуровані, реляційні дані |
| Продуктивність у масштабі | Відмінна з sharding | Може погіршитися без налаштування |
MongoDB ідеальна для широкого спектру варіантів використання, включаючи аналітику в реальному часі, системи управління контентом, платформи електронної комерції, прийом даних IoT, мобільні бекенди та будь-які додатки, де структури даних можуть змінюватися з часом.
Чому варто розміщувати MongoDB на VPS?
Розміщення MongoDB на виділеному віртуальному приватному сервері дає вам рівень контролю, продуктивності та безпеки, який просто неможливо забезпечити у спільних середовищах. З планом VPS Hosting від AlexHost ви отримуєте:
- Повний root доступ для налаштування MongoDB точно так, як потребує ваш додаток
- Виділені ресурси RAM та CPU для обробки вимогливих операцій читання/запису
- Ізольоване середовище, яке усуває проблему «шумного сусіда», поширену в спільному хостингу
- Безперебійне вертикальне та горизонтальне масштабування у міру зростання ваших даних
- Користувацькі правила брандмауера та мережі для обмеження доступу до бази даних
Для додатків з виключно високими вимогами до пропускної здатності Dedicated Servers AlexHost пропонують продуктивність bare-metal з повною ізоляцією обладнання — золотий стандарт для виробничих розгортань MongoDB.
Розділ 1: Розуміння основної архітектури MongoDB
Перш ніж переходити до встановлення, важливо зрозуміти, як MongoDB організує та управляє даними.
Документи
Фундаментальною одиницею даних у MongoDB є документ — об’єкт, подібний до JSON, який може містити вкладені поля, масиви та змішані типи даних. Наприклад:
{
"_id": ObjectId("64b1f2c3e4b0a1d2e3f4a5b6"),
"name": "Alice",
"age": 30,
"email": "alice@example.com",
"address": {
"city": "New York",
"zip": "10001"
},
"tags": ["developer", "mongodb", "nodejs"]
}Колекції
Документи групуються в колекції, які аналогічні таблицям у SQL базах даних. Однак, на відміну від SQL таблиць, колекції не застосовують фіксовану схему — документи в одній колекції можуть мати абсолютно різні поля.
Бази даних
Сервер MongoDB може розміщувати кілька баз даних, кожна з яких містить свій набір колекцій. Це дозволяє легко ізолювати дані для різних додатків або середовищ (наприклад, розробка, тестування, виробництво) на одному екземплярі сервера.
Розділ 2: Ключові особливості MongoDB
2.1 Сховище, орієнтоване на документи
Модель документів MongoDB є однією з її найпотужніших особливостей. Оскільки кожен документ може мати іншу структуру, розробники можуть органічно розвивати схему бази даних у міру зміни вимог програми — без запуску складних міграцій ALTER TABLE або простоїв.
Ця гнучкість особливо цінна в середовищах гнучкої розробки, де вимоги часто змінюються, або в програмах, які агрегують дані з кількох різнорідних джерел.
2.2 Горизонтальна масштабованість за допомогою шардування
Однією з визначальних можливостей MongoDB є її вбудована підтримка горизонтального масштабування через шардування. Шардування розподіляє дані на кілька серверів (називаються шардами), дозволяючи MongoDB обробляти набори даних і рівні пропускної здатності, які перевищили б можливості однієї машини.
Кожен шард містить підмножину загальних даних, а маршрутизатор mongos спрямовує запити до відповідного шарда (шардів) на основі налаштовуваного ключа шардування. Ця архітектура забезпечує майже лінійну масштабованість у міру зростання обсягу даних і навантаження на запити.
Для високонавантажених виробничих середовищ розміщення MongoDB на Виділених серверах AlexHost гарантує, що кожен шард має доступ до ізольованих ресурсів високопродуктивного обладнання.
2.3 Висока доступність з наборами реплік
MongoDB забезпечує вбудовану відмовостійкість через набори реплік — групи екземплярів MongoDB, які зберігають ідентичні копії одних і тих же даних. Набір реплік складається з:
- Одного первинного вузла, який отримує всі операції запису
- Одного або кількох вторинних вузлів, які реплікують дані з первинного
- Необов’язкового арбітра, який бере участь у виборах без зберігання даних
Якщо первинний вузол вийде з ладу, набір реплік автоматично обирає новий первинний вузол з доступних вторинних, мінімізуючи простої та забезпечуючи довговічність даних.
2.4 Потужна мова запитів та фреймворк агрегації
Мова запитів MongoDB (MQL) підтримує багатий набір операцій, включаючи:
- Фільтрування на рівні полів з операторами порівняння, логічними та елементними операторами
- Проекцію для повернення лише конкретних полів
- Сортування та розбиття на сторінки з
sort(),limit()таskip() - Пошук тексту з повнотекстовими індексами
- Геопросторові запити для програм на основі місцезнаходження
Фреймворк агрегації забезпечує підхід на основі конвеєра до трансформації та аналізу даних, підтримуючи операції, такі як $match, $group, $sort, $project, $lookup (з’єднання), $unwind та багато інших — пропонуючи функціональність, порівнянну зі складними операціями SQL GROUP BY та JOIN.
2.5 Гнучке індексування
MongoDB підтримує кілька типів індексів для оптимізації продуктивності запитів:
- Індекси одного поля для простих запитів
- Складені індекси для запитів з кількома полями
- Багатоключові індекси для полів масивів
- Текстові індекси для повнотекстового пошуку
- Геопросторові індекси для запитів місцезнаходження
- TTL індекси для автоматичного закінчення дії документів (корисно для даних сеансу або журналів)
Розділ 3: Встановлення MongoDB на Ubuntu (Покрокова інструкція)
Цей розділ проведе вас через повне встановлення MongoDB на Ubuntu 20.04 LTS (Focal Fossa). Ці кроки оптимізовані для VPS AlexHost з доступом root або sudo.
Передумови
- Сервер Ubuntu 20.04 LTS
- Обліковий запис користувача з
sudoпривілеями - Базове знайомство з командним рядком Linux
Якщо у вас ще немає сервера, ви можете розгорнути повністю налаштований Ubuntu VPS за кілька хвилин за допомогою AlexHost VPS Hosting.
Крок 1: Імпортування публічного ключа GPG MongoDB
Пакети MongoDB підписані ключем GPG для перевірки їх автентичності. Імпортуйте ключ за допомогою наступної команди:
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -Ви повинні побачити OK як результат, що підтверджує успішне імпортування ключа.
Крок 2: Додавання репозиторію MongoDB
Створіть файл списку для додавання офіційного репозиторію MongoDB до джерел пакетів вашої системи:
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> Примітка: Ця команда додає репозиторій MongoDB 6.0. Відрегулюйте номер версії, якщо вам потрібен інший випуск.
Крок 3: Оновлення бази даних пакетів
Оновіть локальний індекс пакетів, щоб включити щойно доданий репозиторій MongoDB:
sudo apt updateКрок 4: Встановлення MongoDB
Встановіть найновішу стабільну версію MongoDB з усіма необхідними компонентами:
sudo apt install -y mongodb-orgЦе встановлює наступні пакети:
mongod— демон бази даних MongoDBmongos— маршрутизатор шардування MongoDBmongosh— оболонка MongoDB (сучасна заміна застарілої оболонкиmongo)- Інструменти та бібліотеки MongoDB
Крок 5: Запуск та активація служби MongoDB
Запустіть службу MongoDB негайно:
sudo systemctl start mongodАктивуйте MongoDB для автоматичного запуску при завантаженні системи:
sudo systemctl enable mongodПеревірте, що MongoDB працює правильно:
sudo systemctl status mongodВи повинні побачити результат, що вказує на те, що служба active (running). Якщо MongoDB запустилася успішно, ви також побачите рядок, що підтверджує, що вона прослуховує порт 27017.
Крок 6: Захист вашої інсталяції MongoDB (рекомендується)
Перед використанням MongoDB у будь-якому виробничому або інтернет-орієнтованому середовищі критично важливо увімкнути аутентифікацію. За замовчуванням MongoDB не вимагає імені користувача або пароля.
Створіть адміністративного користувача:
mongoshВсередині оболонки MongoDB:
use admin
db.createUser({
user: "adminUser",
pwd: "YourStrongPasswordHere",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
})Увімкніть аутентифікацію, відредагувавши файл конфігурації MongoDB:
sudo nano /etc/mongod.confЗнайдіть розділ security та додайте:
security:
authorization: enabledПерезапустіть MongoDB, щоб застосувати зміни:
sudo systemctl restart mongodЗ цього моменту всі підключення до MongoDB вимагатимуть дійсних облікових даних.
Розділ 4: Використання MongoDB — Основні команди та операції
З встановленою та захищеною MongoDB давайте дослідимо найважливіші операції, які ви будете використовувати щодня.
Крок 1: Доступ до оболонки MongoDB
Підключіться до вашого екземпляра MongoDB за допомогою сучасної оболонки mongosh:
mongoshЯкщо увімкнено автентифікацію, підключіться з обліковими даними:
mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase adminКрок 2: Операції з базами даних
Список всіх баз даних:
show dbsСтворення або перемикання на базу даних:
use mydatabase> MongoDB автоматично створює базу даних під час першого вставлення даних у неї.
Перевірка поточно вибраної бази даних:
dbВидалення бази даних:
db.dropDatabase()Крок 3: Операції з колекціями
Явне створення колекції:
db.createCollection("users")Список всіх колекцій у поточній базі даних:
show collectionsВидалення колекції:
db.users.drop()Крок 4: Операції CRUD з документами
Вставлення документів
Вставлення одного документа:
db.users.insertOne({
name: "Alice",
age: 30,
email: "alice@example.com",
role: "developer"
})Вставлення кількох документів одночасно:
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" }
])Читання документів
Пошук всіх документів у колекції:
db.users.find()Пошук документів з конкретною умовою:
db.users.find({ role: "developer" })Пошук документів з кількома умовами:
db.users.find({ role: "developer", age: { $gte: 28 } })Повернення лише конкретних полів (проекція):
db.users.find({ role: "developer" }, { name: 1, email: 1, _id: 0 })Пошук одного документа:
db.users.findOne({ name: "Alice" })Сортування результатів:
db.users.find().sort({ age: 1 }) // Ascending
db.users.find().sort({ age: -1 }) // DescendingОбмеження та розбиття результатів на сторінки:
db.users.find().limit(10).skip(20) // Page 3 with 10 results per pageОновлення документів
Оновлення одного документа:
db.users.updateOne(
{ name: "Alice" },
{ $set: { age: 31, role: "senior developer" } }
)Оновлення кількох документів:
db.users.updateMany(
{ role: "developer" },
{ $set: { department: "Engineering" } }
)Збільшення числового поля:
db.users.updateOne(
{ name: "Bob" },
{ $inc: { age: 1 } }
)Видалення документів
Видалення одного документа:
db.users.deleteOne({ name: "Dave" })Видалення кількох документів за умовою:
db.users.deleteMany({ role: "designer" })Крок 5: Індексування для продуктивності
Створення індексів на часто запитуваних полях значно покращує продуктивність запитів.
Створення індексу з одного поля:
db.users.createIndex({ email: 1 })Створення складеного індексу:
db.users.createIndex({ role: 1, age: -1 })Створення унікального індексу:
db.users.createIndex({ email: 1 }, { unique: true })Список всіх індексів у колекції:
db.users.getIndexes()Крок 6: Конвеєр агрегації
Фреймворк агрегації дозволяє виконувати складний аналіз даних безпосередньо в MongoDB.
Приклад: Підрахунок користувачів за ролями та сортування за кількістю:
db.users.aggregate([
{ $group: { _id: "$role", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])Приклад: Фільтрування, групування та розрахунок середнього віку за ролями:
db.users.aggregate([
{ $match: { department: "Engineering" } },
{ $group: { _id: "$role", avgAge: { $avg: "$age" }, total: { $sum: 1 } } },
{ $sort: { avgAge: 1 } }
])Розділ 5: Конфігурація MongoDB та оптимізація продуктивності
Конфігурування mongod.conf
Основний файл конфігурації MongoDB розташований у /etc/mongod.conf. Ключові параметри для перегляду та оптимізації:
# 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"Найкращі практики продуктивності
- Виділіть достатньо RAM — механізм зберігання WiredTiger MongoDB використовує кеш у пам’яті. Встановіть
cacheSizeGBприблизно на 50% від доступної системної RAM. - Використовуйте відповідні індекси — аналізуйте повільні запити за допомогою
db.collection.explain("executionStats")та створюйте індекси відповідно. - Моніторинг за допомогою MongoDB Atlas або mongostat — використовуйте
mongostatтаmongotopінструменти командного рядка для моніторингу продуктивності в реальному часі. - Увімкніть журналювання — журналювання увімкнено за замовчуванням і забезпечує відновлення після збою; не вимикайте його у виробництві.
- Використовуйте пулінг з’єднань — налаштуйте драйвер MongoDB вашої програми на використання пулінгу з’єднань, щоб зменшити витрати на з’єднання.
- Регулярно компактуйте колекції — використовуйте
db.runCommand({ compact: "collectionName" })для звільнення дискового простору після великих видалень.
Розділ 6: Резервне копіювання та відновлення MongoDB
Регулярне резервне копіювання є важливим для будь-якої виробничої бази даних. MongoDB надає вбудовані інструменти для цієї мети.
Створення резервної копії за допомогою mongodump
mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d)Відновлення з резервної копії за допомогою mongorestore
mongorestore --uri="mongodb://adminUser:password@localhost:27017" /backup/mongodb/20240115/Автоматизація резервного копіювання за допомогою Cron
Додайте завдання cron для автоматичного щоденного резервного копіювання:
sudo crontab -eДодайте наступний рядок для запуску резервної копії щодня о 2:00 ранку:
0 2 * * * mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d) >> /var/log/mongodb-backup.log 2>&1Вибір правильного плану AlexHost для MongoDB
Правильний план хостингу залежить від масштабу вашої програми, трафіку та вимог до даних:
| Варіант використання | Рекомендований план | Чому |
|---|---|---|
| Розробка / Тестування | VPS Hosting | Економічно, повний контроль, легке налаштування |
| Невелике та середнє виробництво | VPS Hosting | Масштабовані ресурси, SSD сховище, root доступ |
| Виробництво з високим трафіком | Dedicated Servers | Продуктивність bare-metal, без спільного використання ресурсів |
| ML/AI з MongoDB | GPU Hosting | GPU прискорення для робочих навантажень обробки даних |
| Веб-додаток + MongoDB | VPS з cPanel | Простий інтерфейс управління поряд з вашою базою даних |
Для додатків, які також потребують веб-інтерфейсу, сповіщень електронною поштою або SSL-захищених з’єднань, AlexHost пропонує SSL Сертифікати та Email Hosting для завершення вашого стеку інфраструктури.
Часто задавані питання
Q: Чи є MongoDB безплатною?
Так. MongoDB Community Edition є безплатною та відкритою під ліцензією Server Side Public License (SSPL). MongoDB Enterprise та MongoDB Atlas (хмара) пропонують додаткові функції на платній основі.
Q: Який порт використовує MongoDB за замовчуванням?
MongoDB слухає на порту 27017 за замовчуванням. Ви можете змінити це в /etc/mongod.conf.
Q: Чи можу я запустити MongoDB на плані спільного хостингу?
MongoDB вимагає root або адміністративного доступу для правильної установки та конфігурації, що недоступно на стандартному спільному хостингу. Потрібен VPS або виділений сервер. Спільний веб-хостинг AlexHost краще підходить для PHP/MySQL додатків, тоді як розгортання MongoDB повинні використовувати VPS або виділений сервер.
Q: Як мені підключитися до MongoDB з віддаленого додатку?
Оновіть bindIp в /etc/mongod.conf щоб включити IP-адресу вашого сервера, налаштуйте брандмауер, щоб дозволити порт 27017 тільки з надійних IP-адрес, і використовуйте рядок підключення у форматі: mongodb://username:password@your-server-ip:27017/dbname.
Q: Яка різниця між MongoDB та MySQL?
MySQL — це реляційна база даних, яка використовує структуровані таблиці та SQL. MongoDB — це NoSQL база даних документів, яка зберігає гнучкі документи, подібні до JSON. MongoDB відмінно справляється з обробкою неструктурованих або напівструктурованих даних та горизонтальним масштабуванням, тоді як MySQL краще підходить для додатків зі складними реляційними даними та суворими вимогами ACID.
Висновок
MongoDB — це трансформаційна технологія баз даних, яка дозволяє розробникам створювати сучасні, масштабовані додатки без обмежень жорстких реляційних схем. Її орієнтована на документи модель, нативне горизонтальне масштабування через sharding, вбудована висока доступність через replica sets та потужна aggregation framework роблять її однією з найбільш універсальних баз даних, доступних сьогодні.
Розміщуючи MongoDB на плані VPS Hosting AlexHost, ви отримуєте повний контроль, виділені ресурси та надійну інфраструктуру, необхідну для ефективного запуску MongoDB — незалежно від того, чи ви прототипуєте свій перший додаток, чи керуєте високонавантаженою виробничою системою.
Дотримуйтесь кроків установки та конфігурації в цьому посібнику, щоб запустити вашу MongoDB, впровадьте належні заходи безпеки з самого початку та використовуйте індексування та aggregation pipeline для створення продуктивних, керованих даними додатків.
Маєте запитання щодо налаштування MongoDB або потребуєте допомоги у виборі правильного плану хостингу? Команда експертної підтримки AlexHost доступна 24/7, щоб допомогти вам на кожному кроці.
на всіх хостингових послугах