본문으로 건너뛰기
버전: master

MongoDB

Introduction​

MongoDB는 가장 인기 있는 NoSQL 문서 지향 데이터베이스 중 하나로, 높은 쓰기 부하(분석 또는 IoT에 유용)와 높은 가용성(자동 장애 조치 기능을 갖춘 복제 세트 구성이 용이한 점) 때문에 많이 사용됩니다. 또한 데이터베이스를 수평 확장하기 위한 샤딩(sharding)을 쉽게 할 수 있고, 집계, 텍스트 검색, 지리 공간 쿼리 등을 위한 강력한 쿼리 언어를 제공합니다.

SQL 데이터베이스처럼 행과 열로 이루어진 테이블에 데이터를 저장하는 대신, MongoDB 데이터베이스의 각 레코드는 BSON이라는 이진 표현 방식으로 설명되는 문서(document)입니다. 애플리케이션은 이 정보를 JSON 형식으로 읽어올 수 있습니다. MongoDB는 문서, 배열, 내장 문서, 이진 데이터 등 다양한 데이터 타입을 지원합니다.

Laravel과 함께 MongoDB를 사용하기 전에, mongodb/laravel-mongodb 패키지를 Composer를 통해 설치하고 사용하는 것을 권장합니다. laravel-mongodb 패키지는 MongoDB에서 공식적으로 관리하며, PHP가 MongoDB 드라이버를 통해 네이티브로 MongoDB를 지원하지만, Laravel MongoDB 패키지는 Eloquent 및 Laravel의 다른 기능들과 더 풍부하게 통합할 수 있게 해줍니다:

composer require mongodb/laravel-mongodb

Installation​

MongoDB Driver​

MongoDB 데이터베이스에 연결하려면 mongodb PHP 확장(extension)이 필요합니다. 로컬 개발 환경에서 Laravel Herd를 사용하거나 php.new로 PHP를 설치한 경우, 이미 이 확장이 시스템에 설치되어 있습니다. 하지만 수동으로 확장을 설치해야 한다면, PECL을 통해 설치할 수 있습니다:

pecl install mongodb

MongoDB PHP 확장 설치에 관한 자세한 내용은 MongoDB PHP extension installation instructions를 참고하세요.

Starting a MongoDB Server​

MongoDB Community Server는 로컬에서 MongoDB를 실행할 때 사용할 수 있으며, Windows, macOS, Linux 또는 Docker 컨테이너로 설치 가능합니다. MongoDB 설치 방법은 official MongoDB Community installation guide를 참고하세요.

MongoDB 서버의 연결 문자열(connection string)은 .env 파일에 설정할 수 있습니다:

MONGODB_URI="mongodb://localhost:27017"
MONGODB_DATABASE="laravel_app"

클라우드 환경에서 MongoDB를 호스팅하려면 MongoDB Atlas를 고려할 수 있습니다. 애플리케이션에서 로컬로 MongoDB Atlas 클러스터에 접속하려면, 클러스터의 네트워크 설정에서 자신의 IP 주소를 프로젝트의 IP 접근 목록에 추가해야 합니다(add your own IP address in the cluster's network settings).

MongoDB Atlas 연결 문자열도 .env 파일에 다음과 같이 설정할 수 있습니다:

MONGODB_URI="mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority"
MONGODB_DATABASE="laravel_app"

Install the Laravel MongoDB Package​

마지막으로, Composer를 사용해 Laravel MongoDB 패키지를 설치하세요:

composer require mongodb/laravel-mongodb

mongodb PHP 확장이 설치되어 있지 않으면 이 패키지 설치가 실패합니다. PHP 설정은 CLI와 웹 서버에서 다를 수 있으므로, 두 환경 모두에서 확장이 활성화되어 있는지 반드시 확인하세요.

Configuration​

애플리케이션의 config/database.php 설정 파일에서 MongoDB 연결을 구성할 수 있습니다. 이 파일 내에서 mongodb 드라이버를 사용하는 mongodb 연결을 추가하세요:

'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),
'database' => env('MONGODB_DATABASE', 'laravel_app'),
],
],

Features​

설정을 완료하면, 애플리케이션 내에서 mongodb 패키지와 데이터베이스 연결을 사용하여 다음과 같은 강력한 기능들을 활용할 수 있습니다:

  • Using Eloquent : Eloquent 모델을 MongoDB 컬렉션에 저장할 수 있습니다. 일반적인 Eloquent 기능 외에도, Laravel MongoDB 패키지는 내장된 관계(embedded relationships) 같은 추가 기능을 제공합니다. 또한 MongoDB 드라이버에 직접 접근할 수 있어 원시 쿼리(Raw Query)나 집계 파이프라인 같은 작업을 수행할 수 있습니다.
  • Write complex queries : 쿼리 빌더를 사용해 복잡한 쿼리를 작성할 수 있습니다.
  • mongodb cache driver : MongoDB의 TTL 인덱스 같은 기능을 활용하여 만료된 캐시 항목을 자동으로 삭제하도록 최적화되어 있습니다.
  • Dispatch and process queued jobs : mongodb 큐 드라이버를 이용해 작업을 대기열에 등록하고 처리할 수 있습니다.
  • Storing files in GridFS : GridFS Adapter for Flysystem를 통해 파일 저장소로 활용할 수 있습니다.
  • 대부분의 데이터베이스 연결이나 Eloquent를 사용하는 서드파티 패키지도 MongoDB와 함께 사용할 수 있습니다.

MongoDB와 Laravel을 활용하는 방법을 더 배우려면 MongoDB의 Quick Start guide를 참고하세요.