MongoDB 아키텍처 개요

이 섹션에서는 드라이버의 모든 다른 부분이 어떻게 함께 맞춰지는지 설명합니다. 다양한 언어 런타임에서 확장을 통해 상단에 있는 PHP 라이브러리까지. 이 새로운 아키텍처는 이전 mongo 확장을 대체했습니다. 우리는 새로운 것을 mongodb 확장이라고 부릅니다.

Architecture Diagram

이 스택의 맨 위에는 Composer 패키지로 배포할 순수 » PHP 라이브러리가 있습니다. 이 라이브러리는 사용자가 이전 mongo 드라이버(예: CRUD 메서드, 데이터베이스 및 컬렉션 개체, 명령 도우미)에서 기대했던 것과 유사한 API를 제공하며 MongoDB로 빌드된 대부분의 응용 프로그램에 대한 공통 종속성이 될 것으로 예상합니다. 이 라이브러리는 또한 MongoDB(및 일부 커뮤니티 드라이버)에서 유지 관리하는 모든 » 드라이버에서 API 일관성을 개선하기 위해 공통 » 사양을 구현합니다.

해당 라이브러리 아래에 더 낮은 수준의 드라이버가 있습니다. 이 확장은 PHP와 시스템 라이브러리(» libmongoc» libbson)를 효과적으로 연결합니다. 이 확장은 가장 필수적이고 성능에 민감한 기능에 대해 동일한 공개 API를 노출합니다.

  • 연결 관리
  • BSON 인코딩 및 디코딩
  • 객체 문서 직렬화(ODM 라이브러리 지원)
  • 명령 실행 및 쓰기 작업
  • 쿼리 및 커서 처리

드라이버 내부 및 상위 수준 API를 확장 및 PHP 라이브러리로 각각 분리함으로써 유지 관리 부담을 줄이고 새로운 기능에 대한 더 빠른 반복을 허용하기를 바랍니다. 반가운 부작용으로 누구나 쉽게 드라이버에 기여할 수 있습니다. 또한, 동일한 공용 API를 사용하면 애플리케이션이 저수준 드라이버를 직접 사용하든 고수준 PHP 라이브러리를 사용하든 상관없이 PHP 런타임 간에 애플리케이션을 훨씬 쉽게 이식할 수 있습니다.

» GridFS는 우리가 이 방향을 선택한 이유를 보여주는 좋은 예입니다. 이전 mongo 드라이버를 위해 C에서 GridFS를 구현했지만 실제로는 상당히 높은 수준의 사양입니다. API는 파일(즉, 메타데이터)과 청크(즉, 데이터 블록)라는 두 가지 컬렉션에 액세스하기 위한 추상화일 뿐입니다. 마찬가지로, 업로드된 파일을 처리하거나 GridFS 파일을 PHP 스트림으로 노출하는 것과 같이 이전 mongo 드라이버에서 발견된 모든 구문 설탕은 순수 PHP에서 구현될 수 있습니다. GridFS의 컬렉션에서 읽고 쓸 수 있는 고성능 메서드가 있고 낮은 수준의 확장 덕분에 이 API를 PHP로 전환하는 것은 윈윈입니다.

앞서 나는 PHP 라이브러리가 모든 애플리케이션이 아닌 대부분의 애플리케이션에 대한 공통 종속성을 기대한다고 언급했습니다. 일부 사용자는 확장 프로그램에서 제공하는 단순한 API를 고수하거나 고유한 높은 수준의 추상화를 만드는 것을 선호할 수 있습니다(이전 mongo 드라이버용 » Doctrine MongoDB와 유사). 향후 라이브러리에는 다양한 사용자 관리 및 작업 명령을 위한 API를 제공하는 MongoDB 관리용 PHP 라이브러리가 포함될 수 있습니다. » Doctrine MongoDB ODM의 다음 주요 버전도 확장 기능 바로 위에 위치할 것입니다.

우리는 가까운 장래에 이전 mongo 드라이버와 그 사용자를 계속 유지하고 지원할 것이지만 모든 사람이 차세대 드라이버를 사용하고 앞으로의 모든 새 프로젝트에 고려하도록 초대합니다. GitHub 및 JIRA에서 모든 필수 구성 요소를 찾을 수 있습니다.

드라이버 소스 코드 및 JIRA 위치

Project GitHub JIRA
PHP Library » mongodb/mongo-php-library » PHPLIB
PHP 5 and PHP 7 Driver (phongo) » mongodb/mongo-php-driver » PHPC

JIRA의 기존 » PHP 프로젝트는 이전 mongo 드라이버에 대한 버그 보고를 위해 열려 있지만 차세대 드라이버와 관련된 모든 작업에는 위의 새 프로젝트를 사용하시기 바랍니다.