MongoDB
Вступ
MongoDB - одна з найпопулярніших документоорієнтованих NoSQL-баз даних, яку обирають за високе навантаження на запис (корисно для аналітики чи IoT) і високу доступність (легко налаштувати набори реплік з автоматичним перемиканням при збої). Вона також легко шардить базу для горизонтального масштабування й має потужну мову запитів для агрегації, текстового пошуку чи геопросторових запитів.
Замість того щоб зберігати дані в таблицях із рядків і стовпців, як SQL-бази, кожен запис у базі MongoDB - це документ, описаний у BSON, двійковому представленні даних. Далі застосунки можуть отримувати цю інформацію у форматі JSON. Підтримується широкий набір типів даних, зокрема документи, масиви, вкладені документи та двійкові дані.
Перш ніж користуватися MongoDB разом із Laravel, ми рекомендуємо встановити пакет mongodb/laravel-mongodb через Composer. Пакет laravel-mongodb офіційно підтримує MongoDB, і хоча PHP підтримує MongoDB нативно через драйвер MongoDB, пакет Laravel MongoDB дає багатшу інтеграцію з Eloquent та іншими можливостями Laravel:
composer require mongodb/laravel-mongodb
Встановлення
Драйвер MongoDB
Щоб підключитися до бази даних MongoDB, потрібне розширення PHP mongodb. Якщо ви розробляєте локально через Laravel Herd або встановили PHP через php.new, це розширення вже є у вашій системі. Проте якщо вам треба встановити його вручну, зробіть це через PECL:
pecl install mongodb
Докладніше про встановлення розширення MongoDB для PHP читайте в інструкції зі встановлення розширення MongoDB PHP.
Запуск сервера MongoDB
MongoDB Community Server дозволяє запустити MongoDB локально й доступний для встановлення на Windows, macOS, Linux або як контейнер Docker. Щоб дізнатися, як встановити MongoDB, зверніться до офіційного посібника зі встановлення MongoDB Community.
Рядок підключення до сервера MongoDB можна задати у вашому файлі .env:
MONGODB_URI="mongodb://localhost:27017"
MONGODB_DATABASE="laravel_app"
Щоб розмістити MongoDB у хмарі, розгляньте MongoDB Atlas. Щоб звертатися до кластера MongoDB Atlas локально зі свого застосунку, вам треба додати власну IP-адресу в мережевих налаштуваннях кластера до списку дозволених IP проєкту.
Рядок підключення до MongoDB Atlas також можна задати у вашому файлі .env:
MONGODB_URI="mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority"
MONGODB_DATABASE="laravel_app"
Встановлення пакета Laravel MongoDB
Нарешті, встановіть пакет Laravel MongoDB через Composer:
composer require mongodb/laravel-mongodb
Встановлення цього пакета зазнає невдачі, якщо розширення PHP
mongodbне встановлено. Конфігурація PHP може відрізнятися для CLI та вебсервера, тож переконайтеся, що розширення увімкнено в обох.
Конфігурація
Налаштувати підключення до MongoDB можна через конфігураційний файл config/database.php вашого застосунку. Додайте до нього підключення mongodb, що використовує драйвер mongodb:
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),
'database' => env('MONGODB_DATABASE', 'laravel_app'),
],
],
Можливості
Коли конфігурацію завершено, ви можете користуватися пакетом mongodb і цим підключенням до бази у своєму застосунку, щоб скористатися низкою потужних можливостей:
- Через Eloquent моделі можуть зберігатися в колекціях MongoDB. Окрім стандартних можливостей Eloquent, пакет Laravel MongoDB надає додаткові - як-от вкладені зв'язки. Пакет також дає прямий доступ до драйвера MongoDB, яким можна виконувати сирі запити та конвеєри агрегації.
- Пишіть складні запити через конструктор запитів.
- Пошук за схожістю / векторний пошук через векторні ембединги та метод Eloquent
vectorSearch. - Драйвер кешу
mongodbоптимізовано під можливості MongoDB - як-от TTL-індекси, що автоматично прибирають прострочені записи кешу. - Відправляйте й обробляйте завдання в черзі через драйвер черги
mongodb. - Зберігання файлів у GridFS через адаптер GridFS для Flysystem.
- Повнотекстовий пошук через рушій Scout
mongodb. - Більшість сторонніх пакетів, що працюють із підключенням до бази чи Eloquent, можна використовувати з MongoDB.
Щоб дізнатися більше про використання MongoDB разом із Laravel, зверніться до посібника Quick Start від MongoDB.